Scrapboard.org client
1import { create } from "zustand";
2import { persist } from "zustand/middleware";
3
4export interface BasicFeedItem {
5 displayName: string;
6}
7
8type FeedDefsState = {
9 feeds: Record<string, BasicFeedItem>;
10 setFeedDef: (id: string, feed: BasicFeedItem) => void;
11 defaultFeed: string;
12 setDefaultFeed: (feed: string) => void;
13};
14
15export const useFeedDefsStore = create<FeedDefsState>()(
16 persist(
17 (set) => ({
18 feeds: {},
19 setFeedDef: (id, feed) =>
20 set((state) => ({
21 feeds: {
22 ...state.feeds,
23 [id]: feed,
24 },
25 })),
26 defaultFeed: "timeline",
27 setDefaultFeed: (feed) =>
28 set(() => ({
29 defaultFeed: feed,
30 })),
31 }),
32 {
33 name: "feed-defs",
34 partialize: (state) => ({
35 feeds: state.feeds,
36 defaultFeed: state.defaultFeed,
37 }),
38 }
39 )
40);