mirror of
https://github.com/zimplexing/OrionTV.git
synced 2026-06-11 08:23:09 +08:00
feat: modify LoginModal to conditionally handle visibility based on pathname, preventing display on settings page
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import React, { useState, useRef, useEffect } from "react";
|
import React, { useState, useRef, useEffect } from "react";
|
||||||
import { Modal, View, TextInput, StyleSheet, ActivityIndicator, useTVEventHandler } from "react-native";
|
import { Modal, View, TextInput, StyleSheet, ActivityIndicator, useTVEventHandler } from "react-native";
|
||||||
|
import { usePathname } from "expo-router";
|
||||||
import Toast from "react-native-toast-message";
|
import Toast from "react-native-toast-message";
|
||||||
import useAuthStore from "@/stores/authStore";
|
import useAuthStore from "@/stores/authStore";
|
||||||
import { useSettingsStore } from "@/stores/settingsStore";
|
import { useSettingsStore } from "@/stores/settingsStore";
|
||||||
@@ -20,9 +21,11 @@ const LoginModal = () => {
|
|||||||
const passwordInputRef = useRef<TextInput>(null);
|
const passwordInputRef = useRef<TextInput>(null);
|
||||||
const loginButtonRef = useRef<View>(null);
|
const loginButtonRef = useRef<View>(null);
|
||||||
const [focused, setFocused] = useState("username");
|
const [focused, setFocused] = useState("username");
|
||||||
|
const pathname = usePathname();
|
||||||
|
const isSettingsPage = pathname.includes("settings");
|
||||||
|
|
||||||
const tvEventHandler = (evt: any) => {
|
const tvEventHandler = (evt: any) => {
|
||||||
if (!evt || !isLoginModalVisible) {
|
if (!evt || !isLoginModalVisible || isSettingsPage) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -48,7 +51,7 @@ const LoginModal = () => {
|
|||||||
useTVEventHandler(tvEventHandler);
|
useTVEventHandler(tvEventHandler);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isLoginModalVisible) {
|
if (isLoginModalVisible && !isSettingsPage) {
|
||||||
const isUsernameVisible = serverConfig?.StorageType !== "localstorage";
|
const isUsernameVisible = serverConfig?.StorageType !== "localstorage";
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (isUsernameVisible) {
|
if (isUsernameVisible) {
|
||||||
@@ -58,7 +61,7 @@ const LoginModal = () => {
|
|||||||
}
|
}
|
||||||
}, 200);
|
}, 200);
|
||||||
}
|
}
|
||||||
}, [isLoginModalVisible, serverConfig]);
|
}, [isLoginModalVisible, serverConfig, isSettingsPage]);
|
||||||
|
|
||||||
const handleLogin = async () => {
|
const handleLogin = async () => {
|
||||||
const isLocalStorage = serverConfig?.StorageType === "localstorage";
|
const isLocalStorage = serverConfig?.StorageType === "localstorage";
|
||||||
@@ -83,7 +86,12 @@ const LoginModal = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal transparent={true} visible={isLoginModalVisible} animationType="fade" onRequestClose={hideLoginModal}>
|
<Modal
|
||||||
|
transparent={true}
|
||||||
|
visible={isLoginModalVisible && !isSettingsPage}
|
||||||
|
animationType="fade"
|
||||||
|
onRequestClose={hideLoginModal}
|
||||||
|
>
|
||||||
<View style={styles.overlay}>
|
<View style={styles.overlay}>
|
||||||
<ThemedView style={styles.container}>
|
<ThemedView style={styles.container}>
|
||||||
<ThemedText style={styles.title}>需要登录</ThemedText>
|
<ThemedText style={styles.title}>需要登录</ThemedText>
|
||||||
|
|||||||
Reference in New Issue
Block a user