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