X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fui%2Factivity%2FMainActivity.java;h=d9ac65b71aa43ca3b08a42d8c2b17efdf9c7f065;hb=cf5745a939dd043b6b144c416fd4e8257b2cac66;hp=46cc410e18d401eb1da86bdcb21c950d79081dff;hpb=1796886d67b4d62c9fad1ea0980f38f53b8ce3b7;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java b/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java index 46cc410e..d9ac65b7 100644 --- a/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java +++ b/app/src/main/java/net/ktnx/mobileledger/ui/activity/MainActivity.java @@ -41,6 +41,8 @@ import androidx.core.view.GravityCompat; import androidx.drawerlayout.widget.DrawerLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.ViewModelProvider; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -51,11 +53,14 @@ import com.google.android.material.snackbar.Snackbar; import net.ktnx.mobileledger.R; import net.ktnx.mobileledger.async.RetrieveTransactionsTask; +import net.ktnx.mobileledger.async.TransactionAccumulator; import net.ktnx.mobileledger.databinding.ActivityMainBinding; import net.ktnx.mobileledger.db.DB; import net.ktnx.mobileledger.db.Option; import net.ktnx.mobileledger.db.Profile; +import net.ktnx.mobileledger.db.TransactionWithAccounts; import net.ktnx.mobileledger.model.Data; +import net.ktnx.mobileledger.model.LedgerTransaction; import net.ktnx.mobileledger.ui.FabManager; import net.ktnx.mobileledger.ui.MainModel; import net.ktnx.mobileledger.ui.account_summary.AccountSummaryFragment; @@ -386,7 +391,16 @@ public class MainActivity extends ProfileThemedActivity implements FabManager.Fa createShortcuts(newList); Profile currentProfile = Data.getProfile(); - if (currentProfile == null || !newList.contains(currentProfile)) { + boolean currentProfilePresent = false; + if (currentProfile != null) { + for (Profile p : newList) { + if (p.getId() == currentProfile.getId()) { + currentProfilePresent = true; + break; + } + } + } + if (!currentProfilePresent) { Logger.debug(TAG, "Switching profile because the current is no longer available"); Data.setCurrentProfile(newList.get(0)); } @@ -457,9 +471,33 @@ public class MainActivity extends ProfileThemedActivity implements FabManager.Fa } mainModel.getAccountFilter() - .observe(this, v -> { + .observe(this, accFilter -> { Logger.debug(TAG, "account filter changed, reloading transactions"); - mainModel.scheduleTransactionListReload(); +// mainModel.scheduleTransactionListReload(); + LiveData> transactions = + new MutableLiveData<>(new ArrayList()); + if (profile != null) { + if (accFilter == null || accFilter.isEmpty()) { + transactions = DB.get() + .getTransactionDAO() + .getAllWithAccounts(profile.getId()); + } + else { + transactions = DB.get() + .getTransactionDAO() + .getAllWithAccountsFiltered(profile.getId(), + accFilter); + } + } + + transactions.observe(this, list -> { + TransactionAccumulator accumulator = new TransactionAccumulator(accFilter); + + for (TransactionWithAccounts tr : list) + accumulator.put(new LedgerTransaction(tr)); + + accumulator.publishResults(mainModel); + }); }); mainModel.stopTransactionsRetrieval();