From 6c6f788ef07ea8e406b303e4d192fac641ba005c Mon Sep 17 00:00:00 2001
From: Anton Kulyk <kuliks.anton@gmail.com>
Date: Fri, 20 Jan 2023 09:36:41 +0000
Subject: [PATCH] Avoid dynamic require (#27780)

---
 frontend/src/metabase/entities/revisions.js | 18 ++++++-------
 frontend/src/metabase/entities/search.js    | 30 ++++++++++++++-------
 2 files changed, 29 insertions(+), 19 deletions(-)

diff --git a/frontend/src/metabase/entities/revisions.js b/frontend/src/metabase/entities/revisions.js
index 47fcb0fbc2e..20d79b3c2e6 100644
--- a/frontend/src/metabase/entities/revisions.js
+++ b/frontend/src/metabase/entities/revisions.js
@@ -2,9 +2,10 @@ import { createEntity } from "metabase/lib/entities";
 
 import { GET, POST } from "metabase/lib/api";
 
-const listRevisions = GET("/api/revision");
+import Dashboards from "./dashboards";
+import Questions from "./questions";
 
-const ASSOCIATED_ENTITY_TYPES = ["questions", "dashboards"];
+const listRevisions = GET("/api/revision");
 
 const Revision = createEntity({
   name: "revisions",
@@ -35,14 +36,11 @@ const Revision = createEntity({
   },
 
   actionShouldInvalidateLists(action) {
-    const entities = require("metabase/entities");
-    for (const type of ASSOCIATED_ENTITY_TYPES) {
-      if (entities[type].actionShouldInvalidateLists(action)) {
-        return true;
-      }
-    }
-
-    return action.type === this.actionTypes.INVALIDATE_LISTS_ACTION;
+    return (
+      action.type === this.actionTypes.INVALIDATE_LISTS_ACTION ||
+      Dashboards.actionShouldInvalidateLists(action) ||
+      Questions.actionShouldInvalidateLists(action)
+    );
   },
 });
 
diff --git a/frontend/src/metabase/entities/search.js b/frontend/src/metabase/entities/search.js
index 3d7dc6221eb..4c8c119574e 100644
--- a/frontend/src/metabase/entities/search.js
+++ b/frontend/src/metabase/entities/search.js
@@ -3,11 +3,19 @@ import { createEntity } from "metabase/lib/entities";
 import { GET } from "metabase/lib/api";
 import { entityTypeForObject } from "metabase/lib/schema";
 
-import { ObjectUnionSchema, ENTITIES_SCHEMA_MAP } from "metabase/schema";
+import { ObjectUnionSchema } from "metabase/schema";
 
 import { canonicalCollectionId } from "metabase/collections/utils";
 
-const ENTITIES_TYPES = Object.keys(ENTITIES_SCHEMA_MAP);
+import Bookmarks from "./bookmarks";
+import Collections from "./collections";
+import Dashboards from "./dashboards";
+import Metrics from "./metrics";
+import Pulses from "./pulses";
+import Questions from "./questions";
+import Segments from "./segments";
+import Snippets from "./snippets";
+import SnippetCollections from "./snippet-collections";
 
 const searchList = GET("/api/search");
 const collectionList = GET("/api/collection/:collection/items");
@@ -82,12 +90,16 @@ export default createEntity({
 
   // delegate to each entity's actionShouldInvalidateLists
   actionShouldInvalidateLists(action) {
-    const entities = require("metabase/entities");
-    for (const type of ENTITIES_TYPES) {
-      if (entities[type].actionShouldInvalidateLists(action)) {
-        return true;
-      }
-    }
-    return false;
+    return (
+      Bookmarks.actionShouldInvalidateLists(action) ||
+      Collections.actionShouldInvalidateLists(action) ||
+      Dashboards.actionShouldInvalidateLists(action) ||
+      Metrics.actionShouldInvalidateLists(action) ||
+      Pulses.actionShouldInvalidateLists(action) ||
+      Questions.actionShouldInvalidateLists(action) ||
+      Segments.actionShouldInvalidateLists(action) ||
+      Snippets.actionShouldInvalidateLists(action) ||
+      SnippetCollections.actionShouldInvalidateLists(action)
+    );
   },
 });
-- 
GitLab