]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/ui/templates/TemplateDetailsViewModel.java
make pattern editor survive reconfiguration
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / ui / templates / TemplateDetailsViewModel.java
index a24b97670a54b05e1d8bc3c7d9b56083e4677a48..608bb6344cade07fab781509a1cdc37de1ade915 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,11 +97,12 @@ public class TemplateDetailsViewModel extends ViewModel {
 
         if (mPatternId == null) {
             resetItems();
+            itemsLoaded = true;
             return items;
         }
 
         DB db = DB.get();
-        LiveData<TemplateWithAccounts> dbList = db.getPatternDAO()
+        LiveData<TemplateWithAccounts> dbList = db.getTemplateDAO()
                                                   .getTemplateWithAccounts(mPatternId);
         Observer<TemplateWithAccounts> observer = new Observer<TemplateWithAccounts>() {
             @Override
@@ -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);
             }
@@ -140,22 +147,22 @@ public class TemplateDetailsViewModel extends ViewModel {
             TemplateDetailsItem.Header modelHeader = list.get(0)
                                                          .asHeaderItem();
             TemplateHeaderDAO headerDAO = DB.get()
-                                            .getPatternDAO();
+                                            .getTemplateDAO();
             TemplateHeader dbHeader = modelHeader.toDBO();
             if (newPattern) {
                 dbHeader.setId(null);
-                dbHeader.setId(mPatternId = headerDAO.insert(dbHeader));
+                dbHeader.setId(mPatternId = headerDAO.insertSync(dbHeader));
             }
             else
-                headerDAO.update(dbHeader);
+                headerDAO.updateSync(dbHeader);
 
             Logger.debug("pattern-db",
                     String.format(Locale.US, "Stored pattern header %d, item=%s", dbHeader.getId(),
                             modelHeader));
 
 
-            TemplateAccountDAO paDAO = DB.get()
-                                         .getPatternAccountDAO();
+            TemplateAccountDAO taDAO = DB.get()
+                                         .getTemplateAccountDAO();
             for (int i = 1; i < list.size(); i++) {
                 final TemplateDetailsItem.AccountRow accRowItem = list.get(i)
                                                                       .asAccountRowItem();
@@ -164,10 +171,10 @@ public class TemplateDetailsViewModel extends ViewModel {
                 dbAccount.setPosition(i);
                 if (newPattern) {
                     dbAccount.setId(null);
-                    dbAccount.setId(paDAO.insert(dbAccount));
+                    dbAccount.setId(taDAO.insertSync(dbAccount));
                 }
                 else
-                    paDAO.update(dbAccount);
+                    taDAO.updateSync(dbAccount);
 
                 Logger.debug("pattern-db", String.format(Locale.US,
                         "Stored pattern account %d, account=%s, comment=%s, neg=%s, item=%s",