import { create } from 'zustand' import { immer } from 'zustand/middleware/immer' import type { ChannelId, RecipientChannel } from '~/lib/api/types' type PrivateChannelsStore = { channels: Record addChannels: (channels: RecipientChannel[]) => void addChannel: (channel: RecipientChannel) => void removeChannel: (channelId: ChannelId) => void } export const usePrivateChannelsStore = create()( immer( (set) => ({ channels: {}, addChannels: (channels: RecipientChannel[]) => set((state) => { for (const channel of channels) { state.channels[channel.id] = channel } }), addChannel: (channel: RecipientChannel) => set((state) => { state.channels[channel.id] = channel }), removeChannel: (channelId: ChannelId) => set((state) => { delete state.channels[channelId] }), }) ) )