UNPKG

@towns-protocol/sdk

Version:

For more details, visit the following resources:

131 lines 5.69 kB
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; import { bin_toHexString, bin_toString, check } from '@towns-protocol/dlog'; import { isDefined } from '../../../check'; import { PersistedObservable, persistedObservable } from '../../../observable/persistedObservable'; let Member = class Member extends PersistedObservable { userId; riverConnection; constructor(userId, streamId, riverConnection, store) { super({ id: `${userId}_${streamId}`, userId, streamId, initialized: false, username: '', isUsernameConfirmed: false, isUsernameEncrypted: false, displayName: '', isDisplayNameEncrypted: false, ensAddress: undefined, nft: undefined, membership: undefined, }, store); this.userId = userId; this.riverConnection = riverConnection; } onStreamInitialized(streamId) { if (this.data.streamId === streamId) { const streamView = this.riverConnection.client?.stream(this.data.streamId)?.view; check(isDefined(streamView), 'streamView is not defined'); const metadata = streamView.getMemberMetadata(); const usernameInfo = metadata?.usernames.info(this.userId); const displayNameInfo = metadata?.displayNames.info(this.userId); const ensAddress = metadata?.ensAddresses.info(this.userId); const nft = metadata?.nfts.info(this.userId); const membership = streamView.getMembers().info(this.userId); this.setData({ initialized: true, username: usernameInfo?.username, isUsernameConfirmed: usernameInfo?.usernameConfirmed, isUsernameEncrypted: usernameInfo?.usernameEncrypted, displayName: displayNameInfo?.displayName, isDisplayNameEncrypted: displayNameInfo?.displayNameEncrypted, ensAddress, nft, membership, }); } } onStreamUsernameUpdated(streamId, userId) { if (this.data.userId === userId && this.data.streamId === streamId) { const streamView = this.riverConnection.client?.stream(this.data.streamId)?.view; check(isDefined(streamView), 'streamView is not defined'); const usernameInfo = streamView.getMemberMetadata()?.usernames.info(this.userId); this.setData({ username: usernameInfo?.username, isUsernameConfirmed: usernameInfo?.usernameConfirmed, isUsernameEncrypted: usernameInfo?.usernameEncrypted, }); } } onStreamNftUpdated = (streamId, userId) => { if (streamId === this.data.streamId && userId === this.userId) { const streamView = this.riverConnection.client?.stream(streamId)?.view; const metadata = streamView?.getMemberMetadata(); if (metadata) { const nftPayload = metadata.nfts.confirmedNfts.get(userId); const nft = nftPayload ? { contractAddress: bin_toHexString(nftPayload.contractAddress), tokenId: bin_toString(nftPayload.tokenId), chainId: nftPayload.chainId, } : undefined; this.setData({ nft }); } } }; onStreamEnsAddressUpdated = (streamId, userId) => { if (streamId === this.data.streamId && userId === this.userId) { const stream = this.riverConnection.client?.streams.get(streamId); const metadata = stream?.view.getMemberMetadata(); const ensAddress = metadata?.ensAddresses.info(userId); if (ensAddress) { this.setData({ ensAddress: ensAddress }); } } }; onStreamDisplayNameUpdated = (streamId, userId) => { if (streamId === this.data.streamId && userId === this.userId) { const stream = this.riverConnection.client?.streams.get(streamId); const metadata = stream?.view.getMemberMetadata(); const info = metadata?.displayNames.info(userId); if (info) { this.setData({ displayName: info.displayName, isDisplayNameEncrypted: info.displayNameEncrypted, }); } } }; onStreamMembershipUpdated = (streamId, userId, membership) => { if (streamId === this.data.streamId && userId === this.userId) { this.setData({ membership }); } }; get username() { return this.data.username; } get displayName() { return this.data.displayName; } get ensAddress() { return this.data.ensAddress; } get nft() { return this.data.nft; } get membership() { return this.data.membership; } }; Member = __decorate([ persistedObservable({ tableName: 'member' }) ], Member); export { Member }; //# sourceMappingURL=member.js.map