From 57049ef95562193e8c09e7d4a4b3be8aae8282d4 Mon Sep 17 00:00:00 2001
From: Roque Porchetto <roque.porchetto@nexedi.com>
Date: Fri, 11 Oct 2024 17:03:12 +0000
Subject: [PATCH] erp5_web_monitoring: force app re-config only for old app
 versions

---
 .../gadget_officejs_monitoring_jio_js.js      | 62 ++++++++++++-------
 .../gadget_officejs_monitoring_jio_js.xml     |  4 +-
 .../web_site_module/officejs_monitoring.xml   |  6 +-
 .../officejs_monitoring/app.xml               |  6 +-
 .../officejs_monitoring/hateoas_appcache.xml  |  6 +-
 5 files changed, 50 insertions(+), 34 deletions(-)

diff --git a/bt5/erp5_web_monitoring/PathTemplateItem/web_page_module/gadget_officejs_monitoring_jio_js.js b/bt5/erp5_web_monitoring/PathTemplateItem/web_page_module/gadget_officejs_monitoring_jio_js.js
index 49e0858f27..d30e114a50 100644
--- a/bt5/erp5_web_monitoring/PathTemplateItem/web_page_module/gadget_officejs_monitoring_jio_js.js
+++ b/bt5/erp5_web_monitoring/PathTemplateItem/web_page_module/gadget_officejs_monitoring_jio_js.js
@@ -120,8 +120,8 @@
     .declareAcquiredMethod("setSettingList", "setSettingList")
     .declareAcquiredMethod("setSetting", "setSetting")
 
