Implemented upgrade LTM service

master
hvarona 2018-05-16 22:21:32 -04:00
parent dd78076906
commit e3ca1c903b
3 changed files with 85 additions and 1 deletions

View File

@ -0,0 +1,47 @@
package cy.agorise.crystalwallet.apigenerator.grapheneoperation;
import cy.agorise.graphenej.AssetAmount;
import cy.agorise.graphenej.UserAccount;
import cy.agorise.graphenej.errors.MalformedOperationException;
import cy.agorise.graphenej.operations.BaseOperationBuilder;
/**
* Created by henry on 16/5/2018.
*/
public class AccountUpgradeOperationBuilder extends BaseOperationBuilder {
private UserAccount accountToUpgrade;
private AssetAmount fee;
private boolean isUpgrade = true;
public AccountUpgradeOperationBuilder setAccountToUpgrade(UserAccount accountToUpgrade) {
this.accountToUpgrade = accountToUpgrade;
return this;
}
public AccountUpgradeOperationBuilder setFee(AssetAmount fee) {
this.fee = fee;
return this;
}
public AccountUpgradeOperationBuilder setIsUpgrade(Boolean isUpgrade) {
this.isUpgrade = isUpgrade;
return this;
}
@Override
public AccountUpgradeOperation build(){
AccountUpgradeOperation accountUpgrade;
if(accountToUpgrade == null ){
throw new MalformedOperationException("Missing account to upgrade information");
}
if(fee != null){
accountUpgrade = new AccountUpgradeOperation(accountToUpgrade, isUpgrade, fee);
}else{
accountUpgrade = new AccountUpgradeOperation(accountToUpgrade, isUpgrade);
}
return accountUpgrade;
}
}

View File

@ -18,6 +18,8 @@ import cy.agorise.crystalwallet.apigenerator.ApiRequest;
import cy.agorise.crystalwallet.apigenerator.ApiRequestListener;
import cy.agorise.crystalwallet.apigenerator.BitsharesFaucetApiGenerator;
import cy.agorise.crystalwallet.apigenerator.GrapheneApiGenerator;
import cy.agorise.crystalwallet.apigenerator.grapheneoperation.AccountUpgradeOperation;
import cy.agorise.crystalwallet.apigenerator.grapheneoperation.AccountUpgradeOperationBuilder;
import cy.agorise.crystalwallet.application.constant.BitsharesConstant;
import cy.agorise.crystalwallet.models.seed.BIP39;
import cy.agorise.crystalwallet.requestmanagers.CryptoNetEquivalentRequest;
@ -444,8 +446,36 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
*/
private void validateLTMAccountUpgrade(final ValidateBitsharesLTMUpgradeRequest sendRequest) {
//TODO check internet, server connection
sendRequest.setStatus(ValidateBitsharesLTMUpgradeRequest.StatusCode.PETITION_FAILED);
Asset feeAsset = new Asset(sendRequest.getIdAsset());
UserAccount fromUserAccount =new UserAccount(sendRequest.getSourceAccount().getAccountId());
CrystalDatabase db = CrystalDatabase.getAppDatabase(sendRequest.getContext());
AccountUpgradeOperationBuilder builder = new AccountUpgradeOperationBuilder()
.setAccountToUpgrade(fromUserAccount)
.setFee(new AssetAmount(UnsignedLong.valueOf(0), feeAsset));
ArrayList<BaseOperation> operationList = new ArrayList<>();
operationList.add(builder.build());
ECKey privateKey = sendRequest.getSourceAccount().getActiveKey(sendRequest.getContext());
Transaction transaction = new Transaction(privateKey, null, operationList);
transaction.setChainId(CryptoNetManager.getChaindId(CryptoNet.BITSHARES));
ApiRequest transactionRequest = new ApiRequest(0, new ApiRequestListener() {
@Override
public void success(Object answer, int idPetition) {
sendRequest.setStatus(ValidateBitsharesLTMUpgradeRequest.StatusCode.SUCCEEDED);
}
@Override
public void fail(int idPetition) {
sendRequest.setStatus(ValidateBitsharesLTMUpgradeRequest.StatusCode.PETITION_FAILED);
}
});
GrapheneApiGenerator.broadcastTransaction(transaction,feeAsset, transactionRequest);
}
/**

View File

@ -33,6 +33,9 @@ public class ValidateBitsharesLTMUpgradeRequest extends CryptoNetInfoRequest {
// The state of this request
private StatusCode status = StatusCode.NOT_STARTED;
//TODO change asset
private String idAsset = "1.3.0"; //default to bTS
public ValidateBitsharesLTMUpgradeRequest(Context context, GrapheneAccount sourceAccount) {
super(CryptoCoin.BITSHARES);
this.mContext = context;
@ -48,6 +51,10 @@ public class ValidateBitsharesLTMUpgradeRequest extends CryptoNetInfoRequest {
return mSourceAccount;
}
public String getIdAsset() {
return idAsset;
}
public void validate(){
if ((this.status != StatusCode.NOT_STARTED)){
this._fireOnCarryOutEvent();