124 lines
4.4 KiB
TypeScript
124 lines
4.4 KiB
TypeScript
// Metro module 9906 (f9907).
|
|
import { useMemo, useState, useCallback, useRef, useEffect, useLayoutEffect } from "react";
|
|
import GatewayConnectionStore from "../gateway/GatewayConnectionStore";
|
|
import AuthenticationStore from "../../stores/AuthenticationStore";
|
|
import FrecencyStore from "../../stores/FrecencyStore";
|
|
import { ALLOWED_TYPES } from "./ShareConstants";
|
|
import { getQuickSwitcherOptions } from "../quickswitcher/QuickSwitcherActionCreators";
|
|
import { useStateFromStores } from "../../_bundle/Module589";
|
|
import useAutocompleter from "./useAutocompleter";
|
|
import { useFrecencySettings } from "../user_settings/FrecencyUserSettingsHooks";
|
|
import formatResults from "./formatResults";
|
|
export function makeAutocompleterSearchParams(a0) {
|
|
const quickSwitcherOptions = getQuickSwitcherOptions(a0);
|
|
const { query: query2, queryMode: queryMode2 } = quickSwitcherOptions;
|
|
let resultTypes = ALLOWED_TYPES;
|
|
const r14 = queryMode2 != null && ALLOWED_TYPES.includes(queryMode2);
|
|
let queryMode3 = null;
|
|
if (r14) {
|
|
const r16 = [queryMode2];
|
|
queryMode3 = queryMode2;
|
|
resultTypes = r16;
|
|
}
|
|
return {
|
|
query: query2,
|
|
queryMode: queryMode3,
|
|
resultTypes
|
|
};
|
|
}
|
|
export function useShareSearchResults({ targetDestination, selectedDestinations, originDestination, channelFilter, includeMissingDMs: includeMissingDMs2 = false }) {
|
|
let search, query, results, state, setState, queryMode, ref, ref2, current, stateFromStores2, stateFromStores3, hasQuery;
|
|
const includeMissingDMs = includeMissingDMs2;
|
|
search = void 0;
|
|
query = void 0;
|
|
results = void 0;
|
|
state = void 0;
|
|
setState = void 0;
|
|
queryMode = void 0;
|
|
ref = void 0;
|
|
ref2 = void 0;
|
|
current = void 0;
|
|
stateFromStores2 = void 0;
|
|
stateFromStores3 = void 0;
|
|
hasQuery = void 0;
|
|
const stateFromStores = useStateFromStores([AuthenticationStore], () => AuthenticationStore.getId());
|
|
const autocompleter = useAutocompleter(useMemo(() => ({
|
|
searchOptions: {
|
|
blacklist: new Set([`user:${stateFromStores}`]),
|
|
frecencyBoosters: true,
|
|
userFilters: null
|
|
}
|
|
}), [stateFromStores]));
|
|
search = autocompleter.search;
|
|
query = autocompleter.query;
|
|
results = autocompleter.results;
|
|
const quickSwitcherOptions = getQuickSwitcherOptions("");
|
|
const { query: query2, queryMode: queryMode2 } = quickSwitcherOptions;
|
|
let resultTypes = ALLOWED_TYPES;
|
|
const r43 = queryMode2 != null && ALLOWED_TYPES.includes(queryMode2);
|
|
let queryMode3 = null;
|
|
if (r43) {
|
|
const r45 = [queryMode2];
|
|
queryMode3 = queryMode2;
|
|
resultTypes = r45;
|
|
}
|
|
[state, setState] = useState({
|
|
query: query2,
|
|
queryMode: queryMode3,
|
|
resultTypes
|
|
});
|
|
const callback = useCallback((a0) => {
|
|
const quickSwitcherOptions = getQuickSwitcherOptions(a0);
|
|
const { query: query2, queryMode: queryMode2 } = quickSwitcherOptions;
|
|
let resultTypes = ALLOWED_TYPES;
|
|
const r16 = queryMode2 != null && ALLOWED_TYPES.includes(queryMode2);
|
|
let queryMode3 = null;
|
|
if (r16) {
|
|
const r18 = [queryMode2];
|
|
queryMode3 = queryMode2;
|
|
resultTypes = r18;
|
|
}
|
|
return setState({
|
|
query: query2,
|
|
queryMode: queryMode3,
|
|
resultTypes
|
|
});
|
|
}, [setState]);
|
|
queryMode = state.queryMode;
|
|
ref = useRef(null);
|
|
ref2 = useRef(selectedDestinations);
|
|
current = query === ref.current ? ref2.current : selectedDestinations;
|
|
useEffect(() => {
|
|
if (query !== ref.current) {
|
|
ref2.current = selectedDestinations;
|
|
}
|
|
ref.current = query;
|
|
}, [query, selectedDestinations]);
|
|
useLayoutEffect(() => {
|
|
search({
|
|
query: state.query,
|
|
resultTypes: state.resultTypes
|
|
});
|
|
}, [search, state]);
|
|
useFrecencySettings();
|
|
stateFromStores2 = useStateFromStores([FrecencyStore], () => FrecencyStore.getFrequentlyWithoutFetchingLatest());
|
|
stateFromStores3 = useStateFromStores([GatewayConnectionStore], () => GatewayConnectionStore.isConnected());
|
|
hasQuery = query !== "";
|
|
return {
|
|
results: useMemo(() => formatResults({
|
|
results,
|
|
hasQuery,
|
|
queryMode,
|
|
targetDestination,
|
|
frequentChannels: stateFromStores2,
|
|
selectedDestinations,
|
|
pinnedDestinations: current,
|
|
originDestination,
|
|
channelFilter,
|
|
includeMissingDMs,
|
|
isConnected: stateFromStores3
|
|
}), [results, hasQuery, queryMode, targetDestination, stateFromStores2, selectedDestinations, current, originDestination, channelFilter, includeMissingDMs, stateFromStores3]),
|
|
updateSearchText: callback
|
|
};
|
|
}
|