Files
5chan/src/stores/use-challenges-store.ts
T

29 lines
713 B
TypeScript
Raw Normal View History

2024-04-26 19:13:23 +02:00
import { create } from 'zustand';
import { Challenge } from '@plebbit/plebbit-react-hooks';
let nextChallengeId = 0;
2024-04-26 19:13:23 +02:00
interface State {
challenges: Array<{ challenge: Challenge; id: number }>;
2024-04-26 19:13:23 +02:00
addChallenge: (challenge: Challenge) => void;
removeChallenge: () => void;
}
const useChallengesStore = create<State>((set) => ({
challenges: [],
addChallenge: (challenge: Challenge) => {
set((state) => ({
challenges: [...state.challenges, { challenge, id: nextChallengeId++ }],
}));
2024-04-26 19:13:23 +02:00
},
removeChallenge: () => {
set((state) => {
const challenges = [...state.challenges];
challenges.shift();
return { challenges };
});
},
}));
export default useChallengesStore;