@river-build/sdk
Version:
For more details, visit the following resources:
97 lines • 3.1 kB
JavaScript
import { addressFromUserId } from '../../../id';
export class Myself {
member;
streamId;
riverConnection;
constructor(member, streamId, riverConnection) {
this.member = member;
this.streamId = streamId;
this.riverConnection = riverConnection;
}
get userId() {
return this.member.data.userId;
}
get username() {
return this.member.username;
}
get displayName() {
return this.member.displayName;
}
get ensAddress() {
return this.member.ensAddress;
}
get nft() {
return this.member.nft;
}
get membership() {
return this.member.membership;
}
async setUsername(username) {
const streamId = this.streamId;
const oldData = {
username: this.member.data.username,
isUsernameConfirmed: this.member.data.isUsernameConfirmed,
isUsernameEncrypted: this.member.data.isUsernameEncrypted,
};
this.member.setData({ username, isUsernameConfirmed: true, isUsernameEncrypted: false });
return this.riverConnection
.withStream(streamId)
.call((client) => client.setUsername(streamId, username))
.catch((e) => {
this.member.setData(oldData);
throw e;
});
}
async setDisplayName(displayName) {
const streamId = this.streamId;
const oldData = {
displayName: this.member.data.displayName,
isDisplayNameEncrypted: this.member.data.isDisplayNameEncrypted,
};
this.member.setData({ displayName, isDisplayNameEncrypted: false });
return this.riverConnection
.withStream(streamId)
.call((client) => client.setDisplayName(streamId, displayName))
.catch((e) => {
this.member.setData(oldData);
throw e;
});
}
async setEnsAddress(ensAddress) {
const streamId = this.streamId;
const oldData = {
ensAddress: this.member.data.ensAddress,
};
this.member.setData({ ensAddress });
const bytes = addressFromUserId(ensAddress);
return this.riverConnection
.withStream(streamId)
.call((client) => client.setEnsAddress(streamId, bytes))
.catch((e) => {
this.member.setData(oldData);
throw e;
});
}
async setNft(nft) {
const streamId = this.streamId;
const oldData = {
nft: this.member.data.nft,
};
const { contractAddress, tokenId, chainId } = nft;
this.member.setData({
nft: {
contractAddress,
tokenId,
chainId,
},
});
return this.riverConnection
.withStream(streamId)
.call((client) => client.setNft(streamId, nft.tokenId, nft.chainId, nft.contractAddress))
.catch((e) => {
this.member.setData(oldData);
throw e;
});
}
}
//# sourceMappingURL=myself.js.map