UNPKG

@towns-protocol/sdk

Version:

For more details, visit the following resources:

52 lines 1.91 kB
import { ObservableRecord } from '../../observable/observableRecord'; // entries in the map should never be undefined, but Records don't differentiate between // undefined and missing keys, so we need to use a Record with undefined values export class SpaceStreamsView extends ObservableRecord { constructor() { super({ makeDefault: (spaceStreamId) => ({ streamId: spaceStreamId, channelsMetadata: {}, }), }); } delete(spaceStreamId, channelId) { return this.set((prev) => { if (prev[spaceStreamId]?.channelsMetadata[channelId] === undefined) { return prev; } const channelsMetadata = { ...prev[spaceStreamId].channelsMetadata }; delete channelsMetadata[channelId]; return { ...prev, [spaceStreamId]: { ...prev[spaceStreamId], channelsMetadata, }, }; }); } updateChannelMetadata(spaceStreamId, channelId, properties) { this.set((prev) => { const prevSpace = prev[spaceStreamId] ?? this.makeDefault(spaceStreamId); const prevChannel = prevSpace.channelsMetadata[channelId] ?? { isDefault: false, updatedAtEventNum: BigInt(0), isAutojoin: false, hideUserJoinLeaveEvents: false, }; const retVal = { ...prev, [spaceStreamId]: { ...prevSpace, channelsMetadata: { ...prevSpace.channelsMetadata, [channelId]: { ...prevChannel, ...properties }, }, }, }; return retVal; }); } } //# sourceMappingURL=spaceStreams.js.map