X-Git-Url: http://these/git/?a=blobdiff_plain;f=src%2Fshared%2Fcomponents%2Fsearch.tsx;h=99b180356b87c5ab89f789a795c49c81f9ef8645;hb=53c3cfeade90150b07431386745a24aa699a25ec;hp=c62c7a98413542d7220ee7c875579927bb5ad332;hpb=72b4d14b47dd8501597b15cc0cf5713ff86aaca9;p=lemmy-ui.git diff --git a/src/shared/components/search.tsx b/src/shared/components/search.tsx index c62c7a9..99b1803 100644 --- a/src/shared/components/search.tsx +++ b/src/shared/components/search.tsx @@ -1,7 +1,31 @@ +import { + commentsToFlatNodes, + communityToChoice, + enableDownvotes, + enableNsfw, + fetchCommunities, + fetchUsers, + getUpdatedSearchId, + myAuth, + personToChoice, + setIsoData, + showLocal, +} from "@utils/app"; +import { restoreScrollPosition, saveScrollPosition } from "@utils/browser"; +import { + capitalizeFirstLetter, + debounce, + getIdFromString, + getPageFromString, + getQueryParams, + getQueryString, + numToSI, +} from "@utils/helpers"; +import type { QueryParams } from "@utils/types"; +import { Choice, RouteDataResponse } from "@utils/types"; import type { NoOptionI18nKeys } from "i18next"; import { Component, linkEvent } from "inferno"; import { - CommentResponse, CommentView, CommunityView, GetCommunity, @@ -13,7 +37,6 @@ import { ListCommunitiesResponse, ListingType, PersonView, - PostResponse, PostView, ResolveObject, ResolveObjectResponse, @@ -21,45 +44,11 @@ import { SearchResponse, SearchType, SortType, - UserOperation, - wsJsonToRes, - wsUserOp, } from "lemmy-js-client"; -import { Subscription } from "rxjs"; -import { i18n } from "../i18next"; +import { fetchLimit } from "../config"; import { CommentViewType, InitialFetchRequest } from "../interfaces"; -import { WebSocketService } from "../services"; -import { - Choice, - QueryParams, - WithPromiseKeys, - capitalizeFirstLetter, - commentsToFlatNodes, - communityToChoice, - createCommentLikeRes, - createPostLikeFindRes, - debounce, - enableDownvotes, - enableNsfw, - fetchCommunities, - fetchLimit, - fetchUsers, - getIdFromString, - getPageFromString, - getQueryParams, - getQueryString, - getUpdatedSearchId, - myAuth, - numToSI, - personToChoice, - restoreScrollPosition, - saveScrollPosition, - setIsoData, - showLocal, - toast, - wsClient, - wsSubscribe, -} from "../utils"; +import { FirstLoadService, I18NextService } from "../services"; +import { HttpService, RequestState } from "../services/HttpService"; import { CommentNodes } from "./comment/comment-nodes"; import { HtmlTags } from "./common/html-tags"; import { Spinner } from "./common/icon"; @@ -81,28 +70,29 @@ interface SearchProps { page: number; } -interface SearchData { - communityResponse?: GetCommunityResponse; - listCommunitiesResponse?: ListCommunitiesResponse; - creatorDetailsResponse?: GetPersonDetailsResponse; - searchResponse?: SearchResponse; - resolveObjectResponse?: ResolveObjectResponse; -} +type SearchData = RouteDataResponse<{ + communityResponse: GetCommunityResponse; + listCommunitiesResponse: ListCommunitiesResponse; + creatorDetailsResponse: GetPersonDetailsResponse; + searchResponse: SearchResponse; + resolveObjectResponse: ResolveObjectResponse; +}>; type FilterType = "creator" | "community"; interface SearchState { - searchResponse?: SearchResponse; - communities: CommunityView[]; - creatorDetails?: GetPersonDetailsResponse; - searchLoading: boolean; - searchCommunitiesLoading: boolean; - searchCreatorLoading: boolean; + searchRes: RequestState; + resolveObjectRes: RequestState; + creatorDetailsRes: RequestState; + communitiesRes: RequestState; + communityRes: RequestState; siteRes: GetSiteResponse; searchText?: string; - resolveObjectResponse?: ResolveObjectResponse; communitySearchOptions: Choice[]; creatorSearchOptions: Choice[]; + searchCreatorLoading: boolean; + searchCommunitiesLoading: boolean; + isIsomorphic: boolean; } interface Combined { @@ -191,15 +181,15 @@ const Filter = ({ loading: boolean; }) => { return ( -
-