-    .declareMethod('updateConfiguration', function (appcache_storage, current_version, jio_storage) {
-      var gadget = this;
+    .declareMethod('updateConfiguration', function (appcache_storage, current_version, jio_storage, force_reconfig) {
+      var gadget = this, setting_dict = {'migration_version': current_version};
       if (!appcache_storage) { return; }
       return RSVP.Queue()
         .push(function () {
@@ -131,9 +131,11 @@
           return jio_storage.repair();
         })
         .push(function () {
-          return gadget.setSettingList({'migration_version': current_version,
-                                        'master_url_list': undefined,
-                                        'master_url_list_updated': false});
+          if (force_reconfig) {
+            setting_dict.master_url_list = undefined;
+            setting_dict.master_url_list_updated = false;
+          }
+          return gadget.setSettingList(setting_dict);
         });
     })
 
@@ -149,7 +151,7 @@
     .declareMethod('createJio', function (options) {
       var gadget = this, current_version, index, appcache_storage,
         appcache_jio, migration_version, manifest, monitoring_jio,
-        origin_url = window.location.href;
+        origin_url = window.location.href, force_reconfig = false;
       return gadget.getSettingList(['configuration_manifest',
                                     'migration_version'])
         .push(function (result_list) {
@@ -207,37 +209,51 @@
           };
           return gadget.createStorage(options, monitoring_jio);
         })
+        //backward compatibility: old app versions had badnamed data
         .push(function () {
           if (migration_version !== current_version) {
             if (gadget.props.jio_storage) {
-              return gadget.props.jio_storage.allDocs();
+              return gadget.props.jio_storage.allDocs({
+                query: '(portal_type:promise)'
+              });
             }
           }
         })
-        .push(function (all_docs) {
-          var remove_queue = new RSVP.Queue(), i;
-          function remove_doc(id) {
-            remove_queue
-              .push(function () {
-                return gadget.props.jio_storage.remove(id);
+        .push(function (result) {
+          function remove_all() {
+            return gadget.props.jio_storage.allDocs()
+              .push(function (all_docs) {
+                var remove_queue = new RSVP.Queue(), i;
+                function remove_doc(id) {
+                  remove_queue
+                    .push(function () {
+                      return gadget.props.jio_storage.remove(id);
+                    });
+                }
+                if (all_docs && all_docs.data.total_rows) {
+                  //iterate all docs, jio_remove, and recreate
+                  for (i = 0; i < all_docs.data.total_rows; i += 1) {
+                    remove_doc(all_docs.data.rows[i].id);
+                  }
+                  return RSVP.all([
+                    remove_queue,
+                    gadget.createStorage(options, monitoring_jio),
+                    gadget.setSetting("latest_import_date", undefined)
+                  ]);
+                }
               });
           }
-          if (all_docs && all_docs.data.total_rows) {
-            //iterate all docs, jio_remove, and recreate
-            for (i = 0; i < all_docs.data.total_rows; i += 1) {
-              remove_doc(all_docs.data.rows[i].id);
+          if (result && result.data.rows.length > 0) {
+            force_reconfig = true;
+            if (gadget.props.jio_storage) {
+              return remove_all();
             }
-            return RSVP.all([
-              remove_queue,
-              gadget.createStorage(options, monitoring_jio),
-              gadget.setSetting("latest_import_date", undefined)
-            ]);
           }
         })
         .push(function () {
           if (migration_version !== current_version) {
             appcache_storage = jIO.createJIO(appcache_jio);
-            return gadget.updateConfiguration(appcache_storage, current_version, gadget.props.jio_storage);
+            return gadget.updateConfiguration(appcache_storage, current_version, gadget.props.jio_storage, force_reconfig);
           }
         })
         .push(function () {
diff --git a/bt5/erp5_web_monitoring/PathTemplateItem/web_page_module/gadget_officejs_monitoring_jio_js.xml b/bt5/erp5_web_monitoring/PathTemplateItem/web_page_module/gadget_officejs_monitoring_jio_js.xml
index 87040ca82f..9933d963c5 100644
--- a/bt5/erp5_web_monitoring/PathTemplateItem/web_page_module/gadget_officejs_monitoring_jio_js.xml
+++ b/bt5/erp5_web_monitoring/PathTemplateItem/web_page_module/gadget_officejs_monitoring_jio_js.xml
@@ -249,7 +249,7 @@
                   </item>
                   <item>
                       <key> <string>serial</string> </key>
-                      <value> <string>1019.25813.42370.5614</string> </value>
+                      <value> <string>1020.20652.1827.11417</string> </value>
                   </item>
                   <item>
                       <key> <string>state</string> </key>
@@ -269,7 +269,7 @@
                           </tuple>
                           <state>
                             <tuple>
-                              <float>1726682335.1</float>
+                              <float>1730218508.62</float>
                               <string>UTC</string>
                             </tuple>
                           </state>
diff --git a/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring.xml b/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring.xml
index 5536289a9b..c44f8cad4a 100644
--- a/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring.xml
+++ b/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring.xml
@@ -104,7 +104,7 @@
                   <dictionary>
                     <item>
                         <key> <string>_defined_in_class</string> </key>
-                        <value> <bool>True</bool> </value>
+                        <value> <int>1</int> </value>
                     </item>
                     <item>
                         <key> <string>_hookname</string> </key>
@@ -544,7 +544,7 @@
                   </item>
                   <item>
                       <key> <string>serial</string> </key>
-                      <value> <string>1015.32811.46439.54528</string> </value>
+                      <value> <string>1019.37281.47800.48247</string> </value>
                   </item>
                   <item>
                       <key> <string>state</string> </key>
@@ -564,7 +564,7 @@
                           </tuple>
                           <state>
                             <tuple>
-                              <float>1716562039.61</float>
+                              <float>1730218552.03</float>
                               <string>UTC</string>
                             </tuple>
                           </state>
diff --git a/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring/app.xml b/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring/app.xml
index 7d34dd25cb..b86232cc13 100644
--- a/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring/app.xml
+++ b/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring/app.xml
@@ -104,7 +104,7 @@
                   <dictionary>
                     <item>
                         <key> <string>_defined_in_class</string> </key>
-                        <value> <bool>True</bool> </value>
+                        <value> <int>1</int> </value>
                     </item>
                     <item>
                         <key> <string>_hookname</string> </key>
@@ -579,7 +579,7 @@ WebSection_getMonitorPrecacheManifestList</string> </value>
                   </item>
                   <item>
                       <key> <string>serial</string> </key>
-                      <value> <string>1015.45944.11619.35208</string> </value>
+                      <value> <string>1019.37281.53022.31078</string> </value>
                   </item>
                   <item>
                       <key> <string>state</string> </key>
@@ -599,7 +599,7 @@ WebSection_getMonitorPrecacheManifestList</string> </value>
                           </tuple>
                           <state>
                             <tuple>
-                              <float>1716562039.61</float>
+                              <float>1730218556.13</float>
                               <string>UTC</string>
                             </tuple>
                           </state>
diff --git a/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring/hateoas_appcache.xml b/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring/hateoas_appcache.xml
index 231c3b4ff6..3fd9089a67 100644
--- a/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring/hateoas_appcache.xml
+++ b/bt5/erp5_web_monitoring/PathTemplateItem/web_site_module/officejs_monitoring/hateoas_appcache.xml
@@ -69,7 +69,7 @@
                   <dictionary>
                     <item>
                         <key> <string>_defined_in_class</string> </key>
-                        <value> <bool>True</bool> </value>
+                        <value> <int>1</int> </value>
                     </item>
                     <item>
                         <key> <string>_hookname</string> </key>
@@ -339,7 +339,7 @@
                   </item>
                   <item>
                       <key> <string>serial</string> </key>
-                      <value> <string>1014.3364.27014.642380</string> </value>
+                      <value> <string>1019.25707.33677.14080</string> </value>
                   </item>
                   <item>
                       <key> <string>state</string> </key>
@@ -359,7 +359,7 @@
                           </tuple>
                           <state>
                             <tuple>
-                              <float>1716562039.61</float>
+                              <float>1730218552.03</float>
                               <string>UTC</string>
                             </tuple>
                           </state>
-- 
2.30.9