From 40fd85cc4e53d61a045c39945d58e25cfee17627 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Wed, 21 Aug 2024 16:22:52 -0400 Subject: [PATCH 1/9] use primary/canonical app id for web apps url param appId --- .../cloudcare/js/formplayer/apps/views.js | 2 +- .../cloudcare/js/formplayer/menus/api.js | 31 +++++++++++++------ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/views.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/views.js index 993601bd7bc8..d032a17d106b 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/views.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/views.js @@ -29,7 +29,7 @@ hqDefine("cloudcare/js/formplayer/apps/views", [ rowClick: function (e) { e.preventDefault(); - FormplayerFrontend.trigger("app:select", this.model.get('_id')); + FormplayerFrontend.trigger("app:select", this.model.get('copy_of')); }, rowKeyAction: function (e) { diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js index 129a94804a5f..af75b19700c5 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js @@ -48,16 +48,20 @@ hqDefine("cloudcare/js/formplayer/menus/api", [ menus; $.when(AppsAPI.getAppEntities()).done(function (appCollection) { + const app = appCollection.find(function (app) { + if (app.id && app.id === params.appId) { + return app; + } + if (app.get('copy_of') && app.get('copy_of') === params.appId) { + return app; + } + if (app.get('copy_of') && (app.get('copy_of') === params.copyOf)) { + return app; + } + }); if (!params.preview) { // Make sure the user has access to the app - if (!appCollection.find(function (app) { - if (app.id && app.id === params.appId) { - return true; - } - if (app.get('copy_of') && app.get('copy_of') === params.copyOf) { - return true; - } - })) { + if (!app) { FormplayerFrontend.trigger( 'showError', gettext('The application could not be found') @@ -67,6 +71,15 @@ hqDefine("cloudcare/js/formplayer/menus/api", [ return; } } + let appId = params.appId; + if (!params.preview) { + if (app.get('copy_of') && app.get('copy_of') === params.appId) { + appId = app.id; + } + if (app.get('copy_of') && app.get('copy_of') === params.copyOf) { + appId = params.appId; + } + } FormplayerFrontend.permitIntervalSync = true; options = { success: function (parsedMenus, response) { @@ -164,7 +177,7 @@ hqDefine("cloudcare/js/formplayer/menus/api", [ "username": user.username, "restoreAs": user.restoreAs, "domain": user.domain, - "app_id": params.appId, + "app_id": appId, "endpoint_id": params.endpointId, "endpoint_args": params.endpointArgs, "locale": params.changeLang || displayOptions.language, From 91c1d038e09fe45ff61285b94c7dda44e9d23c7a Mon Sep 17 00:00:00 2001 From: robert-costello Date: Thu, 22 Aug 2024 09:51:50 -0400 Subject: [PATCH 2/9] remove redundant var assignment --- .../apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js index af75b19700c5..a7730a307ce4 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js @@ -76,9 +76,6 @@ hqDefine("cloudcare/js/formplayer/menus/api", [ if (app.get('copy_of') && app.get('copy_of') === params.appId) { appId = app.id; } - if (app.get('copy_of') && app.get('copy_of') === params.copyOf) { - appId = params.appId; - } } FormplayerFrontend.permitIntervalSync = true; options = { From 16989dc07335dd39a6c2c57fc1901e4c7dd6c0fb Mon Sep 17 00:00:00 2001 From: robert-costello Date: Thu, 22 Aug 2024 10:01:33 -0400 Subject: [PATCH 3/9] add note about temp check --- .../apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js | 1 + 1 file changed, 1 insertion(+) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js index a7730a307ce4..5e1716196990 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js @@ -49,6 +49,7 @@ hqDefine("cloudcare/js/formplayer/menus/api", [ $.when(AppsAPI.getAppEntities()).done(function (appCollection) { const app = appCollection.find(function (app) { + // Prevents breaking if a web apps session spans pre and post deploy. Can remove post deploy. if (app.id && app.id === params.appId) { return app; } From 6514a2b493270d989d3904e6c06a58f878f66633 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Thu, 22 Aug 2024 10:13:39 -0400 Subject: [PATCH 4/9] clean up with consts --- .../cloudcare/static/cloudcare/js/formplayer/menus/api.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js index 5e1716196990..3d88d5b2b1d6 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js @@ -49,14 +49,15 @@ hqDefine("cloudcare/js/formplayer/menus/api", [ $.when(AppsAPI.getAppEntities()).done(function (appCollection) { const app = appCollection.find(function (app) { + const currCopyOf = app.get('copy_of'); // Prevents breaking if a web apps session spans pre and post deploy. Can remove post deploy. if (app.id && app.id === params.appId) { return app; } - if (app.get('copy_of') && app.get('copy_of') === params.appId) { + if (currCopyOf && currCopyOf === params.appId) { return app; } - if (app.get('copy_of') && (app.get('copy_of') === params.copyOf)) { + if (currCopyOf && (currCopyOf === params.copyOf)) { return app; } }); @@ -73,8 +74,9 @@ hqDefine("cloudcare/js/formplayer/menus/api", [ } } let appId = params.appId; + const copyOf = app.get('copy_of'); if (!params.preview) { - if (app.get('copy_of') && app.get('copy_of') === params.appId) { + if (copyOf && copyOf === params.appId) { appId = app.id; } } From f88b6a7ceb5ce33192c93231635cbd3959db5938 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Thu, 22 Aug 2024 10:39:03 -0400 Subject: [PATCH 5/9] don't create var in preview mode --- .../apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js index 3d88d5b2b1d6..0c678a4327f7 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js @@ -74,8 +74,8 @@ hqDefine("cloudcare/js/formplayer/menus/api", [ } } let appId = params.appId; - const copyOf = app.get('copy_of'); if (!params.preview) { + const copyOf = app.get('copy_of'); if (copyOf && copyOf === params.appId) { appId = app.id; } From 3156efc931ccd7c7ab0fe0ff466c125637c9bf64 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Tue, 27 Aug 2024 09:55:45 -0400 Subject: [PATCH 6/9] rename var --- .../cloudcare/static/cloudcare/js/formplayer/menus/api.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js index 0c678a4327f7..73ac467415b7 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/api.js @@ -49,15 +49,15 @@ hqDefine("cloudcare/js/formplayer/menus/api", [ $.when(AppsAPI.getAppEntities()).done(function (appCollection) { const app = appCollection.find(function (app) { - const currCopyOf = app.get('copy_of'); + const currPrimaryAppId = app.get('copy_of'); // Prevents breaking if a web apps session spans pre and post deploy. Can remove post deploy. if (app.id && app.id === params.appId) { return app; } - if (currCopyOf && currCopyOf === params.appId) { + if (currPrimaryAppId && currPrimaryAppId === params.appId) { return app; } - if (currCopyOf && (currCopyOf === params.copyOf)) { + if (currPrimaryAppId && (currPrimaryAppId === params.copyOf)) { return app; } }); From d303b3d585363ac9679c517d32141fd63a8e7111 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Tue, 27 Aug 2024 15:10:57 -0400 Subject: [PATCH 7/9] find correct app if appId url param is the primary/canonical app id --- .../static/cloudcare/js/formplayer/apps/api.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js index 2bbe4aac018f..13c59590e078 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js @@ -59,7 +59,17 @@ hqDefine("cloudcare/js/formplayer/apps/api", [ return null; } var appCollection = Collections(apps); - return appCollection.get(id); + let fetchedApp = appCollection.get(id); + if (!appCollection.get(id)) { + for (let currApp of appCollection.models) { + if (currApp.get("copy_of") === id) { + fetchedApp = currApp; + break; + } + }; + } + + return fetchedApp; }, }; From b2ebe477b5bc50f110564c91e2ea69558aa36c85 Mon Sep 17 00:00:00 2001 From: robert-costello Date: Tue, 27 Aug 2024 15:18:18 -0400 Subject: [PATCH 8/9] lint --- .../apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js index 13c59590e078..65d914e2d9e2 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js @@ -66,7 +66,7 @@ hqDefine("cloudcare/js/formplayer/apps/api", [ fetchedApp = currApp; break; } - }; + } } return fetchedApp; From ee7dd82f37b8d4a70edb1a53604e9d4f3d59eb1b Mon Sep 17 00:00:00 2001 From: robert-costello Date: Tue, 27 Aug 2024 16:21:10 -0400 Subject: [PATCH 9/9] reformat search --- .../cloudcare/static/cloudcare/js/formplayer/apps/api.js | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js index 65d914e2d9e2..c1ee0e77fae8 100644 --- a/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js +++ b/corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js @@ -60,13 +60,8 @@ hqDefine("cloudcare/js/formplayer/apps/api", [ } var appCollection = Collections(apps); let fetchedApp = appCollection.get(id); - if (!appCollection.get(id)) { - for (let currApp of appCollection.models) { - if (currApp.get("copy_of") === id) { - fetchedApp = currApp; - break; - } - } + if (!fetchedApp) { + fetchedApp = appCollection.models.find(currApp => currApp.get("copy_of") === id); } return fetchedApp;