UNPKG

@towns-protocol/sdk

Version:

For more details, visit the following resources:

106 lines 3.69 kB
import { ObservableRecord } from '../../observable/observableRecord'; export class UserStreamsView extends ObservableRecord { constructor() { super({ makeDefault: (userStreamId) => ({ streamId: userStreamId, streamMemberships: {}, tipsSent: {}, tipsReceived: {}, tipsSentCount: {}, tipsReceivedCount: {}, tokenTransfers: [], }), }); } setMembership(userStreamId, streamId, membership) { this.set((prev) => { const prevStream = prev[userStreamId] ?? this.makeDefault(userStreamId); return { ...prev, [userStreamId]: { ...prevStream, streamMemberships: { ...prevStream.streamMemberships, [streamId]: membership, }, }, }; }); } setTips(userStreamId, tips) { this.set((prev) => { const prevStream = prev[userStreamId] ?? this.makeDefault(userStreamId); return { ...prev, [userStreamId]: { ...prevStream, ...tips, }, }; }); } prependTokenTransfer(userStreamId, tokenTransfer) { this.set((prev) => { const prevStream = prev[userStreamId] ?? this.makeDefault(userStreamId); return { ...prev, [userStreamId]: { ...prevStream, tokenTransfers: [tokenTransfer, ...prevStream.tokenTransfers], }, }; }); } appendTokenTransfer(userStreamId, tokenTransfer) { this.set((prev) => { const prevStream = prev[userStreamId] ?? this.makeDefault(userStreamId); return { ...prev, [userStreamId]: { ...prevStream, tokenTransfers: [...prevStream.tokenTransfers, tokenTransfer], }, }; }); } appendTipSent(userStreamId, currency, amount) { this.set((prev) => { const prevStream = prev[userStreamId] ?? this.makeDefault(userStreamId); return { ...prev, [userStreamId]: { ...prevStream, tipsSent: { ...prevStream.tipsSent, [currency]: (prevStream.tipsSent[currency] ?? 0n) + amount, }, tipsSentCount: { ...prevStream.tipsSentCount, [currency]: (prevStream.tipsSentCount[currency] ?? 0n) + 1n, }, }, }; }); } appendTipReceived(userStreamId, currency, amount) { this.set((prev) => { const prevStream = prev[userStreamId] ?? this.makeDefault(userStreamId); return { ...prev, [userStreamId]: { ...prevStream, tipsReceived: { ...prevStream.tipsReceived, [currency]: (prevStream.tipsReceived[currency] ?? 0n) + amount, }, tipsReceivedCount: { ...prevStream.tipsReceivedCount, [currency]: (prevStream.tipsReceivedCount[currency] ?? 0n) + 1n, }, }, }; }); } } //# sourceMappingURL=userStreamsView.js.map