mirror of
https://github.com/zimplexing/OrionTV.git
synced 2026-03-13 15:57:31 +08:00
feat: implement user authentication and logout functionality
- Added login/logout buttons to the HomeScreen and SettingsScreen. - Integrated authentication state management using Zustand and cookies. - Updated API to support username and password for login. - Enhanced PlayScreen to handle video playback based on user authentication. - Created a new detailStore to manage video details and sources. - Refactored playerStore to utilize detailStore for episode management. - Added sourceStore to manage video source toggling. - Updated settingsStore to fetch server configuration. - Improved error handling and user feedback with Toast notifications. - Cleaned up unused code and optimized imports across components.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { create } from 'zustand';
|
||||
import { SettingsManager } from '@/services/storage';
|
||||
import { api } from '@/services/api';
|
||||
import { api, ServerConfig } from '@/services/api';
|
||||
import useHomeStore from './homeStore';
|
||||
|
||||
|
||||
@@ -15,7 +15,9 @@ interface SettingsState {
|
||||
};
|
||||
};
|
||||
isModalVisible: boolean;
|
||||
serverConfig: ServerConfig | null;
|
||||
loadSettings: () => Promise<void>;
|
||||
fetchServerConfig: () => Promise<void>;
|
||||
setApiBaseUrl: (url: string) => void;
|
||||
setM3uUrl: (url: string) => void;
|
||||
setRemoteInputEnabled: (enabled: boolean) => void;
|
||||
@@ -31,13 +33,14 @@ export const useSettingsStore = create<SettingsState>((set, get) => ({
|
||||
liveStreamSources: [],
|
||||
remoteInputEnabled: false,
|
||||
isModalVisible: false,
|
||||
serverConfig: null,
|
||||
videoSource: {
|
||||
enabledAll: true,
|
||||
sources: {},
|
||||
},
|
||||
loadSettings: async () => {
|
||||
const settings = await SettingsManager.get();
|
||||
set({
|
||||
set({
|
||||
apiBaseUrl: settings.apiBaseUrl,
|
||||
m3uUrl: settings.m3uUrl,
|
||||
remoteInputEnabled: settings.remoteInputEnabled || false,
|
||||
@@ -47,6 +50,15 @@ export const useSettingsStore = create<SettingsState>((set, get) => ({
|
||||
},
|
||||
});
|
||||
api.setBaseUrl(settings.apiBaseUrl);
|
||||
await get().fetchServerConfig();
|
||||
},
|
||||
fetchServerConfig: async () => {
|
||||
try {
|
||||
const config = await api.getServerConfig();
|
||||
set({ serverConfig: config });
|
||||
} catch (error) {
|
||||
console.error("Failed to fetch server config:", error);
|
||||
}
|
||||
},
|
||||
setApiBaseUrl: (url) => set({ apiBaseUrl: url }),
|
||||
setM3uUrl: (url) => set({ m3uUrl: url }),
|
||||
|
||||
Reference in New Issue
Block a user