flockstr/lib/stores/currentUser.ts

37 lines
1.2 KiB
TypeScript
Raw Normal View History

import { create } from "zustand";
2023-10-28 11:07:50 -04:00
import { NDKEvent, type NDKUser } from "@nostr-dev-kit/ndk";
type Settings = {};
interface CurrentUserState {
currentUser: NDKUser | null;
2023-10-20 15:26:55 -04:00
follows: Set<NDKUser>;
2023-10-28 11:07:50 -04:00
calendars: Set<NDKEvent>;
setCalendars: (calendars: Set<NDKEvent>) => void;
settings: Settings;
setCurrentUser: (user: NDKUser | null) => void;
updateCurrentUser: (user: Partial<NDKUser>) => void;
2023-10-20 15:26:55 -04:00
setFollows: (follows: Set<NDKUser>) => void;
2023-10-20 18:14:24 -04:00
addFollow: (follow: NDKUser) => void;
}
const currentUserStore = create<CurrentUserState>()((set) => ({
currentUser: null,
2023-10-20 15:26:55 -04:00
follows: new Set(),
2023-10-28 11:07:50 -04:00
calendars: new Set(),
settings: {},
setCurrentUser: (user) => set((state) => ({ ...state, currentUser: user })),
updateCurrentUser: (user) =>
set((state) => ({
...state,
currentUser: { ...state.currentUser, ...user } as NDKUser,
})),
setFollows: (follows) => set((state) => ({ ...state, follows: follows })),
2023-10-28 11:07:50 -04:00
setCalendars: (calendars) =>
set((state) => ({ ...state, calendars: calendars })),
2023-10-20 18:14:24 -04:00
addFollow: (follow) =>
set((state) => ({ ...state, follows: new Set(state.follows).add(follow) })),
}));
export default currentUserStore;