From eb4dfc2f25e5a885ef5a6da32c85c6c941a51b78 Mon Sep 17 00:00:00 2001
From: Tom Robinson <tlrobinson@gmail.com>
Date: Wed, 6 Jun 2018 14:00:40 -0700
Subject: [PATCH] Fix questions/card entity type issue

---
 frontend/src/metabase/components/CollectionLanding.jsx | 6 ++----
 frontend/src/metabase/entities/search.js               | 8 ++++++--
 2 files changed, 8 insertions(+), 6 deletions(-)

diff --git a/frontend/src/metabase/components/CollectionLanding.jsx b/frontend/src/metabase/components/CollectionLanding.jsx
index db9b7a0e67c..6bf25ce2489 100644
--- a/frontend/src/metabase/components/CollectionLanding.jsx
+++ b/frontend/src/metabase/components/CollectionLanding.jsx
@@ -3,6 +3,7 @@ import { Box, Flex, Subhead, Truncate } from "rebass";
 import { t } from "c-3po";
 import { connect } from "react-redux";
 import { withRouter } from "react-router";
+import _ from "underscore";
 
 import Question from "metabase/entities/questions";
 import Dashboard from "metabase/entities/dashboards";
@@ -117,10 +118,7 @@ class DefaultLanding extends React.Component {
                   return <CollectionEmptyState />;
                 }
 
-                console.log(items);
-
-                const pinned = items.filter(i => i.collection_position);
-                const other = items.filter(i => !i.collection_position);
+                const [pinned, other] = _.partition(items, i => i.collection_position != null);
 
                 return (
                   <Box>
diff --git a/frontend/src/metabase/entities/search.js b/frontend/src/metabase/entities/search.js
index 7661a6689b9..9e1d594d7b3 100644
--- a/frontend/src/metabase/entities/search.js
+++ b/frontend/src/metabase/entities/search.js
@@ -15,6 +15,10 @@ import {
   CollectionsApi,
 } from "metabase/services";
 
+// backend returns type = "card" instead of "question"
+const backendTypeToEntitiesName = object =>
+  object.type === "card" ? "questions" : `${object.type}s`;
+
 export default createEntity({
   name: "search",
   path: "/api/search",
@@ -26,14 +30,14 @@ export default createEntity({
       pulses: PulseSchema,
       collections: CollectionSchema,
     },
-    (object, parent, key) => `${object.type}s`,
+    (object, parent, key) => backendTypeToEntitiesName(object),
   ),
 
   // delegate to the actual object's entity wrapEntity
   wrapEntity(object, dispatch) {
     const entities = require("metabase/entities");
     // NOTE: special case card -> questions
-    const type = object.type === "card" ? "questions" : `${object.type}s`;
+    const type = backendTypeToEntitiesName(object);
     const entity = entities[type];
     return entity.wrapEntity(object, dispatch);
   },
-- 
GitLab