Files
discord-decomp/modules/search/managers/SearchTabsFetchManager.tsx
T
2026-11-01 12:12:55 +02:00

69 lines
2.7 KiB
TypeScript

// Metro module 10111 (f10112).
import _objectWithoutProperties from "../../../_bundle/_objectWithoutProperties";
import { SEARCH_FILTERS_BY_TAB, SEARCH_QUERY_BY_SEARCH_FILTER, SEARCH_QUERY_DEFAULT_FILTERS } from "../SearchConstants";
import { SearchTypes } from "../../../Constants";
import { AbstractSearchFetchManager } from "./AbstractSearchFetchManager";
import { SearchTabFetcherImpl } from "../SearchFetcher";
const _excluded = ["include_nsfw", "channel_id"];
class SearchTabsFetchManager extends AbstractSearchFetchManager {
createRequestPayload({ searchQuery, searchTabs, getLimit, pagination, trackExactTotalHits }) {
const { include_nsfw, channel_id } = searchQuery;
let c17706_2 = _objectWithoutProperties(searchQuery, _excluded);
const r14 = {
include_nsfw,
channel_ids: channel_id,
tabs: {},
track_exact_total_hits: trackExactTotalHits
};
let c17706_3 = r14;
searchTabs.forEach((searchTab) => {
const limit = getLimit(searchTab);
const r3 = SEARCH_FILTERS_BY_TAB[searchTab];
c17706_3.tabs[searchTab] = {
...SEARCH_QUERY_DEFAULT_FILTERS,
...r3 != null ? SEARCH_QUERY_BY_SEARCH_FILTER[r3] : {},
...c17706_2,
...pagination,
limit
};
});
return r14;
}
createWithPayload(a0) {
const { searchContext, searchQuery } = a0;
const requestPayload = this.createRequestPayload({
searchQuery,
searchTabs: a0.searchTabs,
getLimit: a0.getLimit,
pagination: a0.pagination,
trackExactTotalHits: a0.trackExactTotalHits
});
const type = searchContext.type;
if (SearchTypes.GUILD !== type && SearchTypes.GUILD_CHANNEL !== type && SearchTypes.THREAD !== type) {
if (SearchTypes.CHANNEL === type) {
return new SearchTabFetcherImpl(searchContext.channelId, searchContext.type, searchQuery, requestPayload);
}
if (SearchTypes.DMS === type) {
return new SearchTabFetcherImpl(searchContext.type, searchContext.type, searchQuery, requestPayload);
}
throw new Error(`[SearchFetchManager] Unsupported search context type: ${searchContext.type}`);
}
return new SearchTabFetcherImpl(searchContext.guildId, searchContext.type, searchQuery, requestPayload);
}
create({ id, searchContext, searchQuery, searchTabs, getLimit: getLimit2, pagination: pagination2, trackExactTotalHits }) {
this.cancel(id);
const withPayload = this.createWithPayload({
searchContext,
searchQuery,
searchTabs,
getLimit: getLimit2,
pagination: pagination2,
trackExactTotalHits
});
this.set(id, withPayload);
return withPayload;
}
}
const searchTabsFetchManager = new SearchTabsFetchManager();
export default searchTabsFetchManager;