UNPKG

@towns-protocol/sdk

Version:

For more details, visit the following resources:

61 lines 2.35 kB
import { UserSettingsPayload_Snapshot_UserBlocksSchema, } from '@towns-protocol/proto'; import { create } from '@bufbuild/protobuf'; import { ObservableRecord } from '../../observable/observableRecord'; const EMPTY_USER_BLOCKS = create(UserSettingsPayload_Snapshot_UserBlocksSchema, { blocks: [], userId: new Uint8Array(), }); export class UserSettingsStreamsView extends ObservableRecord { constructor() { super({ makeDefault: (userSettingsStreamId) => ({ streamId: userSettingsStreamId, fullyReadMarkers: {}, userBlocks: {}, }), }); } setFullyReadMarkers(userSettingsStreamId, streamId, fullyReadMarkers) { this.set((prev) => ({ ...prev, [userSettingsStreamId]: { ...(prev[userSettingsStreamId] ?? this.makeDefault(userSettingsStreamId)), fullyReadMarkers: { ...(prev[userSettingsStreamId]?.fullyReadMarkers ?? {}), [streamId]: fullyReadMarkers, }, }, })); } setUserBlocks(userSettingsStreamId, userId, userBlocks) { this.set((prev) => ({ ...prev, [userSettingsStreamId]: { ...(prev[userSettingsStreamId] ?? this.makeDefault(userSettingsStreamId)), userBlocks: { ...(prev[userSettingsStreamId]?.userBlocks ?? {}), [userId]: userBlocks, }, }, })); } updateUserBlock(userSettingsStreamId, userId, userBlock) { this.set((prev) => ({ ...prev, [userSettingsStreamId]: { ...(prev[userSettingsStreamId] ?? this.makeDefault(userSettingsStreamId)), userBlocks: { ...(prev[userSettingsStreamId]?.userBlocks ?? {}), [userId]: { ...(prev[userSettingsStreamId]?.userBlocks[userId] ?? EMPTY_USER_BLOCKS), blocks: [ ...(prev[userSettingsStreamId]?.userBlocks[userId]?.blocks ?? []), userBlock, ], }, }, }, })); } } //# sourceMappingURL=userSettingsStreams.js.map