]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsViewModel.java
fix saving template account removals
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / templates / TemplateDetailsViewModel.java
index a5f5e0f9bac7e59e8967af0ca791965feb5c0f54..6090d12138cd94a85f0b4fe0e5320466da9474aa 100644 (file)
@@ -44,6 +44,8 @@ public class TemplateDetailsViewModel extends ViewModel {
             new MutableLiveData<>(Collections.emptyList());
     private Long mPatternId;
     private String mDefaultPatternName;
+    private boolean itemsLoaded = false;
+
     public String getDefaultPatternName() {
         return mDefaultPatternName;
     }
@@ -85,6 +87,9 @@ public class TemplateDetailsViewModel extends ViewModel {
             items.setValue(newList);
     }
     public LiveData<List<TemplateDetailsItem>> getItems(Long patternId) {
+        if (itemsLoaded && Objects.equals(patternId, this.mPatternId))
+            return items;
+
         if (patternId != null && patternId <= 0)
             throw new IllegalArgumentException("Pattern ID " + patternId + " is invalid");
 
@@ -92,6 +97,7 @@ public class TemplateDetailsViewModel extends ViewModel {
 
         if (mPatternId == null) {
             resetItems();
+            itemsLoaded = true;
             return items;
         }
 
@@ -113,6 +119,7 @@ public class TemplateDetailsViewModel extends ViewModel {
                     Logger.debug("patterns-db", "Loaded pattern item " + i);
                 }
                 items.postValue(l);
+                itemsLoaded = true;
 
                 dbList.removeObserver(this);
             }
@@ -156,6 +163,7 @@ public class TemplateDetailsViewModel extends ViewModel {
 
             TemplateAccountDAO taDAO = DB.get()
                                          .getTemplateAccountDAO();
+            taDAO.prepareForSave(mPatternId);
             for (int i = 1; i < list.size(); i++) {
                 final TemplateDetailsItem.AccountRow accRowItem = list.get(i)
                                                                       .asAccountRowItem();
@@ -174,6 +182,7 @@ public class TemplateDetailsViewModel extends ViewModel {
                         dbAccount.getId(), dbAccount.getAccountName(),
                         dbAccount.getAccountComment(), dbAccount.getNegateAmount(), accRowItem));
             }
+            taDAO.finishSave(mPatternId);
         });
     }
 }
\ No newline at end of file