Skip to content

Commit

Permalink
DASH-628 Add ability to pass signing account to pushTransaction as si…
Browse files Browse the repository at this point in the history
…gningAccount parameter
  • Loading branch information
trukhilio committed May 17, 2023
1 parent 4aa7901 commit a2461f4
Show file tree
Hide file tree
Showing 10 changed files with 42 additions and 11 deletions.
8 changes: 7 additions & 1 deletion documentation/classes/fiosdk.html
Original file line number Diff line number Diff line change
Expand Up @@ -1063,7 +1063,7 @@ <h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</
<a name="pushtransaction" class="tsd-anchor"></a>
<h3>push<wbr>Transaction</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">push<wbr>Transaction<span class="tsd-signature-symbol">({</span>account<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span>, action<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span>, authPermission<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string | undefined</span>, data<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span>, encryptOptions<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">EncryptOptions</span><span class="tsd-signature-symbol">})</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></li>
<li class="tsd-signature tsd-kind-icon">push<wbr>Transaction<span class="tsd-signature-symbol">({</span>account<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span>, action<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span>, authPermission<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string | undefined</span>, data<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">any</span>, encryptOptions<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">EncryptOptions</span><span class="tsd-signature-symbol">, signingAccount<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string | undefined</span>})</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
Expand Down Expand Up @@ -1109,6 +1109,12 @@ <h5>encryptOptions: <span class="tsd-signature-type">EncryptOptions</span></h5>
<p>Parameters for encryption</p>
</div>
</li>
<li>
<h5>signingAccount: <span class="tsd-signature-type">string | undefined</span></h5>
<div class="tsd-comment tsd-typography">
<p>Sign transaction account</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span></h4>
</li>
Expand Down
6 changes: 4 additions & 2 deletions lib/FIOSDK.js
Original file line number Diff line number Diff line change
Expand Up @@ -1001,7 +1001,7 @@ class FIOSDK {
* @param data JSON object with params for action
* @param encryptOptions JSON object with params for encryption
*/
pushTransaction({ account, action, data, authPermission, encryptOptions = {}, }) {
pushTransaction({ account, action, data, authPermission, encryptOptions = {}, signingAccount, }) {
return __awaiter(this, void 0, void 0, function* () {
data.tpid = this.getTechnologyProviderId(data.tpid);
if (data.content && !encryptOptions.key) {
Expand All @@ -1028,6 +1028,7 @@ class FIOSDK {
authPermission,
data,
encryptOptions,
signingAccount,
});
return pushTransaction.execute(this.privateKey, this.publicKey, this.returnPreparedTrx);
});
Expand Down Expand Up @@ -1175,12 +1176,13 @@ class FIOSDK {
case 'getMultiplier':
return this.getMultiplier();
case 'pushTransaction':
return this.pushTransaction({
return this.pushTransaction({
account: params.account,
action: params.action,
data: params.data,
authPermission: params.authPermission,
encryptOptions: params.encryptOptions,
signingAccount: params.signingAccount,
});
case 'getAccountPubKey':
return this.getAccountPubKey(params.account);
Expand Down
3 changes: 2 additions & 1 deletion lib/transactions/Transactions.js
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ class Transactions {
textEncoder,
});
}
createRawTransaction({ account, action, authPermission, data, publicKey, chainData }) {
createRawTransaction({ account, action, authPermission, data, publicKey, chainData, signingAccount }) {
return __awaiter(this, void 0, void 0, function* () {
const rawTransaction = new RawTransaction_1.RawTransaction();
const rawaction = new RawAction_1.RawAction();
Expand All @@ -182,6 +182,7 @@ class Transactions {
rawaction.account = account;
rawaction.name = action;
rawaction.data = data;
rawaction.actor = signingAccount;
rawTransaction.actions.push(rawaction);
if (chainData && chainData.ref_block_num) {
this.setRawTransactionExp(rawTransaction, chainData);
Expand Down
5 changes: 3 additions & 2 deletions lib/transactions/signed/PushTransaction.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ exports.PushTransaction = void 0;
const constants_1 = require("../../utils/constants");
const SignedTransaction_1 = require("./SignedTransaction");
class PushTransaction extends SignedTransaction_1.SignedTransaction {
constructor({ action, account, authPermission, data, encryptOptions = {}, }) {
constructor({ action, account, authPermission, data, encryptOptions = {}, signingAccount, }) {
super();
this.ENDPOINT = 'chain/push_transaction';
this.ACTION = '';
Expand All @@ -16,13 +16,14 @@ class PushTransaction extends SignedTransaction_1.SignedTransaction {
this.data = data;
this.encryptOptions = encryptOptions;
this.authPermission = authPermission;
this.signingAccount = signingAccount;
}
getData() {
const data = Object.assign({}, this.data);
if (data.content && this.encryptOptions && this.encryptOptions.key && this.encryptOptions.contentType) {
data.content = this.getCipherContent(this.encryptOptions.contentType, data.content, this.privateKey, this.encryptOptions.key);
}
return Object.assign(Object.assign({}, data), { actor: this.data.actor != null && this.data.actor !== '' ? this.data.actor : this.getActor(), permission: this.data.permission || 'active' });
return Object.assign(Object.assign({}, data), { actor: this.data.actor != null && this.data.actor !== '' ? this.data.actor : this.getActor() });
}
}
exports.PushTransaction = PushTransaction;
4 changes: 4 additions & 0 deletions lib/transactions/signed/SignedTransaction.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ class SignedTransaction extends Transactions_1.Transactions {
action: this.getAction(),
authPermission: this.getAuthPermission(),
data: this.getData(),
signingAccount: this.getSigningAccount(),
});
const result = yield this.pushToServer(rawTransaction, this.getEndPoint(), dryRun);
return this.prepareResponse(result);
Expand All @@ -57,6 +58,9 @@ class SignedTransaction extends Transactions_1.Transactions {
getAuthPermission() {
return this.authPermission;
}
getSigningAccount() {
return this.signingAccount;
}
getEndPoint() {
return this.ENDPOINT;
}
Expand Down
4 changes: 4 additions & 0 deletions src/FIOSDK.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1466,12 +1466,14 @@ export class FIOSDK {
data,
authPermission,
encryptOptions = {},
signingAccount,
}: {
account: string,
action: string,
data: any,
authPermission?: string,
encryptOptions?: EncryptOptions,
signingAccount?: string,
}): Promise<any> {
data.tpid = this.getTechnologyProviderId(data.tpid)
if (data.content && !encryptOptions.key) {
Expand All @@ -1498,6 +1500,7 @@ export class FIOSDK {
authPermission,
data,
encryptOptions,
signingAccount,
})
return pushTransaction.execute(this.privateKey, this.publicKey, this.returnPreparedTrx)
}
Expand Down Expand Up @@ -1788,6 +1791,7 @@ export class FIOSDK {
data: params.data,
authPermission: params.authPermission,
encryptOptions: params.encryptOptions,
signingAccount: params.signingAccount,
})
case 'getAccountPubKey':
return this.getAccountPubKey(params.account)
Expand Down
1 change: 1 addition & 0 deletions src/entities/RawAction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,5 @@ export class RawAction {
public name: string = '' // 'transfer',
public authorization: Autorization[] = new Array<Autorization>()
public data: any
public actor: string | undefined
}
11 changes: 7 additions & 4 deletions src/transactions/Transactions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ export class Transactions {

public expirationOffset: number = Constants.defaultExpirationOffset
public authPermission: string | undefined
public signingAccount: string | undefined

public getActor(publicKey: string = ''): string {
return Transactions.FioProvider.accountHash((publicKey === '' || !publicKey) ? this.publicKey : publicKey)
Expand Down Expand Up @@ -224,17 +225,18 @@ export class Transactions {
}

public async createRawTransaction(
{ account, action, authPermission, data, publicKey, chainData }: {
{ account, action, authPermission, data, publicKey, chainData, signingAccount }: {
account: string;
action: string;
authPermission?: string;
data: any,
publicKey?: string,
data: any;
publicKey?: string;
chainData?: {
ref_block_num: number,
ref_block_prefix: number,
expiration: string,
}
};
signingAccount?: string;
},
): Promise<RawTransaction> {
const rawTransaction = new RawTransaction()
Expand All @@ -250,6 +252,7 @@ export class Transactions {
rawaction.account = account
rawaction.name = action
rawaction.data = data
rawaction.actor = signingAccount
rawTransaction.actions.push(rawaction)

if (chainData && chainData.ref_block_num) {
Expand Down
5 changes: 4 additions & 1 deletion src/transactions/signed/PushTransaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,30 @@ export class PushTransaction extends SignedTransaction {
public data: any
public encryptOptions: EncryptOptions
public authPermission: string | undefined
public signingAccount: string | undefined

constructor({
action,
account,
authPermission,
data,
encryptOptions = {},
signingAccount,
}: {
action: string,
account: string,
authPermission: string | undefined,
data: any,
encryptOptions: EncryptOptions,
signingAccount: string | undefined,
}) {
super()
this.ACTION = action
if (account) { this.ACCOUNT = account }
this.data = data
this.encryptOptions = encryptOptions
this.authPermission = authPermission
this.signingAccount = signingAccount
}

public getData(): any {
Expand All @@ -47,7 +51,6 @@ export class PushTransaction extends SignedTransaction {
return {
...data,
actor: this.data.actor != null && this.data.actor !== '' ? this.data.actor : this.getActor(),
permission: this.data.permission || 'active',
}
}

Expand Down
6 changes: 6 additions & 0 deletions src/transactions/signed/SignedTransaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ export abstract class SignedTransaction extends Transactions {
public abstract getData(): any

public static authPermission: string | undefined
public static signingAccount: string | undefined
public static expirationOffset: number

public async execute(privateKey: string, publicKey: string, dryRun = false, expirationOffset = Constants.defaultExpirationOffset): Promise<any> {
Expand All @@ -56,6 +57,7 @@ export abstract class SignedTransaction extends Transactions {
action: this.getAction(),
authPermission: this.getAuthPermission(),
data: this.getData(),
signingAccount: this.getSigningAccount(),
})

const result = await this.pushToServer(rawTransaction, this.getEndPoint(), dryRun)
Expand All @@ -78,6 +80,10 @@ export abstract class SignedTransaction extends Transactions {
return this.authPermission
}

public getSigningAccount(): string | undefined {
return this.signingAccount
}

public getEndPoint(): string {
return this.ENDPOINT
}
Expand Down

0 comments on commit a2461f4

Please sign in to comment.