mirror of
https://github.com/zimplexing/OrionTV.git
synced 2026-02-15 12:24:44 +08:00
- Changed the play time property from 'play_time' to 'time' in HomeScreen. - Removed unused player control functions from PlayScreen. - Added PlayerSettings interface and implemented PlayerSettingsManager for local storage of player settings. - Refactored PlayRecordManager to merge API records with local player settings. - Updated authentication logic in authStore to handle optional username parameter in login function. - Cleaned up and optimized imports across various components.
48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import { create } from "zustand";
|
|
import Cookies from "@react-native-cookies/cookies";
|
|
import { api } from "@/services/api";
|
|
|
|
interface AuthState {
|
|
isLoggedIn: boolean;
|
|
isLoginModalVisible: boolean;
|
|
showLoginModal: () => void;
|
|
hideLoginModal: () => void;
|
|
checkLoginStatus: () => Promise<void>;
|
|
logout: () => Promise<void>;
|
|
}
|
|
|
|
const useAuthStore = create<AuthState>((set) => ({
|
|
isLoggedIn: false,
|
|
isLoginModalVisible: false,
|
|
showLoginModal: () => set({ isLoginModalVisible: true }),
|
|
hideLoginModal: () => set({ isLoginModalVisible: false }),
|
|
checkLoginStatus: async () => {
|
|
try {
|
|
const { ok } = await api.login();
|
|
if (ok) {
|
|
set({ isLoggedIn: true });
|
|
return;
|
|
}
|
|
const cookies = await Cookies.get(api.baseURL);
|
|
const isLoggedIn = cookies && !!cookies.auth;
|
|
set({ isLoggedIn });
|
|
if (!isLoggedIn) {
|
|
set({ isLoginModalVisible: true });
|
|
}
|
|
} catch (error) {
|
|
console.error("Failed to check login status:", error);
|
|
set({ isLoggedIn: false, isLoginModalVisible: true });
|
|
}
|
|
},
|
|
logout: async () => {
|
|
try {
|
|
await Cookies.clearAll();
|
|
set({ isLoggedIn: false, isLoginModalVisible: true });
|
|
} catch (error) {
|
|
console.error("Failed to logout:", error);
|
|
}
|
|
},
|
|
}));
|
|
|
|
export default useAuthStore;
|