mirror of
https://github.com/zimplexing/OrionTV.git
synced 2026-02-21 09:14:44 +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:
24
stores/sourceStore.ts
Normal file
24
stores/sourceStore.ts
Normal file
@@ -0,0 +1,24 @@
|
||||
import { create } from "zustand";
|
||||
import { useSettingsStore } from "@/stores/settingsStore";
|
||||
import useDetailStore, { sourcesSelector } from "./detailStore";
|
||||
|
||||
interface SourceState {
|
||||
toggleResourceEnabled: (resourceKey: string) => void;
|
||||
}
|
||||
|
||||
const useSourceStore = create<SourceState>((set, get) => ({
|
||||
toggleResourceEnabled: (resourceKey: string) => {
|
||||
const { videoSource, setVideoSource } = useSettingsStore.getState();
|
||||
const isEnabled = videoSource.sources[resourceKey];
|
||||
const newEnabledSources = { ...videoSource.sources, [resourceKey]: !isEnabled };
|
||||
|
||||
setVideoSource({
|
||||
enabledAll: Object.values(newEnabledSources).every((enabled) => enabled),
|
||||
sources: newEnabledSources,
|
||||
});
|
||||
},
|
||||
}));
|
||||
|
||||
export const useSources = () => useDetailStore(sourcesSelector);
|
||||
|
||||
export default useSourceStore;
|
||||
Reference in New Issue
Block a user