12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- import WorkingGroupsCommandBase from '../../base/WorkingGroupsCommandBase'
- import { apiModuleByGroup } from '../../Api'
- import { validateAddress } from '../../helpers/validation'
- import { GenericAccountId } from '@polkadot/types'
- import chalk from 'chalk'
- export default class WorkingGroupsUpdateRoleAccount extends WorkingGroupsCommandBase {
- static description = 'Updates the worker/lead role account. Requires member controller account to be selected'
- static args = [
- {
- name: 'accountAddress',
- required: false,
- description: 'New role account address (if omitted, one of the existing CLI accounts can be selected)',
- },
- ]
- static flags = {
- ...WorkingGroupsCommandBase.flags,
- }
- async run() {
- const { args } = this.parse(WorkingGroupsUpdateRoleAccount)
- const account = await this.getRequiredSelectedAccount()
- const worker = await this.getRequiredWorkerByMemberController()
- const cliAccounts = await this.fetchAccounts()
- let newRoleAccount: string = args.accountAddress
- if (!newRoleAccount) {
- newRoleAccount = (await this.promptForAccount(cliAccounts, undefined, 'Choose the new role account')).address
- }
- validateAddress(newRoleAccount)
- await this.requestAccountDecoding(account)
- await this.sendAndFollowExtrinsic(account, apiModuleByGroup[this.group], 'updateRoleAccount', [
- worker.workerId,
- new GenericAccountId(newRoleAccount),
- ])
- this.log(chalk.green(`Succesfully updated the role account to: ${chalk.white(newRoleAccount)})`))
- const matchingAccount = cliAccounts.find((account) => account.address === newRoleAccount)
- if (matchingAccount) {
- const switchAccount = await this.simplePrompt({
- type: 'confirm',
- message: 'Do you want to switch the currenly selected CLI account to the new role account?',
- default: false,
- })
- if (switchAccount) {
- await this.setSelectedAccount(matchingAccount)
- this.log(
- chalk.green('Account switched to: ') +
- chalk.white(`${matchingAccount.meta.name} (${matchingAccount.address})`)
- )
- }
- }
- }
- }
|