feat: saving the user's preferred video source

This commit is contained in:
lavafrai 2024-12-05 00:12:23 +03:00
parent f588dbed5b
commit 70e4d7a523
3 changed files with 55 additions and 32 deletions

42
app/store/player.ts Normal file
View file

@ -0,0 +1,42 @@
"use client";
import { create } from "zustand";
import { persist } from "zustand/middleware";
interface userPlayerPreferencesState {
voiceover: Map<number, string>;
player: Map<number, string>;
getPreferredVoiceover: (id: number) => (string | undefined);
setPreferredVoiceover: (id: number, voiceover: string) => void;
getPreferredPlayer: (id: number) => (string | undefined);
setPreferredPlayer: (id: number, player: string) => void;
}
export const useUserPlayerPreferencesStore = create<userPlayerPreferencesState>()(
persist(
(set, get) => ({
voiceover: new Map<number, string>(),
player: new Map<number, string>(),
getPreferredVoiceover: (id: number) => get().voiceover[id],
setPreferredVoiceover: (id: number, voiceover: string) => {
let current = get().voiceover
current[id] = voiceover
set({
voiceover: current,
player: get().player,
});
},
getPreferredPlayer: (id: number) => get().player[id],
setPreferredPlayer: (id: number, player: string) => {
let current = get().player
current[id] = player
set({
voiceover: get().voiceover,
player: current,
})
}
}),
{
name: "player-preferences",
}
)
);

View file

@ -1,28 +0,0 @@
"use client";
import { create } from "zustand";
import { persist } from "zustand/middleware";
interface voiceoverState {
preferences: Map<number, string>;
getPreferredVoiceover: (id: number) => (string | undefined);
setPreferredVoiceover: (id: number, voiceover: string) => void;
}
export const useVoiceoverStore = create<voiceoverState>()(
persist(
(set, get) => ({
preferences: new Map<number, string>(),
getPreferredVoiceover: (id: number) => get().preferences[id],
setPreferredVoiceover: (id: number, voiceover: string) => {
let current = get().preferences
current[id] = voiceover
set({
preferences: current,
});
},
}),
{
name: "voiceover-preferences",
}
)
);