-
Notifications
You must be signed in to change notification settings - Fork 115
/
Copy pathupdateCuratorGroupPermissions.ts
64 lines (55 loc) · 2.15 KB
/
updateCuratorGroupPermissions.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
56
57
58
59
60
61
62
63
64
import ContentDirectoryCommandBase from '../../base/ContentDirectoryCommandBase'
import chalk from 'chalk'
import { flags } from '@oclif/command'
import { getInputJson } from '../../helpers/InputOutput'
import { ModerationPermissionsByLevelInputParameters } from '../../Types'
import { ModerationPermissionsByLevelInputSchema } from '../../schemas/ContentDirectory'
import { createType } from '@joystream/types'
export default class UpdateCuratorGroupPermissionsCommand extends ContentDirectoryCommandBase {
static description = 'Update existing Curator Group.'
static args = [
{
name: 'id',
required: false,
description: 'ID of the Curator Group',
},
]
static flags = {
permissions: flags.string({
char: 'p',
required: true,
description: `Path to JSON file containing moderation permissions by channel privilege level to use as input`,
}),
...ContentDirectoryCommandBase.flags,
}
async run(): Promise<void> {
let { id } = this.parse(UpdateCuratorGroupPermissionsCommand).args
const { permissions } = this.parse(UpdateCuratorGroupPermissionsCommand).flags
if (id === undefined) {
id = await this.promptForCuratorGroup()
} else {
await this.getCuratorGroup(id)
}
const lead = await this.getRequiredLeadContext()
const keypair = await this.getDecodedPair(lead.roleAccount)
const moderationPermissionsByLevelInput = await getInputJson<ModerationPermissionsByLevelInputParameters>(
permissions,
ModerationPermissionsByLevelInputSchema
)
console.log(moderationPermissionsByLevelInput)
const moderationPermissionsByLevel = createType(
'BTreeMap<u8,BTreeSet<PalletContentPermissionsCuratorGroupIterableEnumsContentModerationAction>>',
new Map(
moderationPermissionsByLevelInput.map(({ channelPrivilegeLevel, permissions }) => [
channelPrivilegeLevel,
permissions,
])
)
)
await this.sendAndFollowNamedTx(keypair, 'content', 'updateCuratorGroupPermissions', [
id,
moderationPermissionsByLevel,
])
console.log(chalk.green(`Curator Group permissions successfully updated!`))
}
}