This commit is contained in:
janisslsm committed 2026-11-01 12:12:55 +02:00
1 parent 1781d25a15
commit 732c0ad767
33051 files changed
+2591613 -3019689

No files matched your search

@@ -0,0 +1,213 @@
// Metro module 15464 (f15465).
import * as Module19 from "react";
import { forwardRef, useMemo, useRef, useImperativeHandle, useEffect, useCallback } from "react";
import { View } from "react-native";
import ChannelStore from "../../../../../stores/ChannelStore";
import GuildStore from "../../../../../stores/GuildStore";
import RelationshipStore from "../../../../../stores/RelationshipStore";
import UserStore from "../../../../../stores/UserStore";
import SearchQueryStore from "../../stores/SearchQueryStore";
import { SEARCH_BAR_HEIGHT, SearchQueryTagTypes } from "../../../SearchConstants";
import { SearchFilterAddLocations } from "../../tracking/TrackingConstants";
import { SearchTypes } from "../../../../../Constants";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../../_bundle/Module712";
import { intl, t } from "../../../../../intl/index.native";
import { computeChannelName } from "../../../../channel/useChannelName";
import { useStateFromStores } from "../../../../../_bundle/Module589";
import MobileVisualRefreshExperiment from "../../../../themes/experiments/MobileVisualRefreshExperiment";
import { useFontScale } from "../../../../screen/native/useFontScale";
import SearchPlatformUtils, { toSearchBarTag } from "../../SearchPlatformUtils";
import SearchPlatformActionCreators from "../../SearchPlatformActionCreators";
import { AccessibilityAnnouncer } from "../../../../../_bundle/Module3902";
import Tracking from "../../tracking/Tracking";
import { isValidFilterAnswerForSubmit } from "../../../tokens/SearchTokens";
import TagListInput_native from "../../../../../design/components/TagListInput/native/TagListInput.native";
import SearchBarActivityIcon from "./SearchBarActivityIcon";
const useStyles = createStyles((a0, a1) => ({
searchBar: {
...a0 ? {
minHeight: a1 + 2
} : {
borderRadius: Module712.radii.round,
minHeight: a1
}
},
icon: {
width: 32,
minHeight: a1,
justifyContent: "center",
zIndex: 10
}
}));
const r50 = Module19.memo(forwardRef(function({ searchContext, setSuggestionsDismissed }, a1) {
let ref;
let searchContext2;
ref = void 0;
const styles = useStyles(MobileVisualRefreshExperiment("SearchBar"), SEARCH_BAR_HEIGHT * Math.min(2, useFontScale()));
const stateFromStores = useStateFromStores([SearchQueryStore], () => SearchQueryStore.getTags(searchContext), [searchContext]);
const memo2 = useMemo(() => stateFromStores.map(toSearchBarTag), [stateFromStores]);
const memo = useMemo(() => {
if (stateFromStores.length !== 0) {
return intl.formatToPlainString(t["0zoRaK"], {
text: stateFromStores.map((stateFromStore) => stateFromStore.text).join(", ")
});
}
}, [stateFromStores]);
ref = useRef(null);
searchContext2 = searchContext;
const stateFromStores2 = useStateFromStores([SearchQueryStore], () => {
let r89;
const channelIds = SearchQueryStore.getChannelIds(searchContext2);
const type = searchContext2.type;
if (SearchTypes.GUILD_CHANNEL !== type && SearchTypes.GUILD !== type) {
if (SearchTypes.CHANNEL === type) {
const channel = ChannelStore.getChannel(searchContext2.channelId);
return channel == null ? intl.string(t["5h0QOP"]) : intl.formatToPlainString(t.LDpotA, {
guildName: computeChannelName(channel, UserStore, RelationshipStore, true)
});
}
if (SearchTypes.DMS === type) {
return intl.string(t.m7OrlR);
}
return intl.string(t["5h0QOP"]);
}
if (channelIds.size === 0) {
const name = GuildStore.getGuild(searchContext2.guildId)?.name;
r89 = name == null ? intl.string(t["5h0QOP"]) : intl.formatToPlainString(t.LDpotA, {
guildName: name
});
} else {
r89 = intl.string(t["5h0QOP"]);
}
return r89;
}, [searchContext]);
useImperativeHandle(a1, () => ({
setText: (a0) => {
const current = ref.current;
return current == null ? void 0 : current.setText(a0);
},
getText: () => {
const current = ref.current;
let r6 = current == null ? void 0 : current.getText();
if (r6 == null) {
r6 = "";
}
return r6;
},
blur: () => {
const current = ref.current;
return current == null ? void 0 : current.blur();
},
focus: () => {
const current = ref.current;
return current == null ? void 0 : current.focus();
},
isFocused: () => {
const current = ref.current;
let r6 = current == null ? void 0 : current.isFocused();
if (r6 == null) {
r6 = false;
}
return r6;
},
measure: (a0) => {
const current = ref.current;
return current == null ? void 0 : current.measure(a0);
},
measureInWindow: (a0) => {
const current = ref.current;
return current == null ? void 0 : current.measureInWindow(a0);
},
measureLayout: (a0, a1, a2) => {
const current = ref.current;
return current == null ? void 0 : current.measureLayout(a0, a1, a2);
}
}));
useEffect(() => SearchPlatformUtils.subscribeTextInputValue(searchContext, (a0, a1, a2) => {
if (!(a2 ? a2 : a0 == null)) {
const current = ref.current;
if (current != null) {
current.setText(a0);
}
}
}), [searchContext]);
const callback = useCallback((a0) => {
let c28031_0 = a0;
if (SearchQueryStore.getTextInputValue(searchContext) !== a0) {
SearchPlatformActionCreators.updateSearchQuery(searchContext, (a0) => {
a0.setTextInputValue(c28031_0, true);
});
SearchPlatformUtils.syncAutocompleteDebounced(searchContext);
if (!SearchQueryStore.isAutocompleteVisible(searchContext)) {
if (SearchQueryStore.isInitialSearchQuery(searchContext)) {
SearchPlatformUtils.fetchInitialMessages(searchContext);
} else {
SearchPlatformUtils.fetchInitialMessagesDebounced(searchContext);
}
}
}
}, [searchContext]);
const callback2 = useCallback((a0) => {
let c28032_0 = a0;
const r10 = SearchQueryStore.getTags(searchContext)[a0];
let c28032_1 = r10;
if (r10 != null) {
AccessibilityAnnouncer.announce(intl.formatToPlainString(t.srlxB8, {
text: r10.text
}));
if (r10.type === SearchQueryTagTypes.COMPLETE) {
Tracking.trackSearchFilterRemove({
searchContext,
searchTokenType: r10.searchTokenType,
isDefault: r10.location === SearchFilterAddLocations.CLIENT_AUTO_ADD
});
}
SearchPlatformActionCreators.updateSearchQuery(searchContext, (a0) => {
a0.removeTag(c28032_0);
if (c28032_1.type === SearchQueryTagTypes.PREFIX) {
a0.restoreDraftTextInputValue();
}
});
SearchPlatformUtils.syncAutocompleteDebounced(searchContext);
const queryString = SearchQueryStore.getQueryString(searchContext);
const searchResultsQuery = SearchQueryStore.getSearchResultsQuery(searchContext);
const isInitialSearchQuery = SearchQueryStore.isInitialSearchQuery(searchContext);
if (queryString !== searchResultsQuery) {
if (isInitialSearchQuery) {
SearchPlatformUtils.fetchInitialMessages(searchContext);
} else {
SearchPlatformUtils.fetchInitialMessagesDebounced(searchContext);
}
}
}
}, [searchContext]);
const memo3 = useMemo(() => () => {
setSuggestionsDismissed();
const prefixTag = SearchQueryStore.getPrefixTag(searchContext);
const text = SearchQueryStore.getTextInputValue(searchContext).trim();
if (prefixTag != null && text !== "" && isValidFilterAnswerForSubmit(prefixTag.searchTokenType, text)) {
SearchPlatformActionCreators.updateSearchQuery(searchContext, (a0) => {
a0.setTextInputValue("");
a0.addTag({
type: SearchQueryTagTypes.ANSWER,
text
});
a0.restoreDraftTextInputValue();
});
Tracking.trackSearchFilterAdd({
searchContext,
searchTokenType: prefixTag.searchTokenType,
location: prefixTag.location
});
}
if (!SearchQueryStore.isQueryStringEmpty(searchContext)) {
SearchPlatformActionCreators.updateSearchQuery(searchContext, (a0) => a0.markExplicitSearchSubmitted());
SearchPlatformUtils.fetchInitialMessages(searchContext);
}
}, [searchContext, setSuggestionsDismissed]);
return <TagListInput_native ref={ref} accessibilityHint={memo} autoFocus defaultValue={SearchQueryStore.getTextInputValue(searchContext)} style={styles.searchBar} tags={memo2} icon={<View style={styles.icon}>
<SearchBarActivityIcon searchContext={searchContext} />
</View>} onChangeText={callback} onRemove={callback2} placeholder={stateFromStores2} onSubmitEditing={memo3} leadingFade horizontal autoClearInputOnTagAdd={false} />;
}));
export default r50;
@@ -0,0 +1,104 @@
// Metro module 15465 (f15466).
import { memo, useEffect } from "react";
import { ActivityIndicator } from "react-native";
import SearchMessageStore from "../../../SearchMessageStore";
import SearchQueryStore from "../../stores/SearchQueryStore";
import { SEARCH_MESSAGE_TAB_SENTINEL } from "../../../SearchConstants";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../../_bundle/Module712";
import { useStateFromStores } from "../../../../../_bundle/defaultAreStatesEqual";
import { getSearchTabFetchId } from "../../../SearchUtils";
import * as _ReanimatedRexport from "../../../../reanimated/ReanimatedRexport";
import ReanimatedRexport, { useSharedValue, useAnimatedStyle } from "../../../../reanimated/ReanimatedRexport";
import { withTiming } from "../../../../../design/animation/reanimated/timing/timing";
import { MagnifyingGlassIcon } from "../../../../../design/components/Icon/native/redesign/generated/MagnifyingGlassIcon";
import { isAndroid } from "../../../../../utils/PlatformUtils";
const useStyles = createStyles({
spinnerColor: {
color: Module712.colors.INTERACTIVE_TEXT_DEFAULT
},
spinner: {
width: 18,
height: 18,
alignItems: "center",
justifyContent: "center",
position: "absolute"
},
icon: {
marginLeft: 12,
marginRight: 4
}
});
let c11001_12 = {
START: 0,
0: "START",
END: 1,
1: "END"
};
const ANIMATION_STATE_INPUT = [c11001_12.START, c11001_12.END];
const __initData = {
code: "function SearchBarActivityIconTsx1(){const{interpolate,fadeAnimationState,ANIMATION_STATE_INPUT}=this.__closure;return{opacity:interpolate(fadeAnimationState.get(),ANIMATION_STATE_INPUT,[0,0.5])};}"
};
const __initData2 = {
code: "function SearchBarActivityIconTsx2(){const{interpolate,fadeAnimationState,ANIMATION_STATE_INPUT}=this.__closure;return{opacity:interpolate(fadeAnimationState.get(),ANIMATION_STATE_INPUT,[1,0])};}"
};
const r54 = memo(function SearchBarActivityIcon(props) {
let sharedValue;
const searchContext = props.searchContext;
sharedValue = void 0;
const styles = useStyles();
const stateFromStores = useStateFromStores([SearchQueryStore, SearchMessageStore], () => {
const isInitialFetchComplete = SearchMessageStore.getIsInitialFetchComplete(getSearchTabFetchId(searchContext, SEARCH_MESSAGE_TAB_SENTINEL, SearchQueryStore.getSearchResultsQuery(searchContext)));
let r18 = !isInitialFetchComplete;
const isInitialSearchQuery = SearchQueryStore.isInitialSearchQuery(searchContext);
const isAutocompleteVisible = SearchQueryStore.isAutocompleteVisible(searchContext);
if (!isInitialFetchComplete) {
r18 = !isInitialSearchQuery;
}
if (r18) {
r18 = !isAutocompleteVisible;
}
return r18;
}, [searchContext]);
sharedValue = useSharedValue(c11001_12.START);
useEffect(() => {
if (stateFromStores) {
sharedValue.set(withTiming(c11001_12.END));
} else {
sharedValue.set(withTiming(c11001_12.START));
}
}, [stateFromStores, sharedValue]);
const E = function E() {
return {
opacity: _ReanimatedRexport.interpolate(sharedValue.get(), ANIMATION_STATE_INPUT, [0, 0.5])
};
};
E.__closure = {
interpolate: _ReanimatedRexport.interpolate,
fadeAnimationState: sharedValue,
ANIMATION_STATE_INPUT
};
E.__workletHash = 12880513119188;
E.__initData = __initData;
const animatedStyle = useAnimatedStyle(E);
const v = function v() {
return {
opacity: _ReanimatedRexport.interpolate(sharedValue.get(), ANIMATION_STATE_INPUT, [1, 0])
};
};
v.__closure = {
interpolate: _ReanimatedRexport.interpolate,
fadeAnimationState: sharedValue,
ANIMATION_STATE_INPUT
};
v.__workletHash = 11061952032557;
v.__initData = __initData2;
return <>
{[<ReanimatedRexport.View style={animatedStyle}>
<ActivityIndicator color={styles.spinnerColor.color} style={[styles.icon, styles.spinner]} />
</ReanimatedRexport.View>, <ReanimatedRexport.View style={useAnimatedStyle(v)}>
<MagnifyingGlassIcon style={styles.icon} size={isAndroid() ? "sm" : "xs"} color="interactive-text-default" />
</ReanimatedRexport.View>]}
</>;
});
export default r54;
@@ -0,0 +1,37 @@
// Metro module 15474 (f15475).
import { memo } from "react";
import { View } from "react-native";
import SearchQueryStore from "../../stores/SearchQueryStore";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import AppFreezer from "../../../../panels/morphable/native/AppFreezer";
import { useStateFromStores } from "../../../../../_bundle/Module589";
import SearchTabsLayout from "../tabs/SearchTabsLayout";
import AutocompleteScreen from "./autocomplete/AutocompleteScreen";
let useStyles;
const SearchFreezeContainer = function SearchFreezeContainer(props) {
const { visible, children, containerStyle } = props;
const styles = useStyles();
return <AppFreezer manualFreeze={!visible} placeholder={null}>
<View style={[containerStyle, visible ? styles.visible : styles.hidden]} aria-hidden={!visible}>{children}</View>
</AppFreezer>;
};
useStyles = createStyles({
hidden: {
opacity: 0
},
visible: {
flex: 1
}
});
const r35 = memo(function({ searchContext, containerStyle, width }) {
const stateFromStores = useStateFromStores([SearchQueryStore], () => SearchQueryStore.isAutocompleteVisible(searchContext), [searchContext]);
return <>
<SearchFreezeContainer visible={!stateFromStores} containerStyle={containerStyle}>
<SearchTabsLayout searchContext={searchContext} width={width} />
</SearchFreezeContainer>
<SearchFreezeContainer visible={stateFromStores} containerStyle={containerStyle}>
<AutocompleteScreen searchContext={searchContext} />
</SearchFreezeContainer>
</>;
});
export default r35;
@@ -0,0 +1,54 @@
// Metro module 15463 (f15464).
import { memo, forwardRef } from "react";
import { View } from "react-native";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import SearchBar from "./SearchBar";
import SearchFilterSuggestions from "./autocomplete/SearchFilterSuggestions";
import SearchFilterButton from "./autocomplete/SearchFilterButton";
const useStyles = createStyles({
header: {
flexDirection: "row",
alignItems: "center",
paddingLeft: 16,
zIndex: 10
},
headerWithBackButton: {
paddingLeft: 0
},
headerSearch: {
flex: 1,
flexGrow: 1
},
headerControlsRight: {
paddingRight: 16,
paddingLeft: 12
},
suggestionsAnchor: {
height: 0
},
suggestions: {
position: "absolute",
left: 0,
right: -50,
top: 8
},
suggestionsWithBackButton: {
left: -28
}
});
const r38 = memo(forwardRef(function({ searchContext, onSuggestionsLayoutMesure, suggestionsDismissed, setSuggestionsDismissed, backButton }, a1) {
const styles = useStyles();
return <View style={[styles.header, backButton != null && styles.headerWithBackButton]}>
{backButton}
<View style={styles.headerSearch}>
<SearchBar ref={a1} searchContext={searchContext} setSuggestionsDismissed={setSuggestionsDismissed} />
<View style={styles.suggestionsAnchor}>
<SearchFilterSuggestions searchContext={searchContext} onLayoutMeasure={onSuggestionsLayoutMesure} dismissed={suggestionsDismissed} containerStyle={[styles.suggestions, backButton != null && styles.suggestionsWithBackButton]} />
</View>
</View>
<View style={styles.headerControlsRight}>
<SearchFilterButton searchContext={searchContext} />
</View>
</View>;
}));
export default r38;
@@ -0,0 +1,259 @@
// Metro module 15559 (f15560).
import * as Module19 from "react";
import { useState, useCallback, useEffect, useMemo } from "react";
import ChannelStore from "../../../../../../stores/ChannelStore";
import RelationshipStore from "../../../../../../stores/RelationshipStore";
import UserStore from "../../../../../../stores/UserStore";
import SearchAutocompleteStore from "../../../../SearchAutocompleteStore";
import SearchQueryStore from "../../../stores/SearchQueryStore";
import { SearchListItemTypes, SearchQueryTagTypes, USER_ESTIMATED_ITEM_SIZE } from "../../../../SearchConstants";
import { SearchPopoutModes, SearchTokenTypes } from "../../../../../../Constants";
import { useStateFromStores, statesWillNeverBeEqual } from "../../../../../../_bundle/Module589";
import { useFullscreenPlaceholderCount } from "../../../hooks/usePlaceholderStyles";
import SearchPlatformUtils from "../../../SearchPlatformUtils";
import SearchPlatformActionCreators from "../../../SearchPlatformActionCreators";
import Tracking from "../../../tracking/Tracking";
import UserUtils from "../../../../../../utils/UserUtils";
import { computeChannelName } from "../../../../../channel/useChannelName";
import { quoteChannelName } from "../../../../SearchUtils";
import { getSearchQueryUserIds, getSearchQueryChannelIds, toSearchListUserItem, toSearchListChannelItem, getSearchFilterHasIcon, getSearchFilterAuthorTypeIcon } from "./AutocompleteScreenUtils";
import { Token } from "../../../../../../lib/QueryTokenizer";
import { isValidUserAutocomplete, isValidChannelAutocomplete } from "../../../../tokens/SearchTokens";
import { useMessageTabCountsErrorText } from "../../../hooks/useSearchScreenError";
import ErrorScreen from "../../tabs/pages/ErrorScreen";
import { intl, t } from "../../../../../../intl/index.native";
import SearchList from "../../list/SearchList";
let c11085_16 = [];
const r42 = Module19.memo(function AutocompleteScreen(props) {
let r97;
let searchContext, stateFromStores, state, setState, fullscreenPlaceholderCount, callback, callback2, callback3, callback4;
L12: {
searchContext = props.searchContext;
stateFromStores = void 0;
state = void 0;
setState = void 0;
fullscreenPlaceholderCount = void 0;
callback = void 0;
callback2 = void 0;
callback3 = void 0;
callback4 = void 0;
stateFromStores = useStateFromStores([SearchAutocompleteStore], () => SearchAutocompleteStore.getState(searchContext), [searchContext], statesWillNeverBeEqual);
[state, setState] = useState(false);
const stateFromStores2 = useStateFromStores([SearchQueryStore], () => SearchQueryStore.isTextInputValueEmpty(searchContext), [searchContext]);
fullscreenPlaceholderCount = useFullscreenPlaceholderCount({
placeholderHeight: USER_ESTIMATED_ITEM_SIZE,
numColumns: 1
});
callback = useCallback(() => {
SearchPlatformUtils.syncAutocomplete(searchContext);
SearchPlatformUtils.fetchInitialMessages(searchContext);
}, [searchContext]);
callback2 = useCallback((text) => {
const prefixTag = SearchQueryStore.getPrefixTag(searchContext);
if (prefixTag != null) {
SearchPlatformActionCreators.updateSearchQuery(searchContext, (a0) => {
a0.setTextInputValue("");
a0.addTag({
type: SearchQueryTagTypes.ANSWER,
text
});
a0.restoreDraftTextInputValue();
});
Tracking.trackSearchFilterAdd({
searchContext,
searchTokenType: prefixTag.searchTokenType,
location: prefixTag.location
});
callback();
}
}, [callback, searchContext]);
callback3 = useCallback((a0) => {
const user = UserStore.getUser(a0);
if (user != null) {
const prefixTag = SearchQueryStore.getPrefixTag(searchContext);
if (prefixTag != null) {
SearchPlatformActionCreators.updateSearchQuery(searchContext, (a0) => {
a0.setTextInputValue("");
a0.addTag({
type: SearchQueryTagTypes.ANSWER,
text: UserUtils.getUserTag(user),
userId: user.id
});
a0.restoreDraftTextInputValue();
});
Tracking.trackSearchFilterAdd({
searchContext,
searchTokenType: prefixTag.searchTokenType,
location: prefixTag.location
});
callback();
}
}
}, [callback, searchContext]);
callback4 = useCallback((a0) => {
let userTag;
const channelId = a0;
const channel = ChannelStore.getChannel(a0);
if (channel != null) {
const prefixTag = SearchQueryStore.getPrefixTag(searchContext);
if (prefixTag != null) {
userTag = computeChannelName(channel, UserStore, RelationshipStore);
if (channel.isDM()) {
const user2 = UserStore.getUser(channel.getRecipientId());
if (user2 == null) {
return void 0;
}
userTag = UserUtils.getUserTag(user2);
}
SearchPlatformActionCreators.updateSearchQuery(searchContext, (a0) => {
a0.setTextInputValue("");
a0.addTag({
type: SearchQueryTagTypes.ANSWER,
text: quoteChannelName(userTag),
channelId
});
a0.restoreDraftTextInputValue();
});
Tracking.trackSearchFilterAdd({
searchContext,
searchTokenType: prefixTag.searchTokenType,
location: prefixTag.location
});
callback();
}
}
}, [callback, searchContext]);
useEffect(() => SearchPlatformUtils.subscribeSearchQueryState(searchContext, (a0) => {
const r1 = {
isAutocompleteVisible: a0.isAutocompleteVisible(),
textInputValue: a0.getTextInputValue(),
prefixTag: null
};
let prefixTag = a0.getPrefixTag();
if (prefixTag == null) {
prefixTag = null;
}
r1.prefixTag = prefixTag;
return r1;
}, (a0, a1) => {
const { textInputValue, prefixTag } = a0;
if (a0.isAutocompleteVisible && !(textInputValue === a1?.textInputValue && prefixTag === a1?.prefixTag)) {
setState(true);
}
}, true), [searchContext]);
useEffect(() => {
setState(false);
}, [stateFromStores.autocompletes]);
const memo = useMemo(() => {
const r6 = [];
let c28083_0 = r6;
if (state) {
let r101 = 0;
while (r101 < fullscreenPlaceholderCount) {
r6.push({
type: SearchListItemTypes.MESSAGE_PLACEHOLDER,
key: `message-placeholder-${r101}`
});
r101 = r101 + 1;
}
return r6;
}
const set = new Set(getSearchQueryUserIds(searchContext));
let c28083_1 = set;
let c28083_2 = new Set(getSearchQueryChannelIds(searchContext));
const { autocompletes, tokens, mode } = stateFromStores;
autocompletes.forEach((autocomplete) => {
if (mode.type === SearchPopoutModes.FILTER) {
const { results, group } = autocomplete;
if (results.length !== 0) {
results.forEach(({ user: user2, channel, text: text2 }) => {
const r20 = toSearchListUserItem(searchContext, user2, callback3);
const id = user2?.id;
if (!(r20 == null || id == null || c28083_1.has(id) || RelationshipStore.isBlockedOrIgnored(id))) {
c28083_1.add(id);
c28083_0.push(r20);
}
const r38 = toSearchListChannelItem(channel, callback4);
const id2 = channel?.id;
if (!(r38 == null || id2 == null || c28083_2.has(id2))) {
c28083_2.add(id2);
c28083_0.push(r38);
}
if (group === SearchTokenTypes.FILTER_HAS && text2 != null) {
c28083_0.push({
type: SearchListItemTypes.GENERIC,
props: {
text: text2,
icon: getSearchFilterHasIcon(text2),
onPress: callback2
}
});
}
if (group === SearchTokenTypes.FILTER_AUTHOR_TYPE && text2 != null) {
c28083_0.push({
type: SearchListItemTypes.GENERIC,
props: {
text: text2,
icon: getSearchFilterAuthorTypeIcon(text2),
onPress: callback2
}
});
}
});
}
}
});
if (r6.length === 0 && mode.type !== SearchPopoutModes.FILTER) {
const r50 = tokens[tokens.length - 1];
if (r50 != null) {
const token = new Token(r50);
if (!(token.type !== SearchTokenTypes.ANSWER_USERNAME_FROM && token.type !== SearchTokenTypes.ANSWER_USERNAME_MENTIONS) && isValidUserAutocomplete(token)) {
const data = token.getData("userId");
if (data != null) {
const user2 = UserStore.getUser(data);
const r77 = toSearchListUserItem(searchContext, user2, callback3);
const id = user2?.id;
if (!(r77 == null || id == null || set.has(id) || RelationshipStore.isBlockedOrIgnored(id))) {
set.add(id);
r6.push(r77);
}
}
}
if (token.type === SearchTokenTypes.ANSWER_IN && isValidChannelAutocomplete(token, searchContext)) {
const data2 = token.getData("channelIds");
if (data2 != null) {
data2.forEach((item) => {
const channel = ChannelStore.getChannel(item);
const r17 = toSearchListChannelItem(channel, callback4);
const id = channel?.id;
if (!(r17 == null || id == null || c28083_2.has(id))) {
c28083_2.add(id);
c28083_0.push(r17);
}
});
}
}
}
}
return r6.length > 0 ? r6 : c11085_16;
}, [state, searchContext, fullscreenPlaceholderCount, stateFromStores, callback3, callback4, callback2]);
const messageTabCountsErrorText = useMessageTabCountsErrorText({
searchContext
});
if (messageTabCountsErrorText != null) {
r97 = <ErrorScreen text={messageTabCountsErrorText} />;
} else {
if (stateFromStores2 && memo.length === 0) {
r97 = <ErrorScreen text={intl.string(t["E4HqQ+"])} />;
break L12;
}
if (!stateFromStores2 && memo.length === 0 && !state) {
r97 = <ErrorScreen text={intl.string(t.Dr1vko)} />;
break L12;
}
r97 = <SearchList data={memo} />;
}
}
return r97;
});
export default r42;
@@ -0,0 +1,146 @@
// Metro module 15560 (f15561).
import GuildMemberStore from "../../../../../../stores/GuildMemberStore";
import RelationshipStore from "../../../../../../stores/RelationshipStore";
import UserStore from "../../../../../../stores/UserStore";
import SearchQueryStore from "../../../stores/SearchQueryStore";
import { SearchListItemTypes } from "../../../../SearchConstants";
import { RelationshipTypes } from "../../../../../../Constants";
import { intl, t } from "../../../../../../intl/index.native";
import ForwardingIcon from "../../../../../forwarding/native/ForwardingIcon";
import { LinkIcon } from "../../../../../../design/components/Icon/native/redesign/generated/LinkIcon";
import { EmbedIcon } from "../../../../../../design/components/Icon/native/redesign/generated/EmbedIcon";
import { PollsIcon } from "../../../../../../design/components/Icon/native/redesign/generated/PollsIcon";
import { AttachmentIcon } from "../../../../../../design/components/Icon/native/redesign/generated/AttachmentIcon";
import { VideoIcon } from "../../../../../../design/components/Icon/native/redesign/generated/VideoIcon";
import { ImageIcon } from "../../../../../../design/components/Icon/native/redesign/generated/ImageIcon";
import { SoundboardIcon } from "../../../../../../design/components/Icon/native/redesign/generated/SoundboardIcon";
import { StickerIcon } from "../../../../../../design/components/Icon/native/redesign/generated/StickerIcon";
import { UserIcon } from "../../../../../../design/components/Icon/native/redesign/generated/UserIcon";
import { RobotIcon } from "../../../../../../design/components/Icon/native/redesign/generated/RobotIcon";
import { WebhookIcon } from "../../../../../../design/components/Icon/native/redesign/generated/WebhookIcon";
import { getGuildIdFromSearchContext } from "../../../../SearchUtils";
import UserUtils from "../../../../../../utils/UserUtils";
export function getSearchQueryChannelIds(a0) {
return new Set(SearchQueryStore.getChannelIds(a0));
}
export function getSearchQueryUserIds(a0) {
const prefixTag = SearchQueryStore.getPrefixTag(a0);
if (prefixTag == null) {
return new Set();
}
return new Set(SearchQueryStore.getUserIds(a0, prefixTag.searchTokenType));
}
export function getSearchFilterHasIcon(a0) {
if (intl.string(t.nrpA5E) === a0) {
return ForwardingIcon;
}
if (intl.string(t.ZNR2fi) === a0) {
return LinkIcon;
}
if (intl.string(t["20uQR3"]) === a0) {
return EmbedIcon;
}
if (intl.string(t.L4lxyE) === a0) {
return PollsIcon;
}
if (intl.string(t["AV/v6i"]) === a0) {
return AttachmentIcon;
}
if (intl.string(t.XM9XGP) === a0) {
return VideoIcon;
}
if (intl.string(t.TNLcpx) === a0) {
return ImageIcon;
}
if (intl.string(t.F8Wf0e) === a0) {
return SoundboardIcon;
}
if (intl.string(t.PJgX2h) === a0) {
return StickerIcon;
}
}
export function getSearchFilterAuthorTypeIcon(a0) {
if (intl.string(t.tPZo4p) === a0) {
return UserIcon;
}
if (intl.string(t.JL7sRS) === a0) {
return RobotIcon;
}
if (intl.string(t.WjkIKU) === a0) {
return WebhookIcon;
}
}
export function toSearchListUserItem(a0, a1, a2) {
let guildId = getGuildIdFromSearchContext(a0);
if (a1 == null) {
return null;
}
let nickname = guildId == null ? RelationshipStore.getNickname(a1.id) : null;
if (nickname == null) {
nickname = GuildMemberStore.getNick(guildId, a1.id);
}
if (nickname == null) {
nickname = UserUtils.getName(a1);
}
if (guildId == null) {
guildId = void 0;
}
return {
type: SearchListItemTypes.DM,
props: {
type: RelationshipTypes.NONE,
user: a1,
nickname,
onPress: a2,
guildId
}
};
}
export function toSearchListChannelItem(a0, a1) {
let r16;
if (a0 == null) {
return null;
}
if (a0.isDM()) {
const user = UserStore.getUser(a0.getRecipientId());
const r0 = user == null;
let r23 = null;
if (!r0) {
let nickname = RelationshipStore.getNickname(user.id);
if (nickname == null) {
nickname = UserUtils.getName(user);
}
r23 = {
type: SearchListItemTypes.DM,
props: {
type: RelationshipTypes.NONE,
user,
nickname,
onPress: () => a1(a0.id)
}
};
}
return r23;
}
const isGroupDM = a0.isGroupDM();
const r4 = {
type: null,
props: null
};
if (isGroupDM) {
r4.type = SearchListItemTypes.GROUP_DM;
r4.props = {
channel: a0,
onPress: a1
};
r16 = r4;
} else {
r4.type = SearchListItemTypes.GUILD_TEXT_CHANNEL;
r4.props = {
channel: a0,
onPress: a1
};
r16 = r4;
}
return r16;
}
@@ -0,0 +1,29 @@
// Metro module 15473 (f15474).
import * as Module19 from "react";
import { useMemo } from "react";
import { SearchFilterAddLocations } from "../../../tracking/TrackingConstants";
import { useValidOrderedFilterTokens } from "../../../../tokens/hooks/useValidFilterTokens";
import { getSearchTokenLabel, getSearchTokenIcon, getSearchTokenPressHandler } from "./SearchFilterUtils";
import MobileVisualRefreshExperiment from "../../../../../themes/experiments/MobileVisualRefreshExperiment";
import { ContextMenu } from "../../../../../../design/components/ContextMenu/native/ContextMenu.native";
import { intl, t } from "../../../../../../intl/index.native";
import { IconButton } from "../../../../../../design/components/Button/native/IconButton.native";
import { FiltersHorizontalIcon } from "../../../../../../design/components/Icon/native/redesign/generated/FiltersHorizontalIcon";
const r23 = Module19.memo(function({ searchContext }) {
let c22041_2;
c22041_2 = void 0;
const validOrderedFilterTokens = useValidOrderedFilterTokens(searchContext);
const memo = useMemo(() => validOrderedFilterTokens.map((validOrderedFilterToken) => ({
label: getSearchTokenLabel(searchContext, validOrderedFilterToken),
IconComponent: getSearchTokenIcon(validOrderedFilterToken),
action: getSearchTokenPressHandler(searchContext, validOrderedFilterToken, SearchFilterAddLocations.CONTEXT_MENU)
})), [searchContext, validOrderedFilterTokens]);
c22041_2 = MobileVisualRefreshExperiment("SearchFilterButton");
return <ContextMenu items={memo} align="below" title={intl.string(t.oYEmhB)} keyboardShouldPersistTaps="handled">
{(a0) => {
const { ref, ...rest } = a0;
return <IconButton ref={a0.ref} {...rest} variant="tertiary" accessibilityLabel={intl.string(t.kP6oFy)} size={c22041_2 ? "md" : "sm"} icon={<FiltersHorizontalIcon size="sm" color="redesign-button-tertiary-text" />} />;
}}
</ContextMenu>;
});
export default r23;
@@ -0,0 +1,190 @@
// Metro module 15466 (f15467).
import * as Module19 from "react";
import { useMemo, useCallback, useEffect, useState, useRef } from "react";
import { View } from "react-native";
import { SearchFilterAddLocations } from "../../../tracking/TrackingConstants";
import { createStyles } from "../../../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../../../_bundle/Module712";
import { getSearchTokenIcon, getSearchTokenSubLabel, getSearchFilterSuggestions, getSearchTokenPressHandler } from "./SearchFilterUtils";
import { TableRow } from "../../../../../../design/components/TableRow/native/TableRow.native";
import { Text } from "../../../../../../design/components/Text/native/Text";
import * as _ReanimatedRexport from "../../../../../reanimated/ReanimatedRexport";
import ReanimatedRexport, { useSharedValue, useAnimatedStyle, useAnimatedReaction } from "../../../../../reanimated/ReanimatedRexport";
import * as _spring from "../../../../../../design/animation/reanimated/spring/spring";
import * as _springPresets from "../../../../../../design/animation/reanimated/spring/springPresets";
import * as _TransitionGroup from "../../../../../../design/components/TransitionGroup/TransitionGroup";
import { TransitionGroup } from "../../../../../../design/components/TransitionGroup/TransitionGroup";
import { useValidFilterTokens } from "../../../../tokens/hooks/useValidFilterTokens";
import SearchPlatformUtils from "../../../SearchPlatformUtils";
function $mk96613() {
return (a0) => a0.text;
}
let useStyles, getSuggestionsKey, __initData, __initData2, AnimatedEnterExitContainer, EMPTY_SEARCH_FILTER_ROWS, __initData3, __initData4;
const SearchFilterPrefixRow = function SearchFilterPrefixRow(props) {
const { text, searchTokenType, onPress, ...props2 } = props;
const memo2 = useMemo(() => {
const SearchTokenIcon = getSearchTokenIcon(searchTokenType);
return SearchTokenIcon != null ? <SearchTokenIcon size="sm" /> : null;
}, [searchTokenType]);
const memo3 = useMemo(() => getSearchTokenSubLabel(searchTokenType), [searchTokenType]);
return <TableRow icon={memo2} onPress={useCallback(() => {
onPress(text);
}, [onPress, text])} label={<Text lineClamp={1} variant="text-md/semibold" color="mobile-text-heading-primary">{text}</Text>} subLabel={memo3} {...props2} />;
};
getSuggestionsKey = function getSuggestionsKey(a0) {
return a0.map($mk96613()).join(" ");
};
AnimatedEnterExitContainer = function AnimatedEnterExitContainer(props) {
const { children, state, cleanUp } = props;
const sharedValue = useSharedValue(0);
const l = () => {
const r10 = sharedValue.get();
const t = function t(a0) {
if (a0 ? state === _TransitionGroup.TransitionStates.YEETED : a0) {
_ReanimatedRexport.runOnJS(cleanUp)();
}
};
t.__closure = {
state,
TransitionStates: _TransitionGroup.TransitionStates,
runOnJS: _ReanimatedRexport.runOnJS,
cleanUp
};
t.__workletHash = 10696166249954;
t.__initData = __initData2;
return {
opacity: _spring.withSpring(r10, _springPresets.springStandard, "respect-motion-settings", t),
transform: [{
translateY: _spring.withSpring(sharedValue.get() === 1 ? 0 : -15, _springPresets.springStandard)
}]
};
};
l.__closure = {
withSpring: _spring.withSpring,
opacity: sharedValue,
springStandard: _springPresets.springStandard,
state,
TransitionStates: _TransitionGroup.TransitionStates,
runOnJS: _ReanimatedRexport.runOnJS,
cleanUp
};
l.__workletHash = 334512108462;
l.__initData = __initData;
const animatedStyle = useAnimatedStyle(l);
useEffect(() => {
sharedValue.set(state === _TransitionGroup.TransitionStates.YEETED ? 0 : 1);
}, [sharedValue, state]);
return <ReanimatedRexport.View style={animatedStyle}>{children}</ReanimatedRexport.View>;
};
useStyles = createStyles({
card: {
backgroundColor: Module712.colors.BACKGROUND_SURFACE_HIGHEST,
borderRadius: Module712.radii.lg,
borderColor: Module712.colors.BORDER_SUBTLE,
borderWidth: 1,
...Module712.shadows.SHADOW_LOW
}
});
__initData = {
code: "function SearchFilterSuggestionsTsx1(){const{withSpring,opacity,springStandard,state,TransitionStates,runOnJS,cleanUp}=this.__closure;return{opacity:withSpring(opacity.get(),springStandard,'respect-motion-settings',function(finished){if(finished&&state===TransitionStates.YEETED){runOnJS(cleanUp)();}}),transform:[{translateY:withSpring(opacity.get()===1?0:-15,springStandard)}]};}"
};
__initData2 = {
code: "function SearchFilterSuggestionsTsx2(finished){const{state,TransitionStates,runOnJS,cleanUp}=this.__closure;if(finished&&state===TransitionStates.YEETED){runOnJS(cleanUp)();}}"
};
EMPTY_SEARCH_FILTER_ROWS = [];
__initData3 = {
code: "function SearchFilterSuggestionsTsx3(){const{dismissed}=this.__closure;return dismissed.get();}"
};
__initData4 = {
code: "function SearchFilterSuggestionsTsx4(isDismissed){const{runOnJS,setSuggestions,EMPTY_SEARCH_FILTER_ROWS}=this.__closure;if(isDismissed){runOnJS(setSuggestions)(EMPTY_SEARCH_FILTER_ROWS);}}"
};
const r61 = Module19.memo(function SearchFilterSuggestions(props) {
let memo, ref, callback;
const { searchContext, onLayoutMeasure, containerStyle, dismissed } = props;
memo = void 0;
ref = void 0;
callback = void 0;
const styles = useStyles();
const validFilterTokens = useValidFilterTokens(searchContext);
const [state2, setState] = useState([]);
useEffect(() => SearchPlatformUtils.subscribeSearchQueryState(searchContext, (a0) => ({
textInputValue: a0.getTextInputValue(),
isAutocompleteVisible: a0.isAutocompleteVisible()
}), (a0) => {
L6: {
const { textInputValue, isAutocompleteVisible } = a0;
if (textInputValue.trim() !== "" && !isAutocompleteVisible) {
let c30878_1;
const searchFilterSuggestions = getSearchFilterSuggestions(textInputValue);
if (searchFilterSuggestions.length !== 0) {
c30878_1 = [];
searchFilterSuggestions.forEach(({ text: text2, token }, index) => {
if (validFilterTokens.has(token)) {
c30878_1.push({
text: text2,
searchTokenType: token,
start: index === 0,
end: index === searchFilterSuggestions.length - 1,
onPress: getSearchTokenPressHandler(searchContext, token, SearchFilterAddLocations.SEARCH_INPUT_DROPDOWN)
});
}
});
setState((prevState) => {
const r4 = prevState.map($mk96613()).join(" ");
let r10 = c30878_1;
if (r4 === r10.map($mk96613()).join(" ")) {
r10 = prevState;
}
return r10;
});
break L6;
}
setState(EMPTY_SEARCH_FILTER_ROWS);
} else {
setState(EMPTY_SEARCH_FILTER_ROWS);
}
}
}), [validFilterTokens, searchContext, setState]);
const b = () => dismissed.get();
b.__closure = {
dismissed
};
b.__workletHash = 17191989548971;
b.__initData = __initData3;
const E = function E(a0) {
if (a0) {
_ReanimatedRexport.runOnJS(setState)(EMPTY_SEARCH_FILTER_ROWS);
}
};
E.__closure = {
runOnJS: _ReanimatedRexport.runOnJS,
setSuggestions: setState,
EMPTY_SEARCH_FILTER_ROWS
};
E.__workletHash = 8991360021943;
E.__initData = __initData4;
useAnimatedReaction(b, E);
memo = useMemo(() => [styles.card, containerStyle], [containerStyle, styles.card]);
ref = useRef(null);
callback = useCallback(() => {
setTimeout(() => {
const current = ref.current;
if (current != null) {
current.measure((a0, a1, a2, a3, a4, a5) => {
onLayoutMeasure({
top: a5,
bottom: a5 + a3,
left: a4,
right: a4 + a2
});
});
}
});
}, [onLayoutMeasure]);
return <TransitionGroup items={useMemo(() => state2.length > 0 ? [state2] : [], [state2])} renderItem={useCallback((a0, a1, a2, a3) => <AnimatedEnterExitContainer key={a0} state={a2} cleanUp={a3}>
<View ref={ref} style={memo} collapsable={false} onLayout={callback}>
{a1.map((item) => <SearchFilterPrefixRow key={item.text} {...item} />)}
</View>
</AnimatedEnterExitContainer>, [memo, callback])} getItemKey={getSuggestionsKey} />;
});
export default r61;
@@ -0,0 +1,189 @@
// Metro module 15467 (f15468).
import { EMPTY_SEARCH_QUERY_STRING, SearchQueryTagTypes } from "../../../../SearchConstants";
import { SearchFilterAddLocations } from "../../../tracking/TrackingConstants";
import { SEARCH_DATE_FORMAT, SearchTokenTypes, SearchTypes } from "../../../../../../Constants";
import { intl, t } from "../../../../../../intl/index.native";
import { UserIcon } from "../../../../../../design/components/Icon/native/redesign/generated/UserIcon";
import { AttachmentIcon } from "../../../../../../design/components/Icon/native/redesign/generated/AttachmentIcon";
import { ChannelListMagnifyingGlassIcon } from "../../../../../../design/components/Icon/native/redesign/generated/ChannelListMagnifyingGlassIcon";
import { AtIcon } from "../../../../../../design/components/Icon/native/redesign/generated/AtIcon";
import { CalendarIcon } from "../../../../../../design/components/Icon/native/redesign/generated/CalendarIcon";
import { CalendarMinusIcon } from "../../../../../../design/components/Icon/native/redesign/generated/CalendarMinusIcon";
import { CalendarPlusIcon } from "../../../../../../design/components/Icon/native/redesign/generated/CalendarPlusIcon";
import { RobotIcon } from "../../../../../../design/components/Icon/native/redesign/generated/RobotIcon";
import SearchTokens, { rebuildSearchTokenConfigs, isSearchFilterTokenType } from "../../../../tokens/SearchTokens";
import SearchPlatformActionCreators from "../../../SearchPlatformActionCreators";
import SearchPlatformUtils, { performKeyboardAwareNavigation } from "../../../SearchPlatformUtils";
import ActionSheetActionCreators from "../../../../../action_sheet/native/ActionSheetActionCreators";
import Tracking from "../../../tracking/Tracking";
export function getSearchTokenLabel(a0, a1) {
if (SearchTokenTypes.FILTER_FROM === a1) {
return intl.string(t["6iuVMn"]);
}
if (SearchTokenTypes.FILTER_HAS === a1) {
return intl.string(t.DMAzx8);
}
if (SearchTokenTypes.FILTER_MENTIONS === a1) {
return intl.string(t.CMKzQx);
}
if (SearchTokenTypes.FILTER_IN === a1) {
return a0.type === SearchTypes.DMS ? intl.string(t["8Fmo42"]) : intl.string(t.cdPmq8);
}
if (SearchTokenTypes.FILTER_ON === a1) {
return intl.string(t.h4qGfp);
}
if (SearchTokenTypes.FILTER_BEFORE === a1) {
return intl.string(t.c9qSBR);
}
if (SearchTokenTypes.FILTER_AFTER === a1) {
return intl.string(t.hcMwDW);
}
if (SearchTokenTypes.FILTER_AUTHOR_TYPE === a1) {
return intl.string(t.C4r6xL);
}
throw new Error(`[getSearchTokenLabel] Unhandled search token type: ${a1}`);
}
export function getSearchTokenSubLabel(a0) {
if (SearchTokenTypes.FILTER_FROM === a0) {
return intl.string(t.kkGlww);
}
if (SearchTokenTypes.FILTER_HAS === a0) {
return intl.string(t.gUfZa2);
}
if (SearchTokenTypes.FILTER_IN === a0) {
return intl.string(t.qDUdlT);
}
if (SearchTokenTypes.FILTER_MENTIONS === a0) {
return intl.string(t.ILtwK5);
}
if (SearchTokenTypes.FILTER_ON === a0) {
return intl.string(t.t8bWvr);
}
if (SearchTokenTypes.FILTER_BEFORE === a0) {
return intl.string(t.YEN3uU);
}
if (SearchTokenTypes.FILTER_AFTER === a0) {
return intl.string(t.hwbB7s);
}
if (SearchTokenTypes.FILTER_AUTHOR_TYPE === a0) {
return intl.string(t.tJPdhZ);
}
throw new Error(`[getSearchTokenSubLabel] Unhandled search token type: ${a0}`);
}
export function getSearchTokenIcon(a0) {
if (SearchTokenTypes.FILTER_FROM === a0) {
return UserIcon;
}
if (SearchTokenTypes.FILTER_HAS === a0) {
return AttachmentIcon;
}
if (SearchTokenTypes.FILTER_IN === a0) {
return ChannelListMagnifyingGlassIcon;
}
if (SearchTokenTypes.FILTER_MENTIONS === a0) {
return AtIcon;
}
if (SearchTokenTypes.FILTER_ON === a0) {
return CalendarIcon;
}
if (SearchTokenTypes.FILTER_BEFORE === a0) {
return CalendarMinusIcon;
}
if (SearchTokenTypes.FILTER_AFTER === a0) {
return CalendarPlusIcon;
}
if (SearchTokenTypes.FILTER_AUTHOR_TYPE === a0) {
return RobotIcon;
}
throw new Error(`[getSearchTokenIcon] Unhandled search token type: ${a0}`);
}
export function getSearchTokenPressHandler(c22037_0, a1, c22037_2) {
if (SearchTokenTypes.FILTER_FROM !== a1 && SearchTokenTypes.FILTER_IN !== a1 && SearchTokenTypes.FILTER_HAS !== a1 && SearchTokenTypes.FILTER_MENTIONS !== a1 && SearchTokenTypes.FILTER_AUTHOR_TYPE !== a1) {
if (SearchTokenTypes.FILTER_ON !== a1 && SearchTokenTypes.FILTER_BEFORE !== a1 && SearchTokenTypes.FILTER_AFTER !== a1) {
throw new Error(`[getSearchTokenPressHandler] Unhandled search token type: ${a1}`);
}
return () => {
const searchContext = c22037_0;
const searchTokenType2 = a1;
const location3 = c22037_2;
performKeyboardAwareNavigation(() => {
ActionSheetActionCreators.openLazy(import("../../../../../../components_native/DatePickerActionSheet"), "DatePicker", {
onSubmit: (a0) => {
let c32070_0 = a0.format(SEARCH_DATE_FORMAT);
SearchPlatformActionCreators.updateSearchQuery(searchContext, (a0) => {
if (location3 === SearchFilterAddLocations.SEARCH_INPUT_DROPDOWN) {
a0.setTextInputValue(EMPTY_SEARCH_QUERY_STRING);
}
a0.removePrefixTags();
const addTag = a0.addTag;
let r24 = SearchTokens[searchTokenType2];
if (r24 == null) {
rebuildSearchTokenConfigs();
r24 = SearchTokens[searchTokenType2];
}
let r31 = r24?.key;
if (r31 == null) {
r31 = searchTokenType2.toString();
}
addTag.call(a0, {
type: SearchQueryTagTypes.COMPLETE,
text: `${r31} ${c32070_0}`,
searchTokenType: searchTokenType2,
location: location3
});
});
Tracking.trackSearchFilterAdd({
searchContext,
searchTokenType: searchTokenType2,
location: location3
});
SearchPlatformUtils.fetchInitialMessages(searchContext);
}
});
});
};
}
return () => {
const searchTokenType = a1;
const location2 = c22037_2;
SearchPlatformActionCreators.updateSearchQuery(c22037_0, (a0) => {
if (location2 === SearchFilterAddLocations.CONTEXT_MENU) {
a0.saveDraftTextInputValue();
}
a0.setTextInputValue(EMPTY_SEARCH_QUERY_STRING);
const addTag = a0.addTag;
let r24 = SearchTokens[searchTokenType];
if (r24 == null) {
rebuildSearchTokenConfigs();
r24 = SearchTokens[searchTokenType];
}
let text = r24?.key;
if (text == null) {
text = searchTokenType.toString();
}
addTag.call(a0, {
type: SearchQueryTagTypes.PREFIX,
searchTokenType,
location: location2,
text
});
});
SearchPlatformUtils.syncAutocomplete(c22037_0);
};
}
export function getSearchFilterSuggestions(c22038_0) {
const r7 = [];
let c22038_1 = r7;
Object.keys(SearchTokens).forEach((item) => {
if (isSearchFilterTokenType(item)) {
const plainText = SearchTokens[item].plainText;
if (plainText != null && new RegExp(`^${plainText}(?:: ?)?\$`, "i").test(c22038_0)) {
c22038_1.push({
token: item,
text: plainText
});
}
}
});
return r7;
}
@@ -0,0 +1,71 @@
// Metro module 15461 (f15462).
import { useCallback, useEffect, useMemo } from "react";
import { useSharedValue } from "../../../../../reanimated/ReanimatedRexport";
import SearchPlatformUtils from "../../../SearchPlatformUtils";
import useSafeAreaInsets_native from "../../../../../safe_area/useSafeAreaInsets.native";
import { isAndroid } from "../../../../../../utils/PlatformUtils";
import { Gesture } from "../../../../../../_bundle/Module5273";
let inBoundingBox, __initData;
const inBoundingBox2 = function inBoundingBox(a0, a1, a2) {
const r4 = a0.allTouches[0];
return r4 != null && (a1.left < r4.absoluteX && r4.absoluteX < a1.right && a1.top < r4.absoluteY + a2 && r4.absoluteY + a2 < a1.bottom);
};
inBoundingBox2.__closure = {};
inBoundingBox2.__workletHash = 14606221606756;
inBoundingBox2.__initData = {
code: "function inBoundingBox_useSearchSuggestionsGestureTsx1(e,coordinates,safeAreaTop){const touch=e.allTouches[0];if(touch==null)return false;return coordinates.left<touch.absoluteX&&touch.absoluteX<coordinates.right&&coordinates.top<touch.absoluteY+safeAreaTop&&touch.absoluteY+safeAreaTop<coordinates.bottom;}"
};
inBoundingBox = inBoundingBox2;
__initData = {
code: "function useSearchSuggestionsGestureTsx2(e,manager){const{coordinates,inBoundingBox,safeAreaTop,dismissed}=this.__closure;manager.fail();const _coordinates=coordinates.get();if(_coordinates==null||inBoundingBox(e,_coordinates,safeAreaTop))return;dismissed.set(true);}"
};
export function useSearchSuggestionsGesture(a0) {
let top, memo, callback2, callback3;
let c22029_0 = a0;
const sharedValue = useSharedValue(false);
const sharedValue2 = useSharedValue(null);
const callback = useCallback((a0, a1) => {
if (a0 !== a1) {
sharedValue.set(false);
}
}, [sharedValue]);
useEffect(() => SearchPlatformUtils.subscribeTextInputValue(c22029_0, callback), [sharedValue, a0, callback]);
const top2 = useSafeAreaInsets_native().top;
top = isAndroid() ? top2 : 0;
memo = useMemo(() => {
const r4 = Gesture.Manual().manualActivation(true);
const e = function e(a0, a1) {
a1.fail();
const r14 = sharedValue2.get();
let r1 = r14 == null;
if (!r1) {
const r20 = a0.allTouches[0];
r1 = r20 != null && (r14.left < r20.absoluteX && r20.absoluteX < r14.right && r14.top < r20.absoluteY + top && r20.absoluteY + top < r14.bottom);
}
if (!r1) {
sharedValue.set(true);
}
};
e.__closure = {
coordinates: sharedValue2,
inBoundingBox,
safeAreaTop: top,
dismissed: sharedValue
};
e.__workletHash = 2369649298113;
e.__initData = __initData;
return r4.onTouchesDown(e);
}, [sharedValue2, top, sharedValue]);
callback2 = useCallback((a0) => {
sharedValue2.set(a0);
}, [sharedValue2]);
callback3 = useCallback(() => {
sharedValue.set(true);
}, [sharedValue]);
return useMemo(() => ({
gesture: memo,
dismissed: sharedValue,
onLayoutMeasure: callback2,
setDismissed: callback3
}), [sharedValue, callback3, memo, callback2]);
}