p-stream/src/stores/preferences/index.tsx

105 lines
2.5 KiB
TypeScript

import { create } from "zustand";
import { persist } from "zustand/middleware";
import { immer } from "zustand/middleware/immer";
export interface PreferencesStore {
enableThumbnails: boolean;
enableAutoplay: boolean;
enableSkipCredits: boolean;
enableDiscover: boolean;
enableFeatured: boolean;
enableDetailsModal: boolean;
enableImageLogos: boolean;
enableCarouselView: boolean;
sourceOrder: string[];
enableSourceOrder: boolean;
proxyTmdb: boolean;
setEnableThumbnails(v: boolean): void;
setEnableAutoplay(v: boolean): void;
setEnableSkipCredits(v: boolean): void;
setEnableDiscover(v: boolean): void;
setEnableFeatured(v: boolean): void;
setEnableDetailsModal(v: boolean): void;
setEnableImageLogos(v: boolean): void;
setEnableCarouselView(v: boolean): void;
setSourceOrder(v: string[]): void;
setEnableSourceOrder(v: boolean): void;
setProxyTmdb(v: boolean): void;
}
export const usePreferencesStore = create(
persist(
immer<PreferencesStore>((set) => ({
enableThumbnails: false,
enableAutoplay: true,
enableSkipCredits: true,
enableDiscover: true,
enableFeatured: true, // enabled for testing
enableDetailsModal: false,
enableImageLogos: true,
enableCarouselView: true, // enabled for testing
sourceOrder: [],
enableSourceOrder: false,
proxyTmdb: false,
setEnableThumbnails(v) {
set((s) => {
s.enableThumbnails = v;
});
},
setEnableAutoplay(v) {
set((s) => {
s.enableAutoplay = v;
});
},
setEnableSkipCredits(v) {
set((s) => {
s.enableSkipCredits = v;
});
},
setEnableDiscover(v) {
set((s) => {
s.enableDiscover = v;
});
},
setEnableFeatured(v) {
set((s) => {
s.enableFeatured = v;
});
},
setEnableDetailsModal(v) {
set((s) => {
s.enableDetailsModal = v;
});
},
setEnableImageLogos(v) {
set((s) => {
s.enableImageLogos = v;
});
},
setEnableCarouselView(v) {
set((s) => {
s.enableCarouselView = v;
});
},
setSourceOrder(v) {
set((s) => {
s.sourceOrder = v;
});
},
setEnableSourceOrder(v) {
set((s) => {
s.enableSourceOrder = v;
});
},
setProxyTmdb(v) {
set((s) => {
s.proxyTmdb = v;
});
},
})),
{
name: "__MW::preferences",
},
),
);