From f6e99498d2bc5b3f07e1e2b6f668a1a48de35047 Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Tue, 10 Mar 2020 21:54:49 +0100
Subject: [PATCH 1/4] handle cases where no claim object is present

---
 dist/bundle.es.js             | 31 ++++++++++++---------
 src/redux/selectors/claims.js | 51 +++++++++++++++++++++--------------
 2 files changed, 49 insertions(+), 33 deletions(-)

diff --git a/dist/bundle.es.js b/dist/bundle.es.js
index 39b13cd..7f367b7 100644
--- a/dist/bundle.es.js
+++ b/dist/bundle.es.js
@@ -2406,28 +2406,33 @@ const makeSelectMyStreamUrlsForPage = (page = 1) => reselect.createSelector(sele
 
 const selectMyStreamUrlsCount = reselect.createSelector(selectMyClaimUrisWithoutChannels, channels => channels.length);
 
-const makeSelectResolvedRecommendedContentForUri = (uri, size) => reselect.createSelector(makeSelectClaimForUri(uri), selectResolvedSearchResultsByQuery, makeSelectClaimIsNsfw(uri), (claim, resolvedResultsByQuery, isMature) => {
+const makeSelectResolvedRecommendedContentForUri = (uri, size, claimId, claimName, claimTitle) => reselect.createSelector(makeSelectClaimForUri(uri), selectResolvedSearchResultsByQuery, makeSelectClaimIsNsfw(uri), (claim, resolvedResultsByQuery, isMature) => {
   const atVanityURI = !uri.includes('#');
 
+  let currentUri;
   let recommendedContent;
+  let title;
   if (claim) {
     // always grab full URL - this can change once search returns canonical
-    const currentUri = buildURI({ streamClaimId: claim.claim_id, streamName: claim.name });
-
+    currentUri = buildURI({ streamClaimId: claim.claim_id, streamName: claim.name });
     const { title } = claim.value;
+  } else {
+    // for cases on mobile where the claim may not have been resolved ()
+    currentUri = buildURI({ streamClaimId: claimId, streamName: claimName });
+    title = claimTitle;
+  }
 
-    if (!title) {
-      return;
-    }
+  if (!title) {
+    return;
+  }
 
-    const options = { related_to: claim.claim_id, size, isBackgroundSearch: false };
+  const options = { related_to: claim ? claim.claim_id : claimId, size, isBackgroundSearch: false };
 
-    const searchQuery = getSearchQueryString(title.replace(/\//, ' '), options);
-    let results = resolvedResultsByQuery[searchQuery];
-    if (results) {
-      results = results.filter(result => buildURI({ streamClaimId: result.claimId, streamName: result.name }) !== currentUri);
-      recommendedContent = results;
-    }
+  const searchQuery = getSearchQueryString(claimTitle.replace(/\//, ' '), options);
+  let results = resolvedResultsByQuery[searchQuery];
+  if (results) {
+    results = results.filter(result => buildURI({ streamClaimId: result.claimId, streamName: result.name }) !== currentUri);
+    recommendedContent = results;
   }
 
   return recommendedContent;
diff --git a/src/redux/selectors/claims.js b/src/redux/selectors/claims.js
index f359844..d9b893c 100644
--- a/src/redux/selectors/claims.js
+++ b/src/redux/selectors/claims.js
@@ -678,7 +678,13 @@ export const selectMyStreamUrlsCount = createSelector(
   channels => channels.length
 );
 
-export const makeSelectResolvedRecommendedContentForUri = (uri: string, size: number) =>
+export const makeSelectResolvedRecommendedContentForUri = (
+  uri: string,
+  size: number,
+  claimId: string,
+  claimName: string,
+  claimTitle: string
+) =>
   createSelector(
     makeSelectClaimForUri(uri),
     selectResolvedSearchResultsByQuery,
@@ -686,32 +692,37 @@ export const makeSelectResolvedRecommendedContentForUri = (uri: string, size: nu
     (claim, resolvedResultsByQuery, isMature) => {
       const atVanityURI = !uri.includes('#');
 
+      let currentUri;
       let recommendedContent;
+      let title;
       if (claim) {
         // always grab full URL - this can change once search returns canonical
-        const currentUri = buildURI({ streamClaimId: claim.claim_id, streamName: claim.name });
-
+        currentUri = buildURI({ streamClaimId: claim.claim_id, streamName: claim.name });
         const { title } = claim.value;
+      } else {
+        // for cases on mobile where the claim may not have been resolved ()
+        currentUri = buildURI({ streamClaimId: claimId, streamName: claimName });
+        title = claimTitle;
+      }
 
-        if (!title) {
-          return;
-        }
+      if (!title) {
+        return;
+      }
 
-        const options: {
-          related_to?: string,
-          nsfw?: boolean,
-          isBackgroundSearch?: boolean,
-        } = { related_to: claim.claim_id, size, isBackgroundSearch: false };
+      const options: {
+        related_to?: string,
+        nsfw?: boolean,
+        isBackgroundSearch?: boolean,
+      } = { related_to: claim ? claim.claim_id : claimId, size, isBackgroundSearch: false };
 
-        const searchQuery = getSearchQueryString(title.replace(/\//, ' '), options);
-        let results = resolvedResultsByQuery[searchQuery];
-        if (results) {
-          results = results.filter(
-            result =>
-              buildURI({ streamClaimId: result.claimId, streamName: result.name }) !== currentUri
-          );
-          recommendedContent = results;
-        }
+      const searchQuery = getSearchQueryString(claimTitle.replace(/\//, ' '), options);
+      let results = resolvedResultsByQuery[searchQuery];
+      if (results) {
+        results = results.filter(
+          result =>
+            buildURI({ streamClaimId: result.claimId, streamName: result.name }) !== currentUri
+        );
+        recommendedContent = results;
       }
 
       return recommendedContent;

From c86309884241d0512b39232fb981a0036f5db92d Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Fri, 13 Mar 2020 17:26:31 +0100
Subject: [PATCH 2/4] fix variable

---
 src/redux/selectors/claims.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/redux/selectors/claims.js b/src/redux/selectors/claims.js
index d9b893c..f84fce3 100644
--- a/src/redux/selectors/claims.js
+++ b/src/redux/selectors/claims.js
@@ -715,7 +715,7 @@ export const makeSelectResolvedRecommendedContentForUri = (
         isBackgroundSearch?: boolean,
       } = { related_to: claim ? claim.claim_id : claimId, size, isBackgroundSearch: false };
 
-      const searchQuery = getSearchQueryString(claimTitle.replace(/\//, ' '), options);
+      const searchQuery = getSearchQueryString(title.replace(/\//, ' '), options);
       let results = resolvedResultsByQuery[searchQuery];
       if (results) {
         results = results.filter(

From 91c60558c63c2b59a0ee2cbbf1ed69d10f649a25 Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Fri, 13 Mar 2020 17:32:37 +0100
Subject: [PATCH 3/4] update bundle

---
 dist/bundle.es.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dist/bundle.es.js b/dist/bundle.es.js
index 7f367b7..1c72cf9 100644
--- a/dist/bundle.es.js
+++ b/dist/bundle.es.js
@@ -2428,7 +2428,7 @@ const makeSelectResolvedRecommendedContentForUri = (uri, size, claimId, claimNam
 
   const options = { related_to: claim ? claim.claim_id : claimId, size, isBackgroundSearch: false };
 
-  const searchQuery = getSearchQueryString(claimTitle.replace(/\//, ' '), options);
+  const searchQuery = getSearchQueryString(title.replace(/\//, ' '), options);
   let results = resolvedResultsByQuery[searchQuery];
   if (results) {
     results = results.filter(result => buildURI({ streamClaimId: result.claimId, streamName: result.name }) !== currentUri);

From 84e697079968364fe526020086c8a44f4d2ef391 Mon Sep 17 00:00:00 2001
From: Akinwale Ariwodola <akinwale@gmail.com>
Date: Fri, 13 Mar 2020 17:35:54 +0100
Subject: [PATCH 4/4] get the title properly

---
 dist/bundle.es.js             | 2 +-
 src/redux/selectors/claims.js | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/dist/bundle.es.js b/dist/bundle.es.js
index 1c72cf9..5602bc7 100644
--- a/dist/bundle.es.js
+++ b/dist/bundle.es.js
@@ -2415,7 +2415,7 @@ const makeSelectResolvedRecommendedContentForUri = (uri, size, claimId, claimNam
   if (claim) {
     // always grab full URL - this can change once search returns canonical
     currentUri = buildURI({ streamClaimId: claim.claim_id, streamName: claim.name });
-    const { title } = claim.value;
+    title = claim.value ? claim.value.title : null;
   } else {
     // for cases on mobile where the claim may not have been resolved ()
     currentUri = buildURI({ streamClaimId: claimId, streamName: claimName });
diff --git a/src/redux/selectors/claims.js b/src/redux/selectors/claims.js
index f84fce3..7b0c5dd 100644
--- a/src/redux/selectors/claims.js
+++ b/src/redux/selectors/claims.js
@@ -698,7 +698,7 @@ export const makeSelectResolvedRecommendedContentForUri = (
       if (claim) {
         // always grab full URL - this can change once search returns canonical
         currentUri = buildURI({ streamClaimId: claim.claim_id, streamName: claim.name });
-        const { title } = claim.value;
+        title = claim.value ? claim.value.title : null;
       } else {
         // for cases on mobile where the claim may not have been resolved ()
         currentUri = buildURI({ streamClaimId: claimId, streamName: claimName });