leaveRole.ts 1.2 KB

12345678910111213141516171819202122232425262728
  1. import WorkingGroupsCommandBase from '../../base/WorkingGroupsCommandBase'
  2. import { apiModuleByGroup } from '../../Api'
  3. import { minMaxStr } from '../../validators/common'
  4. import chalk from 'chalk'
  5. import { createParamOptions } from '../../helpers/promptOptions'
  6. export default class WorkingGroupsLeaveRole extends WorkingGroupsCommandBase {
  7. static description = 'Leave the worker or lead role associated with currently selected account.'
  8. static flags = {
  9. ...WorkingGroupsCommandBase.flags,
  10. }
  11. async run() {
  12. const account = await this.getRequiredSelectedAccount()
  13. // Worker-only gate
  14. const worker = await this.getRequiredWorker()
  15. const constraint = await this.getApi().workerExitRationaleConstraint(this.group)
  16. const rationaleValidator = minMaxStr(constraint.min.toNumber(), constraint.max.toNumber())
  17. const rationale = await this.promptForParam('Bytes', createParamOptions('rationale', undefined, rationaleValidator))
  18. await this.requestAccountDecoding(account)
  19. await this.sendAndFollowNamedTx(account, apiModuleByGroup[this.group], 'leaveRole', [worker.workerId, rationale])
  20. this.log(chalk.green(`Succesfully left the role! (worker id: ${chalk.white(worker.workerId.toNumber())})`))
  21. }
  22. }