mirror of
https://github.com/p-stream/p-stream.git
synced 2026-04-20 19:22:17 +00:00
105 lines
2.5 KiB
TypeScript
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",
|
|
},
|
|
),
|
|
);
|