feat: integrate settings and authentication stores for improved login status management

This commit is contained in:
zimplexing
2025-07-15 18:53:57 +08:00
parent 30cbf6846e
commit 948368c3c8
2 changed files with 9 additions and 1 deletions

View File

@@ -1,6 +1,7 @@
import { create } from "zustand"; import { create } from "zustand";
import Cookies from "@react-native-cookies/cookies"; import Cookies from "@react-native-cookies/cookies";
import { api } from "@/services/api"; import { api } from "@/services/api";
import { useSettingsStore } from "./settingsStore";
interface AuthState { interface AuthState {
isLoggedIn: boolean; isLoggedIn: boolean;
@@ -17,6 +18,11 @@ const useAuthStore = create<AuthState>((set) => ({
showLoginModal: () => set({ isLoginModalVisible: true }), showLoginModal: () => set({ isLoginModalVisible: true }),
hideLoginModal: () => set({ isLoginModalVisible: false }), hideLoginModal: () => set({ isLoginModalVisible: false }),
checkLoginStatus: async () => { checkLoginStatus: async () => {
const { apiBaseUrl } = useSettingsStore.getState();
if (!apiBaseUrl) {
set({ isLoggedIn: false, isLoginModalVisible: false });
return;
}
try { try {
const { ok } = await api.login(); const { ok } = await api.login();
if (ok) { if (ok) {

View File

@@ -2,6 +2,7 @@ import { create } from 'zustand';
import { SettingsManager } from '@/services/storage'; import { SettingsManager } from '@/services/storage';
import { api, ServerConfig } from '@/services/api'; import { api, ServerConfig } from '@/services/api';
import useHomeStore from './homeStore'; import useHomeStore from './homeStore';
import useAuthStore from './authStore';
interface SettingsState { interface SettingsState {
@@ -29,7 +30,7 @@ interface SettingsState {
export const useSettingsStore = create<SettingsState>((set, get) => ({ export const useSettingsStore = create<SettingsState>((set, get) => ({
apiBaseUrl: '', apiBaseUrl: '',
m3uUrl: 'https://raw.githubusercontent.com/sjnhnp/adblock/refs/heads/main/filtered_http_only_valid.m3u', m3uUrl: '',
liveStreamSources: [], liveStreamSources: [],
remoteInputEnabled: false, remoteInputEnabled: false,
isModalVisible: false, isModalVisible: false,
@@ -75,6 +76,7 @@ export const useSettingsStore = create<SettingsState>((set, get) => ({
api.setBaseUrl(apiBaseUrl); api.setBaseUrl(apiBaseUrl);
set({ isModalVisible: false }); set({ isModalVisible: false });
useHomeStore.getState().fetchInitialData(); useHomeStore.getState().fetchInitialData();
useAuthStore.getState().checkLoginStatus();
}, },
showModal: () => set({ isModalVisible: true }), showModal: () => set({ isModalVisible: true }),
hideModal: () => set({ isModalVisible: false }), hideModal: () => set({ isModalVisible: false }),