45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
import create from 'zustand'
|
|
import { defaultTheme } from '../assets/theme'
|
|
|
|
export const useSeriesStore = create((set, get) => ({
|
|
series: {},
|
|
episodes: [],
|
|
|
|
// Methods
|
|
setSeries: series => set({ series }),
|
|
setEpisodes: () => {
|
|
if (get().series) {
|
|
set({
|
|
episodes: get().series.map(series => series.episodes)
|
|
})
|
|
} else set({})
|
|
}
|
|
}))
|
|
|
|
export const [useTheme] = create(set => ({
|
|
theme: defaultTheme,
|
|
|
|
// Methods
|
|
setTheme: (theme) => set({ theme }),
|
|
setDefaultTheme: () => set({ theme: defaultTheme })
|
|
}))
|
|
|
|
export const [useUiStore] = create((set, get) => ({
|
|
mobileMenuOpen: false,
|
|
streamPreviewMinimized: false,
|
|
streamActive: false,
|
|
|
|
// Methods
|
|
toggleMobileMenu: () => set({ mobileMenuOpen: !get().mobileMenuOpen }),
|
|
toggleStreamPreviewMinimized: () => set({ streamPreviewMinimized: !get().streamPreviewMinimized }),
|
|
toggleStreamActive: () => set({ streamActive: !get().streamActive }),
|
|
}))
|
|
|
|
export const [useStreamStore] = create((set) => ({
|
|
currentStream: null,
|
|
streamIsLive: false,
|
|
|
|
// Methods
|
|
setCurrentStream: (currentStream) => set({ currentStream }),
|
|
setStreamIsLive: (streamIsLive) => set({ streamIsLive }),
|
|
})) |