Leszek Wiesner 4 лет назад
Родитель
Сommit
6b94c1b0a1

+ 1 - 1
cli/src/Api.ts

@@ -229,7 +229,7 @@ export default class Api {
         return {
             totalRecieved: rewardRelationship.total_reward_received,
             value: rewardRelationship.amount_per_payout,
-            interval: rewardRelationship.payout_interval.unwrapOr(new BN(0)).toNumber(),
+            interval: rewardRelationship.payout_interval.unwrapOr(undefined)?.toNumber(),
             nextPaymentBlock: rewardRelationship.next_payment_at_block.unwrapOr(new BN(0)).toNumber()
         };
     }

+ 6 - 4
cli/src/Types.ts

@@ -96,7 +96,7 @@ export const AvailableGroups: readonly WorkingGroups[] = [
 export type Reward = {
     totalRecieved: Balance;
     value: Balance;
-    interval: number; // 0 = reward is not really "recurring"
+    interval?: number;
     nextPaymentBlock: number; // 0 = no incoming payment
 }
 
@@ -341,6 +341,8 @@ export type ApiParamsOptions = {
 }
 
 export type ApiMethodArg = Codec;
-export type ApiMethodNamedArgs = {
-    [argName: string]: ApiMethodArg;
-}
+export type ApiMethodNamedArg = {
+    name: string;
+    value: ApiMethodArg;
+};
+export type ApiMethodNamedArgs = ApiMethodNamedArg[];

+ 2 - 2
cli/src/base/ApiCommandBase.ts

@@ -376,7 +376,7 @@ export default abstract class ApiCommandBase extends StateAwareCommandBase {
     }
 
     extrinsicArgsFromDraft(module: string, method: string, draftFilePath: string): ApiMethodNamedArgs {
-        let draftJSONObj, parsedArgs: ApiMethodNamedArgs = {};
+        let draftJSONObj, parsedArgs: ApiMethodNamedArgs = [];
         const extrinsicMethod = this.getOriginalApi().tx[module][method];
         try {
             draftJSONObj = require(draftFilePath);
@@ -394,7 +394,7 @@ export default abstract class ApiCommandBase extends StateAwareCommandBase {
             const argName = arg.name.toString();
             const argType = arg.type.toString();
             try {
-                parsedArgs[argName] = createType(argType as any, draftJSONObj[parseInt(index)]);
+                parsedArgs.push({ name: argName, value: createType(argType as any, draftJSONObj[parseInt(index)]) });
             } catch (e) {
                 throw new CLIError(`Couldn't parse ${argName} value from draft at ${draftFilePath}!`, { exit: ExitCodes.InvalidFile });
             }

+ 3 - 0
cli/src/base/WorkingGroupsCommandBase.ts

@@ -171,6 +171,9 @@ export default abstract class WorkingGroupsCommandBase extends AccountsCommandBa
         return opening;
     }
 
+    // An alias for better code readibility in case we don't need the actual return value
+    validateOpeningForLeadAction = this.getOpeningForLeadAction
+
     async getApplicationForLeadAction(id: number, requiredStatus?: ApplicationStageKeys): Promise<GroupApplication> {
         const application = await this.getApi().groupApplication(this.group, id);
         const opening = await this.getApi().groupOpening(this.group, application.wgOpeningId);

+ 1 - 1
cli/src/commands/working-groups/createOpening.ts

@@ -79,7 +79,7 @@ export default class WorkingGroupsCreateOpening extends WorkingGroupsCommandBase
         else {
             await this.requestAccountDecoding(account); // Prompt for password
             this.log(chalk.white('Sending the extrinsic...'));
-            await this.sendExtrinsic(account, apiModuleByGroup[this.group], 'addOpening', Object.values(defaultValues!));
+            await this.sendExtrinsic(account, apiModuleByGroup[this.group], 'addOpening', defaultValues!.map(v => v.value));
             this.log(chalk.green('Opening succesfully created!'));
         }
     }

+ 1 - 2
cli/src/commands/working-groups/startAcceptingApplications.ts

@@ -26,8 +26,7 @@ export default class WorkingGroupsStartAcceptingApplications extends WorkingGrou
         await this.getRequiredLead();
 
         const openingId = parseInt(args.wgOpeningId);
-        // We don't need the actual opening here, so this is just for validation purposes
-        await this.getOpeningForLeadAction(openingId, OpeningStatus.WaitingToBegin);
+        await this.validateOpeningForLeadAction(openingId, OpeningStatus.WaitingToBegin);
 
         await this.requestAccountDecoding(account);
 

+ 1 - 2
cli/src/commands/working-groups/startReviewPeriod.ts

@@ -26,8 +26,7 @@ export default class WorkingGroupsStartReviewPeriod extends WorkingGroupsCommand
         await this.getRequiredLead();
 
         const openingId = parseInt(args.wgOpeningId);
-        // We don't need the actual opening here, so this is just for validation purposes
-        await this.getOpeningForLeadAction(openingId, OpeningStatus.AcceptingApplications);
+        await this.validateOpeningForLeadAction(openingId, OpeningStatus.AcceptingApplications);
 
         await this.requestAccountDecoding(account);
 

+ 5 - 4
cli/src/helpers/promptOptions.ts

@@ -2,16 +2,17 @@ import { ApiParamsOptions, ApiMethodNamedArgs, ApiParamOptions, ApiMethodArg } f
 import { Validator } from 'inquirer';
 
 export function setDefaults(promptOptions: ApiParamsOptions, defaultValues: ApiMethodNamedArgs) {
-    for (const [paramName, defaultValue] of Object.entries(defaultValues)) {
+    for (const defaultValue of defaultValues) {
+        const { name: paramName, value: paramValue } = defaultValue;
         const paramOptions = promptOptions[paramName];
         if (paramOptions && paramOptions.value) {
-            paramOptions.value.default = defaultValue;
+            paramOptions.value.default = paramValue;
         }
         else if (paramOptions) {
-            promptOptions[paramName].value = { default: defaultValue };
+            promptOptions[paramName].value = { default: paramValue };
         }
         else {
-            promptOptions[paramName] = { value: { default: defaultValue } };
+            promptOptions[paramName] = { value: { default: paramValue } };
         }
     }
 }