updateGroupMetadata.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import WorkingGroupsCommandBase from '../../base/WorkingGroupsCommandBase'
  2. import { WorkingGroupUpdateStatusInputParameters } from '../../Types'
  3. import { WorkingGroupUpdateStatusInputSchema } from '../../schemas/WorkingGroups'
  4. import chalk from 'chalk'
  5. import { apiModuleByGroup } from '../../Api'
  6. import { getInputJson } from '../../helpers/InputOutput'
  7. import { flags } from '@oclif/command'
  8. import { IWorkingGroupMetadataAction, WorkingGroupMetadataAction } from '@joystream/metadata-protobuf'
  9. import { metadataToBytes } from '../../helpers/serialization'
  10. export default class WorkingGroupsUpdateMetadata extends WorkingGroupsCommandBase {
  11. static description =
  12. 'Update working group metadata (description, status etc.). The update will be atomic (just like video / channel metadata updates)'
  13. static flags = {
  14. input: flags.string({
  15. char: 'i',
  16. required: true,
  17. description: `Path to JSON file to use as input`,
  18. }),
  19. ...WorkingGroupsCommandBase.flags,
  20. }
  21. async run(): Promise<void> {
  22. // lead-only gate
  23. const lead = await this.getRequiredLeadContext()
  24. const {
  25. flags: { input: inputFilePath },
  26. } = this.parse(WorkingGroupsUpdateMetadata)
  27. const input = await getInputJson<WorkingGroupUpdateStatusInputParameters>(
  28. inputFilePath,
  29. WorkingGroupUpdateStatusInputSchema
  30. )
  31. const actionMetadata: IWorkingGroupMetadataAction = {
  32. 'setGroupMetadata': {
  33. newMetadata: input,
  34. },
  35. }
  36. this.jsonPrettyPrint(JSON.stringify(actionMetadata))
  37. await this.requireConfirmation('Do you confirm the provided input?')
  38. await this.sendAndFollowTx(
  39. await this.getDecodedPair(lead.roleAccount),
  40. this.getOriginalApi().tx[apiModuleByGroup[this.group]].setStatusText(
  41. metadataToBytes(WorkingGroupMetadataAction, actionMetadata)
  42. )
  43. )
  44. this.log(chalk.green(`Working group metadata successfully updated!`))
  45. }
  46. }