From 4c1518a6f3b2b9b71833175bc7afc61cd6a95202 Mon Sep 17 00:00:00 2001
From: Claire <claire.github-309c@sitedethib.com>
Date: Mon, 18 Sep 2023 11:20:09 +0200
Subject: [PATCH] Fix Web UI making duplicate search queries when scrolling
 (#26959)

---
 app/javascript/mastodon/reducers/search.js | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/app/javascript/mastodon/reducers/search.js b/app/javascript/mastodon/reducers/search.js
index 904e35185..72835eb91 100644
--- a/app/javascript/mastodon/reducers/search.js
+++ b/app/javascript/mastodon/reducers/search.js
@@ -14,6 +14,7 @@ import {
   SEARCH_SHOW,
   SEARCH_EXPAND_REQUEST,
   SEARCH_EXPAND_SUCCESS,
+  SEARCH_EXPAND_FAIL,
   SEARCH_HISTORY_UPDATE,
 } from '../actions/search';
 
@@ -54,6 +55,7 @@ export default function search(state = initialState, action) {
       map.set('type', action.searchType);
     });
   case SEARCH_FETCH_FAIL:
+  case SEARCH_EXPAND_FAIL:
     return state.set('isLoading', false);
   case SEARCH_FETCH_SUCCESS:
     return state.withMutations(map => {
@@ -68,10 +70,10 @@ export default function search(state = initialState, action) {
       map.set('isLoading', false);
     });
   case SEARCH_EXPAND_REQUEST:
-    return state.set('type', action.searchType);
+    return state.set('type', action.searchType).set('isLoading', true);
   case SEARCH_EXPAND_SUCCESS:
     const results = action.searchType === 'hashtags' ? ImmutableOrderedSet(fromJS(action.results.hashtags)) : action.results[action.searchType].map(item => item.id);
-    return state.updateIn(['results', action.searchType], list => list.union(results));
+    return state.updateIn(['results', action.searchType], list => list.union(results)).set('isLoading', false);
   case SEARCH_HISTORY_UPDATE:
     return state.set('recent', ImmutableOrderedSet(fromJS(action.recent)));
   default: