Skip to content

Commit

Permalink
[#9] Pass signer account and sender address to support export txn for…
Browse files Browse the repository at this point in the history
… read-only account
  • Loading branch information
satran004 committed Mar 10, 2021
1 parent bb783a7 commit 677b912
Show file tree
Hide file tree
Showing 11 changed files with 130 additions and 79 deletions.
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.bloxbean.algodea.idea.assets.action;

import com.algorand.algosdk.account.Account;
import com.algorand.algosdk.crypto.Address;
import com.bloxbean.algodea.idea.assets.service.AssetCacheService;
import com.bloxbean.algodea.idea.assets.ui.AssetConfigurationDialog;
import com.bloxbean.algodea.idea.core.action.BaseTxnAction;
Expand Down Expand Up @@ -62,10 +63,11 @@ public void actionPerformed(@NotNull AnActionEvent e) {
IdeaUtil.showNotification(project, getTitle(), "error getting asset creation parameters", NotificationType.ERROR, null);
}

Account creatorAccount = dialog.getCreatorAddress();

if(creatorAccount == null) {
console.showErrorMessage("Creator account cannot be empty");
Account creatorAccount = dialog.getSignerAccount();
Address creatorAddress = dialog.getSignerAddress();
if (creatorAddress == null ||
(creatorAccount == null && RequestMode.EXPORT_UNSIGNED != dialog.getRequestMode())) {
console.showErrorMessage("Creator account cannot be empty or invalid mnemonic phrase.");
IdeaUtil.showNotification(project, getTitle(), "Creator account cannot be empty", NotificationType.WARNING, null);
return;
}
Expand All @@ -86,7 +88,7 @@ public void actionPerformed(@NotNull AnActionEvent e) {
public void run(@NotNull ProgressIndicator indicator) {
console.showInfoMessage(String.format("Starting %s ...\n", getTxnCommand()));
try {
Result<Long> result = assetTransactionService.createAsset(creatorAccount, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
Result<Long> result = assetTransactionService.createAsset(creatorAccount, creatorAddress, finalAssetTxnPrameters, txnDetailsParameters, requestMode);

if(requestMode.equals(RequestMode.TRANSACTION)) {
if (result != null && result.getValue() != null) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.bloxbean.algodea.idea.assets.action;

import com.algorand.algosdk.account.Account;
import com.algorand.algosdk.crypto.Address;
import com.bloxbean.algodea.idea.assets.ui.AssetConfigurationDialog;
import com.bloxbean.algodea.idea.core.action.BaseTxnAction;
import com.bloxbean.algodea.idea.nodeint.common.RequestMode;
Expand Down Expand Up @@ -60,10 +61,11 @@ public void actionPerformed(@NotNull AnActionEvent e) {
IdeaUtil.showNotification(project, getTitle(), "error getting asset modification parameters", NotificationType.ERROR, null);
}

Account senderAccount = dialog.getCreatorAddress(); //creator here is manager

if(senderAccount == null) {
console.showErrorMessage("Sender account cannot be empty");
Account signerAccount = dialog.getSignerAccount(); //creator here is manager
Address senderAddress = dialog.getSignerAddress();
if (senderAddress == null ||
(signerAccount == null && RequestMode.EXPORT_UNSIGNED != dialog.getRequestMode())) {
console.showErrorMessage("Sender account cannot be empty or invalid mnemonic phrase.");
IdeaUtil.showNotification(project, getTitle(), "Sender account cannot be empty", NotificationType.WARNING, null);
return;
}
Expand All @@ -84,7 +86,7 @@ public void actionPerformed(@NotNull AnActionEvent e) {
public void run(@NotNull ProgressIndicator indicator) {
console.showInfoMessage(String.format("Starting %s ...\n", getTxnCommand()));
try {
Result result = invokeAssetOperation(assetTransactionService, senderAccount, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
Result result = invokeAssetOperation(assetTransactionService, signerAccount, senderAddress, finalAssetTxnPrameters, txnDetailsParameters, requestMode);

if(requestMode.equals(RequestMode.TRANSACTION)) {
if (result.isSuccessful()) {
Expand Down Expand Up @@ -121,6 +123,6 @@ public void run(@NotNull ProgressIndicator indicator) {

protected abstract AssetActionType getActionType();

protected abstract Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account sender, AssetTxnParameters finalAssetTxnPrameters, TxnDetailsParameters txnDetailsParameters, RequestMode requestMode) throws Exception;
protected abstract Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account signer, Address sender, AssetTxnParameters finalAssetTxnPrameters, TxnDetailsParameters txnDetailsParameters, RequestMode requestMode) throws Exception;

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.bloxbean.algodea.idea.assets.action;

import com.algorand.algosdk.account.Account;
import com.algorand.algosdk.crypto.Address;
import com.bloxbean.algodea.idea.nodeint.common.RequestMode;
import com.bloxbean.algodea.idea.nodeint.model.AssetTxnParameters;
import com.bloxbean.algodea.idea.nodeint.model.Result;
Expand Down Expand Up @@ -30,7 +31,7 @@ protected String getTitle() {
}

@Override
protected Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account sender, AssetTxnParameters finalAssetTxnPrameters, TxnDetailsParameters txnDetailsParameters, RequestMode requestMode) throws Exception {
return assetTransactionService.destroyAsset(sender, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
protected Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account signer, Address sender, AssetTxnParameters finalAssetTxnPrameters, TxnDetailsParameters txnDetailsParameters, RequestMode requestMode) throws Exception {
return assetTransactionService.destroyAsset(signer, sender, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.bloxbean.algodea.idea.assets.action;

import com.algorand.algosdk.account.Account;
import com.algorand.algosdk.crypto.Address;
import com.bloxbean.algodea.idea.nodeint.common.RequestMode;
import com.bloxbean.algodea.idea.nodeint.model.AssetTxnParameters;
import com.bloxbean.algodea.idea.nodeint.model.Result;
Expand Down Expand Up @@ -30,9 +31,9 @@ protected String getTitle() {
}

@Override
protected Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account sender,
protected Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account signer, Address sender,
AssetTxnParameters finalAssetTxnPrameters, TxnDetailsParameters txnDetailsParameters,
RequestMode requestMode) throws Exception {
return assetTransactionService.freezeAsset(sender, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
return assetTransactionService.freezeAsset(signer, sender, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.bloxbean.algodea.idea.assets.action;

import com.algorand.algosdk.account.Account;
import com.algorand.algosdk.crypto.Address;
import com.bloxbean.algodea.idea.nodeint.common.RequestMode;
import com.bloxbean.algodea.idea.nodeint.model.AssetTxnParameters;
import com.bloxbean.algodea.idea.nodeint.model.Result;
Expand Down Expand Up @@ -28,10 +29,10 @@ protected String getTitle() {
}

@Override
protected Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account sender,
protected Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account signer, Address sender,
AssetTxnParameters finalAssetTxnPrameters, TxnDetailsParameters txnDetailsParameters,
RequestMode requestMode) throws Exception {
return assetTransactionService.modifyAsset(sender, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
return assetTransactionService.modifyAsset(signer, sender, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.bloxbean.algodea.idea.assets.action;

import com.algorand.algosdk.account.Account;
import com.algorand.algosdk.crypto.Address;
import com.bloxbean.algodea.idea.nodeint.common.RequestMode;
import com.bloxbean.algodea.idea.nodeint.model.AssetTxnParameters;
import com.bloxbean.algodea.idea.nodeint.model.Result;
Expand All @@ -27,9 +28,9 @@ protected String getTitle() {
}

@Override
protected Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account sender,
protected Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account signer, Address sender,
AssetTxnParameters finalAssetTxnPrameters, TxnDetailsParameters txnDetailsParameters,
RequestMode requestMode) throws Exception {
return assetTransactionService.optInAsset(sender, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
return assetTransactionService.optInAsset(signer, sender, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.bloxbean.algodea.idea.assets.action;

import com.algorand.algosdk.account.Account;
import com.algorand.algosdk.crypto.Address;
import com.bloxbean.algodea.idea.nodeint.common.RequestMode;
import com.bloxbean.algodea.idea.nodeint.model.AssetTxnParameters;
import com.bloxbean.algodea.idea.nodeint.model.Result;
Expand Down Expand Up @@ -30,10 +31,10 @@ protected String getTitle() {
}

@Override
protected Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account sender,
protected Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account signer, Address sender,
AssetTxnParameters finalAssetTxnPrameters, TxnDetailsParameters txnDetailsParameters,
RequestMode requestMode) throws Exception {
return assetTransactionService.revokeAsset(sender, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
return assetTransactionService.revokeAsset(signer, sender, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.bloxbean.algodea.idea.assets.action;

import com.algorand.algosdk.account.Account;
import com.algorand.algosdk.crypto.Address;
import com.bloxbean.algodea.idea.nodeint.common.RequestMode;
import com.bloxbean.algodea.idea.nodeint.model.AssetTxnParameters;
import com.bloxbean.algodea.idea.nodeint.model.Result;
Expand Down Expand Up @@ -28,9 +29,9 @@ protected String getTitle() {
}

@Override
protected Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account sender,
protected Result invokeAssetOperation(AssetTransactionService assetTransactionService, Account signer, Address sender,
AssetTxnParameters finalAssetTxnPrameters, TxnDetailsParameters txnDetailsParameters,
RequestMode requestMode) throws Exception {
return assetTransactionService.unfreezeAsset(sender, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
return assetTransactionService.unfreezeAsset(signer, sender, finalAssetTxnPrameters, txnDetailsParameters, requestMode);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -345,7 +345,7 @@ private void populateWithAssetInfo(Asset asset, String assetId) {
}
}
}

//If freeze or unfreeze action, set freeze address
if(AssetActionType.FREEZE.equals(actionType) || AssetActionType.UNFREEZE.equals(actionType)) {
if (!StringUtil.isEmpty(asset.params.freeze)) {
Expand Down Expand Up @@ -596,10 +596,14 @@ public TransactionDtlsEntryForm getTransactionDtlsEntryForm() {
return transactionDtlsEntryForm;
}

public Account getCreatorAddress() {
public Account getSignerAccount() {
return senderAddressInputForm.getAccount();
}

public Address getSignerAddress() {
return senderAddressInputForm.getAddress();
}

public Address getManagerAddress() {
return managerAddressInputForm.getAddress();
}
Expand Down
Loading

0 comments on commit 677b912

Please sign in to comment.