commit
6e4b66a5e3
12 changed files with 486 additions and 181 deletions
|
@ -1,7 +1,6 @@
|
||||||
package cy.agorise.crystalwallet.apigenerator;
|
package cy.agorise.crystalwallet.apigenerator;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
@ -9,7 +8,6 @@ import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import cy.agorise.crystalwallet.application.constant.BitsharesConstant;
|
|
||||||
import cy.agorise.crystalwallet.dao.BitsharesAssetDao;
|
import cy.agorise.crystalwallet.dao.BitsharesAssetDao;
|
||||||
import cy.agorise.crystalwallet.dao.CryptoCoinBalanceDao;
|
import cy.agorise.crystalwallet.dao.CryptoCoinBalanceDao;
|
||||||
import cy.agorise.crystalwallet.dao.CryptoCurrencyDao;
|
import cy.agorise.crystalwallet.dao.CryptoCurrencyDao;
|
||||||
|
@ -107,7 +105,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
* @param accountId The accountId to retrieve
|
* @param accountId The accountId to retrieve
|
||||||
* @param request The Api request object, to answer this petition
|
* @param request The Api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getAccountById(String accountId, final ApiRequest request){
|
public static void getAccountById(String accountId, CryptoNet cryptoNet, final ApiRequest request){
|
||||||
WebSocketThread thread = new WebSocketThread(new GetAccounts(accountId,
|
WebSocketThread thread = new WebSocketThread(new GetAccounts(accountId,
|
||||||
new WitnessResponseListener() {
|
new WitnessResponseListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -128,7 +126,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}),CryptoNetManager.getURL(cryptoNet));
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,7 +136,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
* @param address The address to retrieve
|
* @param address The address to retrieve
|
||||||
* @param request The Api request object, to answer this petition
|
* @param request The Api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getAccountByOwnerOrActiveAddress(Address address, final ApiRequest request){
|
public static void getAccountByOwnerOrActiveAddress(Address address, CryptoNet cryptoNet, final ApiRequest request){
|
||||||
WebSocketThread thread = new WebSocketThread(new GetKeyReferences(address, true,
|
WebSocketThread thread = new WebSocketThread(new GetKeyReferences(address, true,
|
||||||
new WitnessResponseListener() {
|
new WitnessResponseListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -168,7 +166,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}),CryptoNetManager.getURL(cryptoNet));
|
||||||
|
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
@ -205,7 +203,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
* @param accountName The account Name to find
|
* @param accountName The account Name to find
|
||||||
* @param request The Api request object, to answer this petition
|
* @param request The Api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getAccountByName(String accountName, final ApiRequest request){
|
public static void getAccountByName(String accountName, CryptoNet cryptoNet,final ApiRequest request){
|
||||||
WebSocketThread thread = new WebSocketThread(new GetAccountByName(accountName,
|
WebSocketThread thread = new WebSocketThread(new GetAccountByName(accountName,
|
||||||
new WitnessResponseListener() {
|
new WitnessResponseListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -222,7 +220,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}),CryptoNetManager.getURL(cryptoNet));
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,7 +230,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
* @param accountName The account Name to find
|
* @param accountName The account Name to find
|
||||||
* @param request The Api request object, to answer this petition
|
* @param request The Api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getAccountIdByName(String accountName, final ApiRequest request){
|
public static void getAccountIdByName(String accountName, CryptoNet cryptoNet, final ApiRequest request){
|
||||||
WebSocketThread thread = new WebSocketThread(new GetAccountByName(accountName,
|
WebSocketThread thread = new WebSocketThread(new GetAccountByName(accountName,
|
||||||
new WitnessResponseListener() {
|
new WitnessResponseListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -249,7 +247,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}),CryptoNetManager.getURL(cryptoNet));
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -283,7 +281,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
* @param assetNames The list of the names of the assets to be retrieve
|
* @param assetNames The list of the names of the assets to be retrieve
|
||||||
* @param request the api request object, to answer this petition
|
* @param request the api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getAssetByName(ArrayList<String> assetNames, final ApiRequest request){
|
public static void getAssetByName(ArrayList<String> assetNames, CryptoNet cryptoNet,final ApiRequest request){
|
||||||
|
|
||||||
WebSocketThread thread = new WebSocketThread(new LookupAssetSymbols(assetNames,true,
|
WebSocketThread thread = new WebSocketThread(new LookupAssetSymbols(assetNames,true,
|
||||||
new WitnessResponseListener() {
|
new WitnessResponseListener() {
|
||||||
|
@ -318,7 +316,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}),CryptoNetManager.getURL(cryptoNet));
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -327,7 +325,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
* @param assetIds The list of the ids to retrieve
|
* @param assetIds The list of the ids to retrieve
|
||||||
* @param request the api request object, to answer this petition
|
* @param request the api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getAssetById(ArrayList<String> assetIds, final ApiRequest request){
|
public static void getAssetById(ArrayList<String> assetIds, CryptoNet cryptoNet, final ApiRequest request){
|
||||||
ArrayList<Asset> assets = new ArrayList<>();
|
ArrayList<Asset> assets = new ArrayList<>();
|
||||||
for(String assetId : assetIds){
|
for(String assetId : assetIds){
|
||||||
Asset asset = new Asset(assetId);
|
Asset asset = new Asset(assetId);
|
||||||
|
@ -366,7 +364,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}),CryptoNetManager.getURL(cryptoNet));
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -438,7 +436,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
});
|
});
|
||||||
ArrayList<String> assets = new ArrayList<>();
|
ArrayList<String> assets = new ArrayList<>();
|
||||||
assets.add(tOperation.getAssetAmount().getAsset().getObjectId());
|
assets.add(tOperation.getAssetAmount().getAsset().getObjectId());
|
||||||
GrapheneApiGenerator.getAssetById(assets,assetRequest);
|
GrapheneApiGenerator.getAssetById(assets,CryptoNet.BITSHARES,assetRequest);
|
||||||
}else{
|
}else{
|
||||||
saveTransaction(transaction,cryptoCurrencyDao.getById(info.getCryptoCurrencyId()),accountBitsharesId,tOperation,context);
|
saveTransaction(transaction,cryptoCurrencyDao.getById(info.getCryptoCurrencyId()),accountBitsharesId,tOperation,context);
|
||||||
}
|
}
|
||||||
|
@ -531,7 +529,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
});
|
});
|
||||||
ArrayList<String> assets = new ArrayList<>();
|
ArrayList<String> assets = new ArrayList<>();
|
||||||
assets.add(tOperation.getAssetAmount().getAsset().getObjectId());
|
assets.add(tOperation.getAssetAmount().getAsset().getObjectId());
|
||||||
GrapheneApiGenerator.getAssetById(assets,assetRequest);
|
GrapheneApiGenerator.getAssetById(assets,CryptoNet.STEEM,assetRequest);
|
||||||
}else{
|
}else{
|
||||||
saveTransaction(transaction,cryptoCurrencyDao.getById(info.getCryptoCurrencyId()),accountSteemId,tOperation,context);
|
saveTransaction(transaction,cryptoCurrencyDao.getById(info.getCryptoCurrencyId()),accountSteemId,tOperation,context);
|
||||||
}
|
}
|
||||||
|
@ -594,7 +592,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
* @param context The android context of this application
|
* @param context The android context of this application
|
||||||
*/
|
*/
|
||||||
public static void getAccountBalance(final long accountId, final String accountGrapheneId,
|
public static void getAccountBalance(final long accountId, final String accountGrapheneId,
|
||||||
CryptoNet cryptoNet, final Context context){
|
final CryptoNet cryptoNet, final Context context){
|
||||||
|
|
||||||
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
||||||
final CryptoCoinBalanceDao balanceDao = db.cryptoCoinBalanceDao();
|
final CryptoCoinBalanceDao balanceDao = db.cryptoCoinBalanceDao();
|
||||||
|
@ -640,7 +638,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
public void fail(int idPetition) {
|
public void fail(int idPetition) {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
getAssetById(idAssets,getAssetRequest);
|
getAssetById(idAssets,cryptoNet,getAssetRequest);
|
||||||
|
|
||||||
}else {
|
}else {
|
||||||
|
|
||||||
|
@ -666,7 +664,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
* @param blockHeader The block header to retrieve the date time
|
* @param blockHeader The block header to retrieve the date time
|
||||||
* @param request the api request object, to answer this petition
|
* @param request the api request object, to answer this petition
|
||||||
*/
|
*/
|
||||||
public static void getBlockHeaderTime(long blockHeader, final ApiRequest request){
|
public static void getBlockHeaderTime(long blockHeader, CryptoNet cryptoNet,final ApiRequest request){
|
||||||
WebSocketThread thread = new WebSocketThread(new GetBlockHeader(blockHeader, new WitnessResponseListener() {
|
WebSocketThread thread = new WebSocketThread(new GetBlockHeader(blockHeader, new WitnessResponseListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(WitnessResponse response) {
|
public void onSuccess(WitnessResponse response) {
|
||||||
|
@ -681,7 +679,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
public void onError(BaseResponse.Error error) {
|
public void onError(BaseResponse.Error error) {
|
||||||
request.getListener().fail(request.getId());
|
request.getListener().fail(request.getId());
|
||||||
}
|
}
|
||||||
}),CryptoNetManager.getURL(CryptoNet.BITSHARES));
|
}),CryptoNetManager.getURL(cryptoNet));
|
||||||
thread.start();
|
thread.start();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -784,7 +782,7 @@ public abstract class GrapheneApiGenerator {
|
||||||
});
|
});
|
||||||
ArrayList<String> names = new ArrayList<>();
|
ArrayList<String> names = new ArrayList<>();
|
||||||
names.add(baseAssetName);
|
names.add(baseAssetName);
|
||||||
GrapheneApiGenerator.getAssetByName(names,getAssetRequest);
|
GrapheneApiGenerator.getAssetByName(names,CryptoNet.BITSHARES,getAssetRequest);
|
||||||
|
|
||||||
}else {
|
}else {
|
||||||
BitsharesAsset baseAsset = new BitsharesAsset(baseCurrency);
|
BitsharesAsset baseAsset = new BitsharesAsset(baseCurrency);
|
||||||
|
|
|
@ -57,6 +57,17 @@ public class CrystalApplication extends Application {
|
||||||
|
|
||||||
public static final CryptoCurrency BITCOIN_CURRENCY = new CryptoCurrency("BTC",CryptoNet.BITCOIN,8);
|
public static final CryptoCurrency BITCOIN_CURRENCY = new CryptoCurrency("BTC",CryptoNet.BITCOIN,8);
|
||||||
|
|
||||||
|
public static String STEEM_URL[] =
|
||||||
|
{
|
||||||
|
"https://api.steemit.com",
|
||||||
|
"https://api.steemitdev.com",
|
||||||
|
"https://api.steemitstage.com",
|
||||||
|
"https://api.steem.house",
|
||||||
|
"https://appbasetest.timcliff.com",
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
|
@ -108,6 +119,8 @@ public class CrystalApplication extends Application {
|
||||||
db.cryptoCurrencyDao().insertCryptoCurrency(BITCOIN_CURRENCY);
|
db.cryptoCurrencyDao().insertCryptoCurrency(BITCOIN_CURRENCY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CryptoNetManager.addCryptoNetURL(CryptoNet.STEEM,STEEM_URL);
|
||||||
|
|
||||||
|
|
||||||
GeneralSetting generalSettingPreferredLanguage = db.generalSettingDao().getSettingByName(GeneralSetting.SETTING_NAME_PREFERRED_LANGUAGE);
|
GeneralSetting generalSettingPreferredLanguage = db.generalSettingDao().getSettingByName(GeneralSetting.SETTING_NAME_PREFERRED_LANGUAGE);
|
||||||
|
|
||||||
|
|
|
@ -118,6 +118,9 @@ public abstract class CrystalDatabase extends RoomDatabase {
|
||||||
+"io_index INTEGER NOT NULL,"
|
+"io_index INTEGER NOT NULL,"
|
||||||
+"address TEXT,"
|
+"address TEXT,"
|
||||||
+"is_output INTEGER NOT NULL,"
|
+"is_output INTEGER NOT NULL,"
|
||||||
|
+"amount INTEGER NOT NULL,"
|
||||||
|
+"script_hex TEXT,"
|
||||||
|
+"original_txid TEXT,"
|
||||||
+"PRIMARY KEY (bitcoin_transaction_id, io_index, is_output),"
|
+"PRIMARY KEY (bitcoin_transaction_id, io_index, is_output),"
|
||||||
+"FOREIGN KEY (bitcoin_transaction_id) REFERENCES bitcoin_transaction(crypto_coin_transaction_id) ON DELETE CASCADE)");
|
+"FOREIGN KEY (bitcoin_transaction_id) REFERENCES bitcoin_transaction(crypto_coin_transaction_id) ON DELETE CASCADE)");
|
||||||
}
|
}
|
||||||
|
@ -131,7 +134,7 @@ public abstract class CrystalDatabase extends RoomDatabase {
|
||||||
+"address_index INTEGER NOT NULL,"
|
+"address_index INTEGER NOT NULL,"
|
||||||
+"is_change INTEGER NOT NULL,"
|
+"is_change INTEGER NOT NULL,"
|
||||||
+"address TEXT NOT NULL,"
|
+"address TEXT NOT NULL,"
|
||||||
+"PRIMARY KEY (account_id, address_index),"
|
+"PRIMARY KEY (account_id, address_index, is_change),"
|
||||||
+"FOREIGN KEY (account_id) REFERENCES crypto_net_account(id) ON DELETE CASCADE)");
|
+"FOREIGN KEY (account_id) REFERENCES crypto_net_account(id) ON DELETE CASCADE)");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,6 +29,7 @@ import android.widget.EditText;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.Spinner;
|
import android.widget.Spinner;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.google.zxing.BarcodeFormat;
|
import com.google.zxing.BarcodeFormat;
|
||||||
import com.google.zxing.MultiFormatWriter;
|
import com.google.zxing.MultiFormatWriter;
|
||||||
|
@ -38,6 +39,10 @@ import com.google.zxing.common.BitMatrix;
|
||||||
import butterknife.OnClick;
|
import butterknife.OnClick;
|
||||||
import cy.agorise.crystalwallet.enums.CryptoCoin;
|
import cy.agorise.crystalwallet.enums.CryptoCoin;
|
||||||
import cy.agorise.crystalwallet.enums.CryptoNet;
|
import cy.agorise.crystalwallet.enums.CryptoNet;
|
||||||
|
import cy.agorise.crystalwallet.requestmanagers.CalculateBitcoinUriRequest;
|
||||||
|
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequestListener;
|
||||||
|
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequests;
|
||||||
|
import cy.agorise.crystalwallet.requestmanagers.NextBitcoinAccountAddressRequest;
|
||||||
import cy.agorise.crystalwallet.util.CircularImageView;
|
import cy.agorise.crystalwallet.util.CircularImageView;
|
||||||
import cy.agorise.crystalwallet.viewmodels.CryptoNetAccountListViewModel;
|
import cy.agorise.crystalwallet.viewmodels.CryptoNetAccountListViewModel;
|
||||||
import cy.agorise.crystalwallet.views.CryptoNetAccountAdapter;
|
import cy.agorise.crystalwallet.views.CryptoNetAccountAdapter;
|
||||||
|
@ -341,6 +346,7 @@ public class ReceiveTransactionFragment extends DialogFragment implements UIVali
|
||||||
|
|
||||||
CryptoNetAccount toAccountSelected = (CryptoNetAccount) spTo.getSelectedItem();
|
CryptoNetAccount toAccountSelected = (CryptoNetAccount) spTo.getSelectedItem();
|
||||||
|
|
||||||
|
if (this.cryptoNetAccount.getCryptoNet() == CryptoNet.BITSHARES) {
|
||||||
/*
|
/*
|
||||||
* this is only for graphene accounts.
|
* this is only for graphene accounts.
|
||||||
*
|
*
|
||||||
|
@ -360,11 +366,11 @@ public class ReceiveTransactionFragment extends DialogFragment implements UIVali
|
||||||
this.invoice.setTo(grapheneAccountSelected.getName());
|
this.invoice.setTo(grapheneAccountSelected.getName());
|
||||||
this.invoice.setCurrency(this.cryptoCurrency.getName());
|
this.invoice.setCurrency(this.cryptoCurrency.getName());
|
||||||
|
|
||||||
if (this.qrCodeTask != null){
|
if (this.qrCodeTask != null) {
|
||||||
this.qrCodeTask.cancel(true);
|
this.qrCodeTask.cancel(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.qrCodeTask = new AsyncTask<Object, Void, Void>(){
|
this.qrCodeTask = new AsyncTask<Object, Void, Void>() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Void doInBackground(Object... voids) {
|
protected Void doInBackground(Object... voids) {
|
||||||
|
@ -386,7 +392,58 @@ public class ReceiveTransactionFragment extends DialogFragment implements UIVali
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
this.qrCodeTask.execute(null,null,null);
|
this.qrCodeTask.execute(null, null, null);
|
||||||
|
} else {
|
||||||
|
final CryptoCoin cryptoCoin = CryptoCoin.getByCryptoNet(this.cryptoNetAccount.getCryptoNet()).get(0);
|
||||||
|
|
||||||
|
//final NextBitcoinAccountAddressRequest addressRequest = new NextBitcoinAccountAddressRequest(this.cryptoNetAccount, cryptoCoin, getContext());
|
||||||
|
|
||||||
|
//addressRequest.setListener(new CryptoNetInfoRequestListener() {
|
||||||
|
// @Override
|
||||||
|
// public void onCarryOut() {
|
||||||
|
// if (addressRequest.getStatus() == NextBitcoinAccountAddressRequest.StatusCode.SUCCEEDED){
|
||||||
|
final CalculateBitcoinUriRequest uriRequest = new CalculateBitcoinUriRequest(cryptoCoin, cryptoNetAccount, getContext());
|
||||||
|
|
||||||
|
uriRequest.setListener(new CryptoNetInfoRequestListener(){
|
||||||
|
@Override
|
||||||
|
public void onCarryOut(){
|
||||||
|
if (uriRequest.getUri() != null){
|
||||||
|
qrCodeTask = new AsyncTask<Object, Void, Void>() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Void doInBackground(Object... voids) {
|
||||||
|
try {
|
||||||
|
final Bitmap bitmap = textToImageEncode(uriRequest.getUri());
|
||||||
|
|
||||||
|
if (!this.isCancelled()) {
|
||||||
|
ReceiveTransactionFragment.this.getActivity().runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
ivQrCode.setImageBitmap(bitmap);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (WriterException e) {
|
||||||
|
Log.e("ReceiveFragment", "Error creating QrCode");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
qrCodeTask.execute(null, null, null);
|
||||||
|
} else {
|
||||||
|
Log.e("ReceiveFragment", "Error obtaining the uri");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
CryptoNetInfoRequests.getInstance().addRequest(uriRequest);
|
||||||
|
// } else {
|
||||||
|
// Toast.makeText(getContext(),"Error creating address",Toast.LENGTH_SHORT);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Bitmap textToImageEncode(String Value) throws WriterException {
|
Bitmap textToImageEncode(String Value) throws WriterException {
|
||||||
|
|
|
@ -68,6 +68,7 @@ import cy.agorise.crystalwallet.enums.CryptoCoin;
|
||||||
import cy.agorise.crystalwallet.enums.CryptoNet;
|
import cy.agorise.crystalwallet.enums.CryptoNet;
|
||||||
import cy.agorise.crystalwallet.interfaces.OnResponse;
|
import cy.agorise.crystalwallet.interfaces.OnResponse;
|
||||||
import cy.agorise.crystalwallet.requestmanagers.BitcoinSendRequest;
|
import cy.agorise.crystalwallet.requestmanagers.BitcoinSendRequest;
|
||||||
|
import cy.agorise.crystalwallet.requestmanagers.BitcoinUriParseRequest;
|
||||||
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequest;
|
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequest;
|
||||||
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequestListener;
|
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequestListener;
|
||||||
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequests;
|
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequests;
|
||||||
|
@ -803,8 +804,34 @@ public class SendTransactionFragment extends DialogFragment implements UIValidat
|
||||||
df.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.ENGLISH));
|
df.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.ENGLISH));
|
||||||
etAmount.setText(df.format(amount));
|
etAmount.setText(df.format(amount));
|
||||||
Log.i("SendFragment", result.getText());
|
Log.i("SendFragment", result.getText());
|
||||||
|
return;
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Is not a bitshares QR
|
||||||
|
CryptoCoin cryptoCoin = CryptoCoin.getByCryptoNet(this.cryptoNetAccount.getCryptoNet()).get(0);
|
||||||
|
final BitcoinUriParseRequest bitcoinUriParseRequest = new BitcoinUriParseRequest(result.getText(), cryptoCoin);
|
||||||
|
|
||||||
|
bitcoinUriParseRequest.setListener(new CryptoNetInfoRequestListener() {
|
||||||
|
@Override
|
||||||
|
public void onCarryOut() {
|
||||||
|
if (bitcoinUriParseRequest.getAddress() != null) {
|
||||||
|
if (!bitcoinUriParseRequest.getAddress().equals("")) {
|
||||||
|
etTo.setText(bitcoinUriParseRequest.getAddress());
|
||||||
|
}
|
||||||
|
if (bitcoinUriParseRequest.getAmount() > 0) {
|
||||||
|
etAmount.setText(bitcoinUriParseRequest.getAmount().toString());
|
||||||
|
}
|
||||||
|
if (!bitcoinUriParseRequest.getMemo().equals("")) {
|
||||||
|
etMemo.setText(bitcoinUriParseRequest.getMemo());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Toast.makeText(getContext(), "Not a valid QR info", Toast.LENGTH_LONG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
CryptoNetInfoRequests.getInstance().addRequest(bitcoinUriParseRequest);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -146,7 +146,8 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
|
||||||
GrapheneAccount fetch = (GrapheneAccount) answer;
|
GrapheneAccount fetch = (GrapheneAccount) answer;
|
||||||
grapheneAccount.setName(fetch.getName());
|
grapheneAccount.setName(fetch.getName());
|
||||||
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
||||||
db.cryptoNetAccountDao().insertCryptoNetAccount(grapheneAccount);
|
long idAccount = db.cryptoNetAccountDao().insertCryptoNetAccount(grapheneAccount)[0];
|
||||||
|
grapheneAccount.setId(idAccount);
|
||||||
db.grapheneAccountInfoDao().insertGrapheneAccountInfo(new GrapheneAccountInfo(grapheneAccount));
|
db.grapheneAccountInfoDao().insertGrapheneAccountInfo(new GrapheneAccountInfo(grapheneAccount));
|
||||||
subscribeBitsharesAccount(grapheneAccount.getId(),grapheneAccount.getAccountId(),context);
|
subscribeBitsharesAccount(grapheneAccount.getId(),grapheneAccount.getAccountId(),context);
|
||||||
}
|
}
|
||||||
|
@ -158,7 +159,8 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
|
||||||
});
|
});
|
||||||
}else {
|
}else {
|
||||||
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
||||||
db.cryptoNetAccountDao().insertCryptoNetAccount(grapheneAccount);
|
long idAccount = db.cryptoNetAccountDao().insertCryptoNetAccount(grapheneAccount)[0];
|
||||||
|
grapheneAccount.setId(idAccount);
|
||||||
db.grapheneAccountInfoDao().insertGrapheneAccountInfo(new GrapheneAccountInfo(grapheneAccount));
|
db.grapheneAccountInfoDao().insertGrapheneAccountInfo(new GrapheneAccountInfo(grapheneAccount));
|
||||||
subscribeBitsharesAccount(grapheneAccount.getId(), grapheneAccount.getAccountId(), context);
|
subscribeBitsharesAccount(grapheneAccount.getId(), grapheneAccount.getAccountId(), context);
|
||||||
}
|
}
|
||||||
|
@ -196,6 +198,11 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
|
||||||
info.setName(fetch.getName());
|
info.setName(fetch.getName());
|
||||||
grapheneAccount.setName(fetch.getName());
|
grapheneAccount.setName(fetch.getName());
|
||||||
db.grapheneAccountInfoDao().insertGrapheneAccountInfo(info);
|
db.grapheneAccountInfoDao().insertGrapheneAccountInfo(info);
|
||||||
|
AccountSeed seed = db.accountSeedDao().findById(grapheneAccount.getSeedId());
|
||||||
|
if(seed.getName() == null || seed.getName().isEmpty()){
|
||||||
|
seed.setName(grapheneAccount.getName());
|
||||||
|
db.accountSeedDao().insertAccountSeed(seed);
|
||||||
|
}
|
||||||
subscribeBitsharesAccount(grapheneAccount.getId(),grapheneAccount.getAccountId(),context);
|
subscribeBitsharesAccount(grapheneAccount.getId(),grapheneAccount.getAccountId(),context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -306,7 +313,7 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
|
||||||
importRequest.setStatus(ImportBitsharesAccountRequest.StatusCode.BAD_SEED);
|
importRequest.setStatus(ImportBitsharesAccountRequest.StatusCode.BAD_SEED);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
GrapheneApiGenerator.getAccountByOwnerOrActiveAddress(new Address(ECKey.fromPublicOnly(bip39.getBitsharesActiveKey(0).getPubKey())),getAccountNamesBP39);
|
GrapheneApiGenerator.getAccountByOwnerOrActiveAddress(new Address(ECKey.fromPublicOnly(bip39.getBitsharesActiveKey(0).getPubKey())),CryptoNet.BITSHARES,getAccountNamesBP39);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -314,7 +321,7 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
|
||||||
|
|
||||||
BrainKey bk = new BrainKey(importRequest.getMnemonic(), 0);
|
BrainKey bk = new BrainKey(importRequest.getMnemonic(), 0);
|
||||||
|
|
||||||
GrapheneApiGenerator.getAccountByOwnerOrActiveAddress(bk.getPublicAddress("BTS"),getAccountNamesBK);
|
GrapheneApiGenerator.getAccountByOwnerOrActiveAddress(bk.getPublicAddress("BTS"),CryptoNet.BITSHARES,getAccountNamesBK);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -384,7 +391,7 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
|
||||||
importRequest.setStatus(ValidateImportBitsharesAccountRequest.StatusCode.NO_ACCOUNT_DATA);
|
importRequest.setStatus(ValidateImportBitsharesAccountRequest.StatusCode.NO_ACCOUNT_DATA);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
GrapheneApiGenerator.getAccountById((String)answer,getAccountInfo);
|
GrapheneApiGenerator.getAccountById((String)answer,CryptoNet.BITSHARES,getAccountInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -394,7 +401,7 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
GrapheneApiGenerator.getAccountIdByName(importRequest.getAccountName(),checkAccountName);
|
GrapheneApiGenerator.getAccountIdByName(importRequest.getAccountName(),CryptoNet.BITSHARES,checkAccountName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void validateCreateAccount(final ValidateCreateBitsharesAccountRequest createRequest){
|
private void validateCreateAccount(final ValidateCreateBitsharesAccountRequest createRequest){
|
||||||
|
@ -449,7 +456,7 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
|
||||||
validateRequest.setAccountExists(false);
|
validateRequest.setAccountExists(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
GrapheneApiGenerator.getAccountIdByName(validateRequest.getAccountName(),checkAccountName);
|
GrapheneApiGenerator.getAccountIdByName(validateRequest.getAccountName(),CryptoNet.BITSHARES,checkAccountName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -647,7 +654,7 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
|
||||||
AccountIdOrNameListener listener = new AccountIdOrNameListener(request);
|
AccountIdOrNameListener listener = new AccountIdOrNameListener(request);
|
||||||
|
|
||||||
ApiRequest accountRequest = new ApiRequest(0, listener);
|
ApiRequest accountRequest = new ApiRequest(0, listener);
|
||||||
GrapheneApiGenerator.getAccountById(grapheneId,accountRequest);
|
GrapheneApiGenerator.getAccountById(grapheneId,CryptoNet.BITSHARES,accountRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -659,7 +666,7 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
|
||||||
AccountIdOrNameListener listener = new AccountIdOrNameListener(request);
|
AccountIdOrNameListener listener = new AccountIdOrNameListener(request);
|
||||||
|
|
||||||
ApiRequest accountRequest = new ApiRequest(0, listener);
|
ApiRequest accountRequest = new ApiRequest(0, listener);
|
||||||
GrapheneApiGenerator.getAccountByName(grapheneName,accountRequest);
|
GrapheneApiGenerator.getAccountByName(grapheneName,CryptoNet.BITSHARES,accountRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -670,7 +677,7 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
|
||||||
ApiRequest assetRequest = new ApiRequest(0, nameListener);
|
ApiRequest assetRequest = new ApiRequest(0, nameListener);
|
||||||
ArrayList<String> assetNames = new ArrayList<>();
|
ArrayList<String> assetNames = new ArrayList<>();
|
||||||
assetNames.add(assetName);
|
assetNames.add(assetName);
|
||||||
GrapheneApiGenerator.getAssetByName(assetNames, assetRequest);
|
GrapheneApiGenerator.getAssetByName(assetNames, CryptoNet.BITSHARES,assetRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -783,7 +790,7 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
|
||||||
});
|
});
|
||||||
ArrayList<String> assets = new ArrayList<>();
|
ArrayList<String> assets = new ArrayList<>();
|
||||||
assets.add(transfer.getOperation().getAssetAmount().getAsset().getObjectId());
|
assets.add(transfer.getOperation().getAssetAmount().getAsset().getObjectId());
|
||||||
GrapheneApiGenerator.getAssetById(assets,assetRequest);
|
GrapheneApiGenerator.getAssetById(assets,CryptoNet.BITSHARES,assetRequest);
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
saveTransaction(transaction,info,transfer);
|
saveTransaction(transaction,info,transfer);
|
||||||
|
@ -812,7 +819,7 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI
|
||||||
transaction.setInput(!transfer.getOperation().getFrom().getObjectId().equals(account.getAccountId()));
|
transaction.setInput(!transfer.getOperation().getFrom().getObjectId().equals(account.getAccountId()));
|
||||||
transaction.setTo(transfer.getOperation().getTo().getObjectId());
|
transaction.setTo(transfer.getOperation().getTo().getObjectId());
|
||||||
|
|
||||||
GrapheneApiGenerator.getBlockHeaderTime(transfer.getBlockNum(), new ApiRequest(0, new GetTransactionDate(transaction, db.transactionDao())));
|
GrapheneApiGenerator.getBlockHeaderTime(transfer.getBlockNum(),CryptoNet.BITSHARES, new ApiRequest(0, new GetTransactionDate(transaction, db.transactionDao())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,8 @@ import cy.agorise.crystalwallet.models.CryptoCoinTransaction;
|
||||||
import cy.agorise.crystalwallet.models.CryptoCurrency;
|
import cy.agorise.crystalwallet.models.CryptoCurrency;
|
||||||
import cy.agorise.crystalwallet.models.CryptoNetAccount;
|
import cy.agorise.crystalwallet.models.CryptoNetAccount;
|
||||||
import cy.agorise.crystalwallet.requestmanagers.BitcoinSendRequest;
|
import cy.agorise.crystalwallet.requestmanagers.BitcoinSendRequest;
|
||||||
|
import cy.agorise.crystalwallet.requestmanagers.BitcoinUriParseRequest;
|
||||||
|
import cy.agorise.crystalwallet.requestmanagers.CalculateBitcoinUriRequest;
|
||||||
import cy.agorise.crystalwallet.requestmanagers.CreateBitcoinAccountRequest;
|
import cy.agorise.crystalwallet.requestmanagers.CreateBitcoinAccountRequest;
|
||||||
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequest;
|
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequest;
|
||||||
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequestsListener;
|
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequestsListener;
|
||||||
|
@ -97,7 +99,7 @@ public class GeneralAccountManager implements CryptoAccountManager, CryptoNetInf
|
||||||
|
|
||||||
CryptoCoinBalance balance = new CryptoCoinBalance();
|
CryptoCoinBalance balance = new CryptoCoinBalance();
|
||||||
balance.setBalance(0);
|
balance.setBalance(0);
|
||||||
balance.setCryptoCurrencyId(db.cryptoCurrencyDao().getByName(cryptoCoin.name(),cryptoCoin.name()).getId());
|
balance.setCryptoCurrencyId(db.cryptoCurrencyDao().getByName(cryptoCoin.getLabel(),cryptoCoin.name()).getId());
|
||||||
balance.setAccountId(account.getId());
|
balance.setAccountId(account.getId());
|
||||||
db.cryptoCoinBalanceDao().insertCryptoCoinBalance(balance);
|
db.cryptoCoinBalanceDao().insertCryptoCoinBalance(balance);
|
||||||
|
|
||||||
|
@ -153,12 +155,15 @@ public class GeneralAccountManager implements CryptoAccountManager, CryptoNetInf
|
||||||
this.getNextAddress((NextBitcoinAccountAddressRequest) request);
|
this.getNextAddress((NextBitcoinAccountAddressRequest) request);
|
||||||
}else if(request instanceof ValidateBitcoinAddressRequest){
|
}else if(request instanceof ValidateBitcoinAddressRequest){
|
||||||
this.validateAddress((ValidateBitcoinAddressRequest) request);
|
this.validateAddress((ValidateBitcoinAddressRequest) request);
|
||||||
|
}else if(request instanceof CalculateBitcoinUriRequest){
|
||||||
|
this.calculateUri((CalculateBitcoinUriRequest) request);
|
||||||
|
}else if(request instanceof BitcoinUriParseRequest){
|
||||||
|
this.parseUri((BitcoinUriParseRequest) request);
|
||||||
}else{
|
}else{
|
||||||
System.out.println("Invalid " +this.cryptoCoin.getLabel() + " request ");
|
System.out.println("Invalid " +this.cryptoCoin.getLabel() + " request ");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -461,6 +466,11 @@ public class GeneralAccountManager implements CryptoAccountManager, CryptoNetInf
|
||||||
private void getNextAddress(NextBitcoinAccountAddressRequest request){
|
private void getNextAddress(NextBitcoinAccountAddressRequest request){
|
||||||
CrystalDatabase db = CrystalDatabase.getAppDatabase(request.getContext());
|
CrystalDatabase db = CrystalDatabase.getAppDatabase(request.getContext());
|
||||||
long index = db.bitcoinAddressDao().getLastExternalAddress(request.getAccount().getId());
|
long index = db.bitcoinAddressDao().getLastExternalAddress(request.getAccount().getId());
|
||||||
|
BitcoinAddress address = db.bitcoinAddressDao().getExternalByIndex(index);
|
||||||
|
if(address != null && db.bitcoinTransactionDao().getGtxIOByAddress(address.getAddress()).size()<=0){
|
||||||
|
request.setAddress(address.getAddress());
|
||||||
|
request.setStatus(NextBitcoinAccountAddressRequest.StatusCode.SUCCEEDED);
|
||||||
|
}else {
|
||||||
index++;
|
index++;
|
||||||
AccountSeed seed = db.accountSeedDao().findById(request.getAccount().getSeedId());
|
AccountSeed seed = db.accountSeedDao().findById(request.getAccount().getSeedId());
|
||||||
DeterministicKey purposeKey = HDKeyDerivation.deriveChildKey((DeterministicKey) seed.getPrivateKey(),
|
DeterministicKey purposeKey = HDKeyDerivation.deriveChildKey((DeterministicKey) seed.getPrivateKey(),
|
||||||
|
@ -472,18 +482,121 @@ public class GeneralAccountManager implements CryptoAccountManager, CryptoNetInf
|
||||||
DeterministicKey externalKey = HDKeyDerivation.deriveChildKey(accountKey,
|
DeterministicKey externalKey = HDKeyDerivation.deriveChildKey(accountKey,
|
||||||
new ChildNumber(0, false));
|
new ChildNumber(0, false));
|
||||||
ECKey addrKey = HDKeyDerivation.deriveChildKey(externalKey, new ChildNumber((int) index, true));
|
ECKey addrKey = HDKeyDerivation.deriveChildKey(externalKey, new ChildNumber((int) index, true));
|
||||||
BitcoinAddress address = new BitcoinAddress();
|
address = new BitcoinAddress();
|
||||||
address.setChange(false);
|
address.setChange(false);
|
||||||
address.setAccountId(request.getAccount().getId());
|
address.setAccountId(request.getAccount().getId());
|
||||||
address.setIndex(index);
|
address.setIndex(index);
|
||||||
String addressString =addrKey.toAddress(this.cryptoCoin.getParameters()).toString();
|
String addressString = addrKey.toAddress(this.cryptoCoin.getParameters()).toString();
|
||||||
address.setAddress(addressString);
|
address.setAddress(addressString);
|
||||||
db.bitcoinAddressDao().insertBitcoinAddresses(address);
|
db.bitcoinAddressDao().insertBitcoinAddresses(address);
|
||||||
InsightApiGenerator.getTransactionFromAddress(this.cryptoCoin,addressString,true, null);
|
InsightApiGenerator.getTransactionFromAddress(this.cryptoCoin, addressString, true, null);
|
||||||
|
|
||||||
request.setAddress(addressString);
|
request.setAddress(addressString);
|
||||||
request.setStatus(NextBitcoinAccountAddressRequest.StatusCode.SUCCEEDED);
|
request.setStatus(NextBitcoinAccountAddressRequest.StatusCode.SUCCEEDED);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void calculateUri(CalculateBitcoinUriRequest request) {
|
||||||
|
StringBuilder uri = new StringBuilder(this.cryptoCoin.name().toLowerCase()+":");
|
||||||
|
|
||||||
|
CrystalDatabase db = CrystalDatabase.getAppDatabase(request.getContext());
|
||||||
|
long index = db.bitcoinAddressDao().getLastExternalAddress(request.getAccount().getId());
|
||||||
|
BitcoinAddress address = db.bitcoinAddressDao().getExternalByIndex(index);
|
||||||
|
if(address != null && db.bitcoinTransactionDao().getGtxIOByAddress(address.getAddress()).size()<=0){
|
||||||
|
uri.append(address.getAddress());
|
||||||
|
}else {
|
||||||
|
index++;
|
||||||
|
AccountSeed seed = db.accountSeedDao().findById(request.getAccount().getSeedId());
|
||||||
|
DeterministicKey purposeKey = HDKeyDerivation.deriveChildKey((DeterministicKey) seed.getPrivateKey(),
|
||||||
|
new ChildNumber(44, true));
|
||||||
|
DeterministicKey coinKey = HDKeyDerivation.deriveChildKey(purposeKey,
|
||||||
|
new ChildNumber(cryptoCoin.getCoinNumber(), true));
|
||||||
|
DeterministicKey accountKey = HDKeyDerivation.deriveChildKey(coinKey,
|
||||||
|
new ChildNumber(request.getAccount().getAccountIndex(), true));
|
||||||
|
DeterministicKey externalKey = HDKeyDerivation.deriveChildKey(accountKey,
|
||||||
|
new ChildNumber(0, false));
|
||||||
|
ECKey addrKey = HDKeyDerivation.deriveChildKey(externalKey, new ChildNumber((int) index, true));
|
||||||
|
address = new BitcoinAddress();
|
||||||
|
address.setChange(false);
|
||||||
|
address.setAccountId(request.getAccount().getId());
|
||||||
|
address.setIndex(index);
|
||||||
|
String addressString = addrKey.toAddress(this.cryptoCoin.getParameters()).toString();
|
||||||
|
address.setAddress(addressString);
|
||||||
|
db.bitcoinAddressDao().insertBitcoinAddresses(address);
|
||||||
|
InsightApiGenerator.getTransactionFromAddress(this.cryptoCoin, addressString, true, null);
|
||||||
|
|
||||||
|
uri.append(address.getAddress());
|
||||||
|
}
|
||||||
|
if(request.getCurrency()!= null){
|
||||||
|
uri.append("?amount=");
|
||||||
|
uri.append(request.getAmount());
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("GeneralAccountMAnager uri calculated : " + uri.toString());
|
||||||
|
|
||||||
|
request.setUri(uri.toString());
|
||||||
|
request.validate();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void parseUri(BitcoinUriParseRequest request){
|
||||||
|
String uri = request.getUri();
|
||||||
|
if(uri.indexOf(":")>0){
|
||||||
|
String cryptoNet = uri.substring(0,uri.indexOf(":"));
|
||||||
|
if(cryptoNet.equalsIgnoreCase(this.cryptoCoin.getLabel())){
|
||||||
|
try{
|
||||||
|
Address address = Address.fromBase58(this.cryptoCoin.getParameters(), request.getAddress());
|
||||||
|
request.setAddress(address.toString());
|
||||||
|
request.setStatus(BitcoinUriParseRequest.StatusCode.VALID);
|
||||||
|
if(uri.indexOf("?")>0){
|
||||||
|
try {
|
||||||
|
String[] parameters = uri.substring(uri.indexOf("?") + 1).split("&");
|
||||||
|
for (String parameter : parameters) {
|
||||||
|
int idx = parameter.indexOf("=");
|
||||||
|
if (idx > 0 && parameter.substring(0, idx).equalsIgnoreCase("amount")) {
|
||||||
|
request.setAmount(Double.parseDouble(parameter.substring(idx + 1)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch(Exception ignored){}
|
||||||
|
}
|
||||||
|
}catch(AddressFormatException ex){
|
||||||
|
request.setStatus(BitcoinUriParseRequest.StatusCode.NOT_VALID);
|
||||||
|
}
|
||||||
|
|
||||||
|
}else{
|
||||||
|
request.setStatus(BitcoinUriParseRequest.StatusCode.NOT_VALID);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if(uri.indexOf("?")>0){
|
||||||
|
try{
|
||||||
|
Address address = Address.fromBase58(this.cryptoCoin.getParameters(), request.getAddress());
|
||||||
|
request.setAddress(address.toString());
|
||||||
|
request.setStatus(BitcoinUriParseRequest.StatusCode.VALID);
|
||||||
|
try{
|
||||||
|
String[] parameters = uri.substring(uri.indexOf("?")+1).split("&");
|
||||||
|
for(String parameter : parameters){
|
||||||
|
int idx = parameter.indexOf("=");
|
||||||
|
if(idx > 0 && parameter.substring(0,idx).equalsIgnoreCase("amount")){
|
||||||
|
request.setAmount(Double.parseDouble(parameter.substring(idx+1)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch(Exception ignored){}
|
||||||
|
|
||||||
|
}catch(AddressFormatException ex){
|
||||||
|
request.setStatus(BitcoinUriParseRequest.StatusCode.NOT_VALID);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
try{
|
||||||
|
Address address = Address.fromBase58(this.cryptoCoin.getParameters(), request.getAddress());
|
||||||
|
request.setAddress(address.toString());
|
||||||
|
request.setStatus(BitcoinUriParseRequest.StatusCode.VALID);
|
||||||
|
|
||||||
|
}catch(AddressFormatException ex){
|
||||||
|
request.setStatus(BitcoinUriParseRequest.StatusCode.NOT_VALID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
request.validate();
|
||||||
|
}
|
||||||
|
|
||||||
private List<BitcoinTransactionGTxIO> getUtxos(long accountId, CrystalDatabase db){
|
private List<BitcoinTransactionGTxIO> getUtxos(long accountId, CrystalDatabase db){
|
||||||
List<BitcoinTransactionGTxIO> answer = new ArrayList<>();
|
List<BitcoinTransactionGTxIO> answer = new ArrayList<>();
|
||||||
|
|
|
@ -33,7 +33,6 @@ import cy.agorise.crystalwallet.models.GrapheneAccount;
|
||||||
import cy.agorise.crystalwallet.models.GrapheneAccountInfo;
|
import cy.agorise.crystalwallet.models.GrapheneAccountInfo;
|
||||||
import cy.agorise.crystalwallet.models.seed.BIP39;
|
import cy.agorise.crystalwallet.models.seed.BIP39;
|
||||||
import cy.agorise.crystalwallet.network.CryptoNetManager;
|
import cy.agorise.crystalwallet.network.CryptoNetManager;
|
||||||
import cy.agorise.crystalwallet.requestmanagers.CryptoNetEquivalentRequest;
|
|
||||||
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequest;
|
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequest;
|
||||||
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequestsListener;
|
import cy.agorise.crystalwallet.requestmanagers.CryptoNetInfoRequestsListener;
|
||||||
import cy.agorise.crystalwallet.requestmanagers.GetBitsharesAccountNameCacheRequest;
|
import cy.agorise.crystalwallet.requestmanagers.GetBitsharesAccountNameCacheRequest;
|
||||||
|
@ -100,7 +99,8 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
GrapheneAccount fetch = (GrapheneAccount) answer;
|
GrapheneAccount fetch = (GrapheneAccount) answer;
|
||||||
grapheneAccount.setName(fetch.getName());
|
grapheneAccount.setName(fetch.getName());
|
||||||
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
||||||
db.cryptoNetAccountDao().insertCryptoNetAccount(grapheneAccount);
|
long idAccount = db.cryptoNetAccountDao().insertCryptoNetAccount(grapheneAccount)[0];
|
||||||
|
grapheneAccount.setId(idAccount);
|
||||||
db.grapheneAccountInfoDao().insertGrapheneAccountInfo(new GrapheneAccountInfo(grapheneAccount));
|
db.grapheneAccountInfoDao().insertGrapheneAccountInfo(new GrapheneAccountInfo(grapheneAccount));
|
||||||
subscribeSteemAccount(grapheneAccount.getId(),grapheneAccount.getAccountId(),context);
|
subscribeSteemAccount(grapheneAccount.getId(),grapheneAccount.getAccountId(),context);
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,8 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
});
|
});
|
||||||
}else {
|
}else {
|
||||||
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
CrystalDatabase db = CrystalDatabase.getAppDatabase(context);
|
||||||
db.cryptoNetAccountDao().insertCryptoNetAccount(grapheneAccount);
|
long idAccount = db.cryptoNetAccountDao().insertCryptoNetAccount(grapheneAccount)[0];
|
||||||
|
grapheneAccount.setId(idAccount);
|
||||||
db.grapheneAccountInfoDao().insertGrapheneAccountInfo(new GrapheneAccountInfo(grapheneAccount));
|
db.grapheneAccountInfoDao().insertGrapheneAccountInfo(new GrapheneAccountInfo(grapheneAccount));
|
||||||
subscribeSteemAccount(grapheneAccount.getId(), grapheneAccount.getAccountId(), context);
|
subscribeSteemAccount(grapheneAccount.getId(), grapheneAccount.getAccountId(), context);
|
||||||
}
|
}
|
||||||
|
@ -185,8 +186,6 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
this.validateExistAcccount((ValidateExistBitsharesAccountRequest) request);
|
this.validateExistAcccount((ValidateExistBitsharesAccountRequest) request);
|
||||||
} else if (request instanceof ValidateBitsharesSendRequest) {
|
} else if (request instanceof ValidateBitsharesSendRequest) {
|
||||||
this.validateSendRequest((ValidateBitsharesSendRequest) request);
|
this.validateSendRequest((ValidateBitsharesSendRequest) request);
|
||||||
} else if (request instanceof CryptoNetEquivalentRequest) {
|
|
||||||
this.getEquivalentValue((CryptoNetEquivalentRequest) request);
|
|
||||||
} else if (request instanceof GetBitsharesAccountNameCacheRequest) {
|
} else if (request instanceof GetBitsharesAccountNameCacheRequest) {
|
||||||
this.getBitsharesAccountNameCacheRequest((GetBitsharesAccountNameCacheRequest) request);
|
this.getBitsharesAccountNameCacheRequest((GetBitsharesAccountNameCacheRequest) request);
|
||||||
} else {
|
} else {
|
||||||
|
@ -215,34 +214,7 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
long idSeed = accountSeedDao.insertAccountSeed(seed);
|
long idSeed = accountSeedDao.insertAccountSeed(seed);
|
||||||
if (idSeed >= 0) {
|
if (idSeed >= 0) {
|
||||||
GrapheneAccount account = new GrapheneAccount();
|
GrapheneAccount account = new GrapheneAccount();
|
||||||
account.setCryptoNet(CryptoNet.BITSHARES);
|
account.setCryptoNet(CryptoNet.STEEM);
|
||||||
account.setAccountIndex(0);
|
|
||||||
account.setSeedId(idSeed);
|
|
||||||
account.setAccountId(userAccount.getObjectId());
|
|
||||||
importAccountFromSeed(account, importRequest.getContext());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void fail(int idPetition) {
|
|
||||||
BIP39 bip39 = new BIP39(-1, importRequest.getMnemonic());
|
|
||||||
ApiRequest getAccountNamesBP39 = new ApiRequest(0, new ApiRequestListener() {
|
|
||||||
@Override
|
|
||||||
public void success(Object answer, int idPetition) {
|
|
||||||
if(answer != null && importRequest.getStatus().equals(ImportBitsharesAccountRequest.StatusCode.NOT_STARTED)) {
|
|
||||||
UserAccount userAccount = (UserAccount) answer;
|
|
||||||
importRequest.setSeedType(SeedType.BIP39);
|
|
||||||
importRequest.setStatus(ImportBitsharesAccountRequest.StatusCode.SUCCEEDED);
|
|
||||||
|
|
||||||
AccountSeed seed = new AccountSeed();
|
|
||||||
seed.setName(userAccount.getName());
|
|
||||||
seed.setType(importRequest.getSeedType());
|
|
||||||
seed.setMasterSeed(importRequest.getMnemonic());
|
|
||||||
long idSeed = accountSeedDao.insertAccountSeed(seed);
|
|
||||||
if (idSeed >= 0) {
|
|
||||||
GrapheneAccount account = new GrapheneAccount();
|
|
||||||
account.setCryptoNet(CryptoNet.BITSHARES);
|
|
||||||
account.setAccountIndex(0);
|
account.setAccountIndex(0);
|
||||||
account.setSeedId(idSeed);
|
account.setSeedId(idSeed);
|
||||||
account.setAccountId(userAccount.getObjectId());
|
account.setAccountId(userAccount.getObjectId());
|
||||||
|
@ -256,17 +228,9 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
importRequest.setStatus(ImportBitsharesAccountRequest.StatusCode.BAD_SEED);
|
importRequest.setStatus(ImportBitsharesAccountRequest.StatusCode.BAD_SEED);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
GrapheneApiGenerator.getAccountByOwnerOrActiveAddress(new Address(ECKey.fromPublicOnly(bip39.getBitsharesActiveKey(0).getPubKey())),getAccountNamesBP39);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BrainKey bk = new BrainKey(importRequest.getMnemonic(), 0);
|
BrainKey bk = new BrainKey(importRequest.getMnemonic(), 0);
|
||||||
|
GrapheneApiGenerator.getAccountByOwnerOrActiveAddress(bk.getPublicAddress("STM"),CryptoNet.STEEM,getAccountNamesBK);
|
||||||
GrapheneApiGenerator.getAccountByOwnerOrActiveAddress(bk.getPublicAddress("BTS"),getAccountNamesBK);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -287,21 +251,13 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
AccountProperties prop = (AccountProperties) answer;
|
AccountProperties prop = (AccountProperties) answer;
|
||||||
BrainKey bk = new BrainKey(importRequest.getMnemonic(), 0);
|
BrainKey bk = new BrainKey(importRequest.getMnemonic(), 0);
|
||||||
for(PublicKey activeKey : prop.owner.getKeyAuthList()){
|
for(PublicKey activeKey : prop.owner.getKeyAuthList()){
|
||||||
if((new Address(activeKey.getKey(),"BTS")).toString().equals(bk.getPublicAddress("BTS").toString())){
|
if((new Address(activeKey.getKey(),"STM")).toString().equals(bk.getPublicAddress("STM").toString())){
|
||||||
importRequest.setSeedType(SeedType.BRAINKEY);
|
importRequest.setSeedType(SeedType.BRAINKEY);
|
||||||
importRequest.setStatus(ValidateImportBitsharesAccountRequest.StatusCode.SUCCEEDED);
|
importRequest.setStatus(ValidateImportBitsharesAccountRequest.StatusCode.SUCCEEDED);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BIP39 bip39 = new BIP39(-1, importRequest.getMnemonic());
|
|
||||||
for(PublicKey activeKey : prop.active.getKeyAuthList()){
|
|
||||||
if((new Address(activeKey.getKey(),"BTS")).toString().equals(new Address(ECKey.fromPublicOnly(bip39.getBitsharesActiveKey(0).getPubKey())).toString())){
|
|
||||||
importRequest.setSeedType(SeedType.BIP39);
|
|
||||||
importRequest.setStatus(ValidateImportBitsharesAccountRequest.StatusCode.SUCCEEDED);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((importRequest.getStatus() == ValidateImportBitsharesAccountRequest.StatusCode.SUCCEEDED)){
|
if ((importRequest.getStatus() == ValidateImportBitsharesAccountRequest.StatusCode.SUCCEEDED)){
|
||||||
if (importRequest.addAccountIfValid()) {
|
if (importRequest.addAccountIfValid()) {
|
||||||
|
@ -312,7 +268,7 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
long idSeed = accountSeedDao.insertAccountSeed(seed);
|
long idSeed = accountSeedDao.insertAccountSeed(seed);
|
||||||
if (idSeed >= 0) {
|
if (idSeed >= 0) {
|
||||||
GrapheneAccount account = new GrapheneAccount();
|
GrapheneAccount account = new GrapheneAccount();
|
||||||
account.setCryptoNet(CryptoNet.BITSHARES);
|
account.setCryptoNet(CryptoNet.STEEM);
|
||||||
account.setAccountIndex(0);
|
account.setAccountIndex(0);
|
||||||
account.setSeedId(idSeed);
|
account.setSeedId(idSeed);
|
||||||
account.setName(importRequest.getAccountName());
|
account.setName(importRequest.getAccountName());
|
||||||
|
@ -334,7 +290,7 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
importRequest.setStatus(ValidateImportBitsharesAccountRequest.StatusCode.NO_ACCOUNT_DATA);
|
importRequest.setStatus(ValidateImportBitsharesAccountRequest.StatusCode.NO_ACCOUNT_DATA);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
GrapheneApiGenerator.getAccountById((String)answer,getAccountInfo);
|
GrapheneApiGenerator.getAccountById((String)answer,CryptoNet.STEEM,getAccountInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -344,7 +300,7 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
GrapheneApiGenerator.getAccountIdByName(importRequest.getAccountName(),checkAccountName);
|
GrapheneApiGenerator.getAccountIdByName(importRequest.getAccountName(),CryptoNet.STEEM,checkAccountName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -369,7 +325,7 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
validateRequest.setAccountExists(false);
|
validateRequest.setAccountExists(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
GrapheneApiGenerator.getAccountIdByName(validateRequest.getAccountName(),checkAccountName);
|
GrapheneApiGenerator.getAccountIdByName(validateRequest.getAccountName(),CryptoNet.STEEM,checkAccountName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -379,7 +335,7 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
//TODO check internet, server connection
|
//TODO check internet, server connection
|
||||||
//TODO feeAsset
|
//TODO feeAsset
|
||||||
CrystalDatabase db = CrystalDatabase.getAppDatabase(sendRequest.getContext());
|
CrystalDatabase db = CrystalDatabase.getAppDatabase(sendRequest.getContext());
|
||||||
CryptoCurrency currency = db.cryptoCurrencyDao().getByNameAndCryptoNet(sendRequest.getAsset(), CryptoNet.BITSHARES.name());
|
CryptoCurrency currency = db.cryptoCurrencyDao().getByNameAndCryptoNet(sendRequest.getAsset(), CryptoNet.STEEM.name());
|
||||||
if (currency == null){
|
if (currency == null){
|
||||||
getAssetInfoByName(sendRequest.getAsset(), new ManagerRequest() {
|
getAssetInfoByName(sendRequest.getAsset(), new ManagerRequest() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -478,7 +434,7 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
ECKey privateKey = sendRequest.getSourceAccount().getActiveKey(sendRequest.getContext());
|
ECKey privateKey = sendRequest.getSourceAccount().getActiveKey(sendRequest.getContext());
|
||||||
|
|
||||||
Transaction transaction = new Transaction(privateKey, null, operationList);
|
Transaction transaction = new Transaction(privateKey, null, operationList);
|
||||||
transaction.setChainId(CryptoNetManager.getChaindId(CryptoNet.BITSHARES));
|
transaction.setChainId(CryptoNetManager.getChaindId(CryptoNet.STEEM));
|
||||||
|
|
||||||
ApiRequest transactionRequest = new ApiRequest(0, new ApiRequestListener() {
|
ApiRequest transactionRequest = new ApiRequest(0, new ApiRequestListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -530,7 +486,7 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
AccountIdOrNameListener listener = new AccountIdOrNameListener(request);
|
AccountIdOrNameListener listener = new AccountIdOrNameListener(request);
|
||||||
|
|
||||||
ApiRequest accountRequest = new ApiRequest(0, listener);
|
ApiRequest accountRequest = new ApiRequest(0, listener);
|
||||||
GrapheneApiGenerator.getAccountById(grapheneId,accountRequest);
|
GrapheneApiGenerator.getAccountById(grapheneId,CryptoNet.STEEM,accountRequest);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -542,7 +498,7 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
AccountIdOrNameListener listener = new AccountIdOrNameListener(request);
|
AccountIdOrNameListener listener = new AccountIdOrNameListener(request);
|
||||||
|
|
||||||
ApiRequest accountRequest = new ApiRequest(0, listener);
|
ApiRequest accountRequest = new ApiRequest(0, listener);
|
||||||
GrapheneApiGenerator.getAccountByName(grapheneName,accountRequest);
|
GrapheneApiGenerator.getAccountByName(grapheneName,CryptoNet.STEEM,accountRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -553,7 +509,7 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
ApiRequest assetRequest = new ApiRequest(0, nameListener);
|
ApiRequest assetRequest = new ApiRequest(0, nameListener);
|
||||||
ArrayList<String> assetNames = new ArrayList<>();
|
ArrayList<String> assetNames = new ArrayList<>();
|
||||||
assetNames.add(assetName);
|
assetNames.add(assetName);
|
||||||
GrapheneApiGenerator.getAssetByName(assetNames, assetRequest);
|
GrapheneApiGenerator.getAssetByName(assetNames, CryptoNet.STEEM, assetRequest);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -666,7 +622,7 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
});
|
});
|
||||||
ArrayList<String> assets = new ArrayList<>();
|
ArrayList<String> assets = new ArrayList<>();
|
||||||
assets.add(transfer.getOperation().getAssetAmount().getAsset().getObjectId());
|
assets.add(transfer.getOperation().getAssetAmount().getAsset().getObjectId());
|
||||||
GrapheneApiGenerator.getAssetById(assets,assetRequest);
|
GrapheneApiGenerator.getAssetById(assets,CryptoNet.STEEM,assetRequest);
|
||||||
|
|
||||||
}else{
|
}else{
|
||||||
saveTransaction(transaction,info,transfer);
|
saveTransaction(transaction,info,transfer);
|
||||||
|
@ -695,32 +651,7 @@ public class SteemAccountManager implements CryptoAccountManager, CryptoNetInfoR
|
||||||
transaction.setInput(!transfer.getOperation().getFrom().getObjectId().equals(account.getAccountId()));
|
transaction.setInput(!transfer.getOperation().getFrom().getObjectId().equals(account.getAccountId()));
|
||||||
transaction.setTo(transfer.getOperation().getTo().getObjectId());
|
transaction.setTo(transfer.getOperation().getTo().getObjectId());
|
||||||
|
|
||||||
GrapheneApiGenerator.getBlockHeaderTime(transfer.getBlockNum(), new ApiRequest(0, new GetTransactionDate(transaction, db.transactionDao())));
|
GrapheneApiGenerator.getBlockHeaderTime(transfer.getBlockNum(), CryptoNet.STEEM,new ApiRequest(0, new GetTransactionDate(transaction, db.transactionDao())));
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the current change from two assets
|
|
||||||
*/
|
|
||||||
private void getEquivalentValue(final CryptoNetEquivalentRequest request){
|
|
||||||
if(request.getFromCurrency() instanceof BitsharesAsset && request.getToCurrency() instanceof BitsharesAsset) {
|
|
||||||
BitsharesAsset fromAsset = (BitsharesAsset) request.getFromCurrency();
|
|
||||||
BitsharesAsset toAsset = (BitsharesAsset) request.getToCurrency();
|
|
||||||
ApiRequest getEquivalentRequest = new ApiRequest(0, new ApiRequestListener() {
|
|
||||||
@Override
|
|
||||||
public void success(Object answer, int idPetition) {
|
|
||||||
request.setPrice((Long)answer);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void fail(int idPetition) {
|
|
||||||
//TODO error
|
|
||||||
}
|
|
||||||
});
|
|
||||||
GrapheneApiGenerator.getEquivalentValue(fromAsset.getBitsharesId(),toAsset.getBitsharesId(), getEquivalentRequest);
|
|
||||||
}else{
|
|
||||||
//TODO error
|
|
||||||
System.out.println("Equivalent Value error ");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ import android.support.annotation.NonNull;
|
||||||
*/
|
*/
|
||||||
@Entity(
|
@Entity(
|
||||||
tableName="bitcoin_address",
|
tableName="bitcoin_address",
|
||||||
primaryKeys = {"account_id","address_index"},
|
primaryKeys = {"account_id","address_index","is_change"},
|
||||||
foreignKeys = {
|
foreignKeys = {
|
||||||
@ForeignKey(
|
@ForeignKey(
|
||||||
entity = CryptoNetAccount.class,
|
entity = CryptoNetAccount.class,
|
||||||
|
|
|
@ -18,6 +18,8 @@ public abstract class CryptoNetVerifier {
|
||||||
return new BitsharesCryptoNetVerifier();
|
return new BitsharesCryptoNetVerifier();
|
||||||
}else if(cryptoNet.getLabel().equals(CryptoNet.BITCOIN.getLabel())){
|
}else if(cryptoNet.getLabel().equals(CryptoNet.BITCOIN.getLabel())){
|
||||||
return new BitcoinCryptoNetVerifier(CryptoCoin.BITCOIN);
|
return new BitcoinCryptoNetVerifier(CryptoCoin.BITCOIN);
|
||||||
|
}else if(cryptoNet.getLabel().equals(CryptoNet.STEEM.getLabel())){
|
||||||
|
return new SteemCryptoNetVerifier();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
package cy.agorise.crystalwallet.requestmanagers;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import cy.agorise.crystalwallet.enums.CryptoCoin;
|
||||||
|
import cy.agorise.crystalwallet.models.CryptoNetAccount;
|
||||||
|
import cy.agorise.crystalwallet.models.GrapheneAccount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class used to make a bitcoin uri parse request.
|
||||||
|
*
|
||||||
|
* Created by henry on 11/13/2018.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class BitcoinUriParseRequest extends CryptoNetInfoRequest {
|
||||||
|
/**
|
||||||
|
* The status code of this request
|
||||||
|
*/
|
||||||
|
public enum StatusCode{
|
||||||
|
NOT_STARTED,
|
||||||
|
VALID,
|
||||||
|
NOT_VALID
|
||||||
|
}
|
||||||
|
|
||||||
|
private String uri;
|
||||||
|
|
||||||
|
private String address;
|
||||||
|
private Double amount;
|
||||||
|
private String memo;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private StatusCode status = StatusCode.NOT_STARTED;
|
||||||
|
|
||||||
|
public BitcoinUriParseRequest(String uri, CryptoCoin cryptoCoin) {
|
||||||
|
super(cryptoCoin);
|
||||||
|
this.address = "";
|
||||||
|
this.amount = -1.0;
|
||||||
|
this.memo = "";
|
||||||
|
this.uri = uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAddress() {
|
||||||
|
return address;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAddress(String address) {
|
||||||
|
this.address = address;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Double getAmount() {
|
||||||
|
return amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAmount(Double amount) {
|
||||||
|
this.amount = amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMemo() {
|
||||||
|
return memo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMemo(String memo) {
|
||||||
|
this.memo = memo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void validate(){
|
||||||
|
if ((this.status != StatusCode.NOT_STARTED)){
|
||||||
|
this._fireOnCarryOutEvent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStatus(StatusCode code){
|
||||||
|
this.status = code;
|
||||||
|
this._fireOnCarryOutEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public StatusCode getStatus() {
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUri() {
|
||||||
|
return uri;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,69 @@
|
||||||
|
package cy.agorise.crystalwallet.requestmanagers;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
|
||||||
|
import cy.agorise.crystalwallet.enums.CryptoCoin;
|
||||||
|
import cy.agorise.crystalwallet.models.CryptoCurrency;
|
||||||
|
import cy.agorise.crystalwallet.models.CryptoNetAccount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class validates that an account name exist, this can be used to verified the existing accounts
|
||||||
|
* or to verified if the name is available to create an Account
|
||||||
|
*
|
||||||
|
* Created by henry on 8/10/2017.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class CalculateBitcoinUriRequest extends CryptoNetInfoRequest {
|
||||||
|
private CryptoNetAccount account;
|
||||||
|
private CryptoCurrency currency;
|
||||||
|
private double amount;
|
||||||
|
private Context context;
|
||||||
|
|
||||||
|
private String uri;
|
||||||
|
|
||||||
|
public CalculateBitcoinUriRequest(CryptoCoin coin, CryptoNetAccount account, Context context) {
|
||||||
|
super(coin);
|
||||||
|
this.account = account;
|
||||||
|
this.context = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CalculateBitcoinUriRequest(CryptoCoin coin, CryptoNetAccount account, CryptoCurrency currency, double amount, Context context) {
|
||||||
|
super(coin);
|
||||||
|
this.account = account;
|
||||||
|
this.currency = currency;
|
||||||
|
this.amount = amount;
|
||||||
|
this.context = context;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CryptoNetAccount getAccount() {
|
||||||
|
return account;
|
||||||
|
}
|
||||||
|
|
||||||
|
public CryptoCurrency getCurrency() {
|
||||||
|
return currency;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getAmount() {
|
||||||
|
return amount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Context getContext() {
|
||||||
|
return context;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUri() {
|
||||||
|
return uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUri(String uri) {
|
||||||
|
this.uri = uri;
|
||||||
|
this.validate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void validate(){
|
||||||
|
if ((this.uri != null)){
|
||||||
|
this._fireOnCarryOutEvent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue