diff --git a/app/src/main/java/cy/agorise/crystalwallet/dao/CryptoNetAccountDao.java b/app/src/main/java/cy/agorise/crystalwallet/dao/CryptoNetAccountDao.java index 4536405..d0eaf66 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/dao/CryptoNetAccountDao.java +++ b/app/src/main/java/cy/agorise/crystalwallet/dao/CryptoNetAccountDao.java @@ -24,7 +24,10 @@ public interface CryptoNetAccountDao { LiveData> getAll(); @Query("SELECT * FROM crypto_net_account WHERE id = :accountId") - LiveData getById( long accountId); + LiveData getByIdLiveData( long accountId); + + @Query("SELECT * FROM crypto_net_account WHERE id = :accountId") + CryptoNetAccount getById( long accountId); @Query("SELECT * FROM crypto_net_account WHERE crypto_net = 'BITSHARES'") LiveData> getBitsharesAccounts(); diff --git a/app/src/main/java/cy/agorise/crystalwallet/dao/GrapheneAccountInfoDao.java b/app/src/main/java/cy/agorise/crystalwallet/dao/GrapheneAccountInfoDao.java index ef15d29..915f437 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/dao/GrapheneAccountInfoDao.java +++ b/app/src/main/java/cy/agorise/crystalwallet/dao/GrapheneAccountInfoDao.java @@ -25,6 +25,9 @@ public interface GrapheneAccountInfoDao { @Query("SELECT * FROM graphene_account WHERE crypto_net_account_id = :cryptoNetAccountId") LiveData getGrapheneAccountInfo(long cryptoNetAccountId); + @Query("SELECT * FROM graphene_account WHERE crypto_net_account_id = :cryptoNetAccountId") + GrapheneAccountInfo getByAccountId(long cryptoNetAccountId); + @Insert(onConflict = OnConflictStrategy.REPLACE) public long[] insertGrapheneAccountInfo(GrapheneAccountInfo... accounts); diff --git a/app/src/main/java/cy/agorise/crystalwallet/manager/BitsharesAccountManager.java b/app/src/main/java/cy/agorise/crystalwallet/manager/BitsharesAccountManager.java index c12c6c1..d5ce063 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/manager/BitsharesAccountManager.java +++ b/app/src/main/java/cy/agorise/crystalwallet/manager/BitsharesAccountManager.java @@ -103,7 +103,7 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI if(account instanceof GrapheneAccount){ GrapheneAccount grapheneAccount = (GrapheneAccount) account; CrystalDatabase db = CrystalDatabase.getAppDatabase(context); - grapheneAccount.loadInfo(db.grapheneAccountInfoDao().getGrapheneAccountInfo(account.getId()).getValue()); + grapheneAccount.loadInfo(db.grapheneAccountInfoDao().getByAccountId(account.getId())); if(grapheneAccount.getAccountId() == null){ grapheneAccount = this.getAccountInfoByName(grapheneAccount.getName()); }else if(grapheneAccount.getName() == null){ @@ -270,12 +270,12 @@ public class BitsharesAccountManager implements CryptoAccountManager, CryptoNetI public static void refreshAccountTransactions(long idAccount, Context context){ CrystalDatabase db = CrystalDatabase.getAppDatabase(context); LiveData> transactions = db.transactionDao().getByIdAccount(idAccount); - LiveData account = db.cryptoNetAccountDao().getById(idAccount); - if(account.getValue().getCryptoNet() == CryptoNet.BITSHARES) { + CryptoNetAccount account = db.cryptoNetAccountDao().getById(idAccount); + if(account.getCryptoNet() == CryptoNet.BITSHARES) { - GrapheneAccount grapheneAccount = new GrapheneAccount(account.getValue()); + GrapheneAccount grapheneAccount = new GrapheneAccount(account); - grapheneAccount.loadInfo(db.grapheneAccountInfoDao().getGrapheneAccountInfo(idAccount).getValue()); + grapheneAccount.loadInfo(db.grapheneAccountInfoDao().getByAccountId(idAccount)); int start = transactions.getValue().size(); diff --git a/app/src/main/java/cy/agorise/crystalwallet/service/CrystalWalletService.java b/app/src/main/java/cy/agorise/crystalwallet/service/CrystalWalletService.java index 172a2e9..70b68d1 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/service/CrystalWalletService.java +++ b/app/src/main/java/cy/agorise/crystalwallet/service/CrystalWalletService.java @@ -19,6 +19,8 @@ import cy.agorise.crystalwallet.cryptonetinforequests.CryptoNetInfoRequests; import cy.agorise.crystalwallet.dao.CrystalDatabase; import cy.agorise.crystalwallet.manager.BitsharesAccountManager; import cy.agorise.crystalwallet.models.CryptoNetAccount; +import cy.agorise.crystalwallet.models.GrapheneAccount; +import cy.agorise.crystalwallet.models.GrapheneAccountInfo; /** * Created by Henry Varona on 3/10/2017. @@ -54,13 +56,19 @@ public class CrystalWalletService extends LifecycleService { this.keepLoadingAccountTransactions = true; final CrystalWalletService thisService = this; - CrystalDatabase db = CrystalDatabase.getAppDatabase(this); + final CrystalDatabase db = CrystalDatabase.getAppDatabase(this); final LiveData> cryptoNetAccountList = db.cryptoNetAccountDao().getAll(); cryptoNetAccountList.observe(this, new Observer>() { @Override public void onChanged(@Nullable List cryptoNetAccounts) { + GrapheneAccount nextGrapheneAccount; for(CryptoNetAccount nextAccount : cryptoNetAccountList.getValue()) { - bitsharesAccountManager.loadAccountFromDB(nextAccount,thisService); + GrapheneAccountInfo grapheneAccountInfo = db.grapheneAccountInfoDao().getByAccountId(nextAccount.getId()); + nextGrapheneAccount = new GrapheneAccount(nextAccount); + nextGrapheneAccount.loadInfo(grapheneAccountInfo); + + + bitsharesAccountManager.loadAccountFromDB(nextGrapheneAccount,thisService); } } }); @@ -81,6 +89,7 @@ public class CrystalWalletService extends LifecycleService { @Override public void onCreate() { + super.onCreate(); //Creates a instance for the cryptoNetInfoRequest and the managers this.cryptoNetInfoRequests = CryptoNetInfoRequests.getInstance(); this.bitsharesAccountManager = new BitsharesAccountManager(); @@ -92,6 +101,8 @@ public class CrystalWalletService extends LifecycleService { @Override public int onStartCommand(Intent intent, int flags, int startId) { + super.onStartCommand(intent,flags,startId); + if (LoadAccountTransactionsThread == null) { LoadAccountTransactionsThread = new Thread() { public void run() { @@ -107,11 +118,13 @@ public class CrystalWalletService extends LifecycleService { @Override public IBinder onBind(Intent intent) { + super.onBind(intent); return null; } @Override public void onDestroy() { + super.onDestroy(); Log.i("Crystal Service", "Destroying service"); } } diff --git a/app/src/main/java/cy/agorise/crystalwallet/viewmodels/CryptoNetAccountViewModel.java b/app/src/main/java/cy/agorise/crystalwallet/viewmodels/CryptoNetAccountViewModel.java index e0fcbaf..740cacf 100644 --- a/app/src/main/java/cy/agorise/crystalwallet/viewmodels/CryptoNetAccountViewModel.java +++ b/app/src/main/java/cy/agorise/crystalwallet/viewmodels/CryptoNetAccountViewModel.java @@ -25,7 +25,7 @@ public class CryptoNetAccountViewModel extends AndroidViewModel { } public void loadCryptoNetAccount(int accountId){ - this.cryptoNetAccount = this.db.cryptoNetAccountDao().getById(accountId); + this.cryptoNetAccount = this.db.cryptoNetAccountDao().getByIdLiveData(accountId); } public void addCryptoNetAccount(CryptoNetAccount account){