Skip to content

Commit

Permalink
only one action to add delegate
Browse files Browse the repository at this point in the history
  • Loading branch information
vrolland committed Jun 29, 2021
1 parent ed7e6fc commit 55b84ce
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 85 deletions.
Expand Up @@ -29,12 +29,7 @@ export default class DeclarativePaymentNetwork<
.DECLARE_RECEIVED_PAYMENT]: this.applyDeclareReceivedPayment.bind(this),
[ExtensionTypes.PnAnyDeclarative.ACTION
.DECLARE_RECEIVED_REFUND]: this.applyDeclareReceivedRefund.bind(this),
[ExtensionTypes.PnAnyDeclarative.ACTION.ADD_PAYEE_DELEGATE]: this.applyAddPayeeDelegate.bind(
this,
),
[ExtensionTypes.PnAnyDeclarative.ACTION.ADD_PAYER_DELEGATE]: this.applyAddPayerDelegate.bind(
this,
),
[ExtensionTypes.PnAnyDeclarative.ACTION.ADD_DELEGATE]: this.applyAddDelegate.bind(this),
};
}

Expand Down Expand Up @@ -157,39 +152,20 @@ export default class DeclarativePaymentNetwork<
}

/**
* Creates the extensionsData to add payee delegate
* Creates the extensionsData to add delegate
*
* @param extensions extensions parameters to add payee delegate
* @param extensions extensions parameters to add delegate
*
* @returns IAction the extensionsData to be stored in the request
*/
public createAddPayeeDelegateAction(
parameters: ExtensionTypes.PnAnyDeclarative.IAddPayeeDelegateParameters,
public createAddDelegateAction(
parameters: ExtensionTypes.PnAnyDeclarative.IAddDelegateParameters,
): ExtensionTypes.IAction {
return {
action: ExtensionTypes.PnAnyDeclarative.ACTION.ADD_PAYEE_DELEGATE,
action: ExtensionTypes.PnAnyDeclarative.ACTION.ADD_DELEGATE,
id: ExtensionTypes.ID.PAYMENT_NETWORK_ANY_DECLARATIVE,
parameters: {
payeeDelegate: parameters.payeeDelegate,
},
};
}

/**
* Creates the extensionsData to add payer delegate
*
* @param extensions extensions parameters to add payer delegate
*
* @returns IAction the extensionsData to be stored in the request
*/
public createAddPayerDelegateAction(
parameters: ExtensionTypes.PnAnyDeclarative.IAddPayerDelegateParameters,
): ExtensionTypes.IAction {
return {
action: ExtensionTypes.PnAnyDeclarative.ACTION.ADD_PAYER_DELEGATE,
id: ExtensionTypes.ID.PAYMENT_NETWORK_ANY_DECLARATIVE,
parameters: {
payerDelegate: parameters.payerDelegate,
delegate: parameters.delegate,
},
};
}
Expand Down Expand Up @@ -450,7 +426,7 @@ export default class DeclarativePaymentNetwork<
return copiedExtensionState;
}

/** Applies an add of payee's delegate
/** Applies an add of a delegate
*
* @param extensionsState previous state of the extensions
* @param extensionAction action to apply
Expand All @@ -460,68 +436,36 @@ export default class DeclarativePaymentNetwork<
*
* @returns state of the extension created
*/
protected applyAddPayeeDelegate(
protected applyAddDelegate(
extensionState: ExtensionTypes.IState,
extensionAction: ExtensionTypes.IAction,
requestState: RequestLogicTypes.IRequest,
actionSigner: IdentityTypes.IIdentity,
timestamp: number,
): ExtensionTypes.IState {
if (extensionState.values.payeeDelegate) {
throw Error(`The payee's delegate already given`);
let delegateStr: string;
if (actionSigner === requestState.payee) {
delegateStr = 'payeeDelegate';
} else if (actionSigner === requestState.payer) {
delegateStr = 'payerDelegate';
} else {
throw Error(`The signer must be the payee or the payer`);
}
this.checkIdentities(extensionState, requestState, actionSigner, RequestLogicTypes.ROLE.PAYEE);

const copiedExtensionState: ExtensionTypes.IState = Utils.deepCopy(extensionState);

// increment payeeDelegate
copiedExtensionState.values.payeeDelegate = extensionAction.parameters.payeeDelegate;

// update events
copiedExtensionState.events.push({
name: ExtensionTypes.PnAnyDeclarative.ACTION.ADD_PAYEE_DELEGATE,
parameters: {
payeeDelegate: extensionAction.parameters.payeeDelegate,
},
timestamp,
from: actionSigner,
});

return copiedExtensionState;
}

/** Applies an add of payer's delegate
*
* @param extensionsState previous state of the extensions
* @param extensionAction action to apply
* @param requestState request state read-only
* @param actionSigner identity of the signer
* @param timestamp timestamp of the action
*
* @returns state of the extension created
*/
protected applyAddPayerDelegate(
extensionState: ExtensionTypes.IState,
extensionAction: ExtensionTypes.IAction,
requestState: RequestLogicTypes.IRequest,
actionSigner: IdentityTypes.IIdentity,
timestamp: number,
): ExtensionTypes.IState {
if (extensionState.values.payerDelegate) {
throw Error(`The payer's delegate already given`);
if (extensionState.values[delegateStr]) {
throw Error(`The ${delegateStr} already given`);
}
this.checkIdentities(extensionState, requestState, actionSigner, RequestLogicTypes.ROLE.PAYER);

const copiedExtensionState: ExtensionTypes.IState = Utils.deepCopy(extensionState);

// increment payeeDelegate
copiedExtensionState.values.payerDelegate = extensionAction.parameters.payerDelegate;
copiedExtensionState.values[delegateStr] = extensionAction.parameters.delegate;

// update events
copiedExtensionState.events.push({
name: ExtensionTypes.PnAnyDeclarative.ACTION.ADD_PAYER_DELEGATE,
name: ExtensionTypes.PnAnyDeclarative.ACTION.ADD_DELEGATE,
parameters: {
payerDelegate: extensionAction.parameters.payerDelegate,
delegate: extensionAction.parameters.delegate,
},
timestamp,
from: actionSigner,
Expand Down
11 changes: 3 additions & 8 deletions packages/types/src/extensions/pn-any-declarative-types.ts
Expand Up @@ -54,12 +54,8 @@ export interface IAddRefundInstructionParameters {
}

/** Parameters of addPayeeDelegate action */
export interface IAddPayeeDelegateParameters {
payeeDelegate: IIdentity;
}
/** Parameters of addPayerDelegate action */
export interface IAddPayerDelegateParameters {
payerDelegate: IIdentity;
export interface IAddDelegateParameters {
delegate: IIdentity;
}

/** Actions possible */
Expand All @@ -75,6 +71,5 @@ export enum ACTION {
ADD_PAYMENT_INSTRUCTION = 'addPaymentInstruction',
ADD_REFUND_INSTRUCTION = 'addRefundInstruction',

ADD_PAYEE_DELEGATE = 'addPayeeDelegate',
ADD_PAYER_DELEGATE = 'addPayerDelegate',
ADD_DELEGATE = 'addDelegate',
}

0 comments on commit 55b84ce

Please sign in to comment.