@towns-protocol/sdk
Version:
For more details, visit the following resources:
61 lines • 2.35 kB
JavaScript
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