-
Notifications
You must be signed in to change notification settings - Fork 115
/
Copy pathupdate.ts
55 lines (50 loc) · 1.95 KB
/
update.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import { flags } from '@oclif/command'
import { IMembershipMetadata, MembershipMetadata } from '@joystream/metadata-protobuf'
import chalk from 'chalk'
import MembershipsCommandBase from '../../base/MembershipsCommandBase'
import { metadataToBytes } from '../../helpers/serialization'
export default class MembershipUpdateCommand extends MembershipsCommandBase {
static description = 'Update existing membership metadata and/or handle.'
static flags = {
newHandle: flags.string({
required: false,
description: "Member's new handle",
}),
newName: flags.string({
required: false,
description: "Member's new first name / full name",
}),
newAvatarUri: flags.string({
required: false,
description: "Member's new avatar uri",
}),
newAbout: flags.string({
required: false,
description: "Member's new md-formatted about text (bio)",
}),
...MembershipsCommandBase.flags,
}
async run(): Promise<void> {
const api = this.getOriginalApi()
const { newHandle, newName, newAvatarUri, newAbout } = this.parse(MembershipUpdateCommand).flags
const {
id: memberId,
membership: { controllerAccount: controllerKey },
} = await this.getRequiredMemberContext()
const newMetadata: IMembershipMetadata | null =
newName !== undefined || newAvatarUri !== undefined || newAbout !== undefined
? {
name: newName,
about: newAbout,
avatarUri: newAvatarUri,
}
: null
this.jsonPrettyPrint(JSON.stringify({ memberId, newHandle, newMetadata }))
await this.requireConfirmation('Do you confirm the provided input?')
await this.sendAndFollowTx(
await this.getDecodedPair(controllerKey),
api.tx.members.updateProfile(memberId, newHandle ?? null, metadataToBytes(MembershipMetadata, newMetadata))
)
this.log(chalk.green(`Membership with id ${chalk.cyanBright(memberId.toString())} successfully updated!`))
}
}