634 lines
23 KiB
TypeScript
634 lines
23 KiB
TypeScript
// Metro module 15794 (f15795).
|
|
import _slicedToArray from "../../../_bundle/_slicedToArray";
|
|
import * as Module19 from "react";
|
|
import { useRef, useEffect, useCallback, useState, useMemo, useDeferredValue } from "react";
|
|
import { View } from "react-native";
|
|
import ActionSheetStore from "../../action_sheet/native/ActionSheetStore";
|
|
import ChannelListStore from "../../guild_sidebar/ChannelListStore";
|
|
import NavigationHistoryStore, { CHANNEL_PREFIX, GUILD_PREFIX, getIdFromHistoryItem } from "../../main_tabs_v2/native/NavigationHistoryStore";
|
|
import ActiveJoinedThreadsStore from "../../threads/ActiveJoinedThreadsStore";
|
|
import { isGuildSelectableChannelType, isGuildVocalChannelType } from "../../../records/ChannelRecord";
|
|
import AuthenticationStore from "../../../stores/AuthenticationStore";
|
|
import ChannelStore from "../../../stores/ChannelStore";
|
|
import DeveloperExperimentStore from "../../../stores/DeveloperExperimentStore";
|
|
import GuildReadStateStore from "../../../stores/GuildReadStateStore";
|
|
import GuildStore from "../../../stores/GuildStore";
|
|
import PrivateChannelReadStateStore from "../../../stores/PrivateChannelReadStateStore";
|
|
import ReadStateStore from "../../../stores/ReadStateStore";
|
|
import SortedGuildStore from "../../../stores/SortedGuildStore";
|
|
import UserGuildSettingsStore from "../../../stores/UserGuildSettingsStore";
|
|
import VoiceStateStore from "../../../stores/VoiceStateStore";
|
|
import { AnalyticEvents } from "../../../Constants";
|
|
import Module712 from "../../../_bundle/Module712";
|
|
import { createStyles } from "../../../design/components/Styles/native/createStyles";
|
|
import { PressableHighlight } from "../../../design/void/Pressables/native/Pressables";
|
|
import { Text } from "../../../design/components/Text/native/Text";
|
|
import { useStateFromStores, useStateFromStoresArray } from "../../../_bundle/Module589";
|
|
import * as _ReanimatedRexport from "../../reanimated/ReanimatedRexport";
|
|
import { useSharedValue, useAnimatedReaction } from "../../reanimated/ReanimatedRexport";
|
|
import { getBestActiveInput } from "../../../utils/native/ChatInputUtils";
|
|
import { SearchField } from "../../../design/components/TextField/native/SearchField.native";
|
|
import { intl, t } from "../../../intl/index.native";
|
|
import { FlashIcon } from "../../../design/components/Icon/native/redesign/generated/FlashIcon";
|
|
import { BellIcon } from "../../../design/components/Icon/native/redesign/generated/BellIcon";
|
|
import { StaffBadgeIcon } from "../../../design/components/Icon/native/redesign/generated/StaffBadgeIcon";
|
|
import { isAndroid } from "../../../utils/PlatformUtils";
|
|
import { navigateToDevTools } from "../../devtools/native/components/DevToolsNavigator";
|
|
import hideLaunchPad from "./hideLaunchPad";
|
|
import createAutocompleterResultForChannelId from "../../autocompleter/createAutocompleterResultForChannelId";
|
|
import { getSelectedGuildFromRoute, getSelectedChannelFromRoute } from "../../main_tabs_v2/helpers/NavigationRouteUtils.native";
|
|
import { getHasImportantUnread } from "../../read_states/ReadStateUtils";
|
|
import { AutocompleterResultTypes } from "../../autocompleter/index";
|
|
import useWindowDimensions_native from "../../screen/useWindowDimensions.native";
|
|
import useSafeAreaInsets_native from "../../safe_area/useSafeAreaInsets.native";
|
|
import Autocompleter from "../../autocompleter/Autocompleter";
|
|
import RouteManager from "../../routing/RouteManager";
|
|
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
|
|
import LaunchPadUnreadServers from "./LaunchPadUnreadServers";
|
|
import { SearchResults, InitialResults } from "./LaunchPadSearchResults";
|
|
import DevToolsContent from "../../devtools/native/components/DevToolsContent";
|
|
import LaunchPadMembers from "./LaunchPadMembers";
|
|
import LaunchPadNotificationCenter from "./LaunchPadNotificationCenter";
|
|
import { $forInKeys } from "../../../_hermes/prelude";
|
|
let useStyles, TabHeader, c11290_31, __initData, __initData2, Component, createAndAppendChannel, unreads, c11290_37, __initData3, __initData4;
|
|
const TabButton = function TabButton(props) {
|
|
const { onPress: onPress2, icon: icon2, accessibilityLabel, selected, style } = props;
|
|
const styles2 = useStyles();
|
|
return <PressableHighlight onPress={onPress2} style={[styles2.tab, style, selected ? styles2.tabSelected : void 0]} accessibilityLabel={accessibilityLabel} accessibilityRole="tab" accessibilityState={{
|
|
selected
|
|
}}>
|
|
{icon2(selected ? Module712.colors.INTERACTIVE_TEXT_ACTIVE : Module712.colors.INTERACTIVE_TEXT_DEFAULT)}
|
|
</PressableHighlight>;
|
|
};
|
|
TabHeader = function TabHeader(props) {
|
|
const text = props.text;
|
|
return <Text style={useStyles().subheader} variant="heading-md/extrabold" maxFontSizeMultiplier={1.75} accessibilityRole="header">{text}</Text>;
|
|
};
|
|
createAndAppendChannel = function createAndAppendChannel(a0, a1, a2) {
|
|
if (!a1.has(a0)) {
|
|
const autocompleterResultForChannelId = createAutocompleterResultForChannelId(a0);
|
|
if (autocompleterResultForChannelId != null) {
|
|
a2.push(autocompleterResultForChannelId);
|
|
a1.add(a0);
|
|
}
|
|
}
|
|
};
|
|
const md = Module712.radii.md;
|
|
useStyles = createStyles({
|
|
wrapper: {
|
|
flexGrow: 0,
|
|
marginHorizontal: 16,
|
|
marginBottom: 16,
|
|
flexShrink: 1,
|
|
borderRadius: 24,
|
|
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
|
|
flexDirection: "column",
|
|
justifyContent: "flex-start",
|
|
alignItems: "stretch",
|
|
overflow: "hidden"
|
|
},
|
|
launchPadContent: {
|
|
flex: -1,
|
|
overflow: "hidden",
|
|
borderBottomLeftRadius: 24,
|
|
borderBottomRightRadius: 24
|
|
},
|
|
header: {
|
|
paddingHorizontal: 16,
|
|
paddingTop: 16,
|
|
flexDirection: "row",
|
|
flexShrink: 0,
|
|
flexGrow: 0
|
|
},
|
|
subheader: {
|
|
flexGrow: 1,
|
|
flexShrink: 1,
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
alignSelf: "center",
|
|
paddingStart: 8
|
|
},
|
|
tabs: {
|
|
marginStart: 8,
|
|
flexDirection: "row",
|
|
flexShrink: 0,
|
|
backgroundColor: Module712.colors.INPUT_BACKGROUND_DEFAULT,
|
|
borderRadius: md,
|
|
padding: 5,
|
|
alignItems: "stretch",
|
|
justifyContent: "center",
|
|
gap: 5,
|
|
borderWidth: 1,
|
|
borderColor: Module712.colors.INPUT_BORDER_DEFAULT
|
|
},
|
|
tab: {
|
|
width: 32,
|
|
height: 32,
|
|
borderRadius: md - 5,
|
|
alignItems: "center",
|
|
justifyContent: "center"
|
|
},
|
|
tabSelected: {
|
|
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
|
|
}
|
|
});
|
|
c11290_31 = {
|
|
SEARCH: 0,
|
|
0: "SEARCH",
|
|
MEMBERS: 1,
|
|
1: "MEMBERS",
|
|
NOTIFICATIONS: 2,
|
|
2: "NOTIFICATIONS",
|
|
DEV_TOOLS: 3,
|
|
3: "DEV_TOOLS"
|
|
};
|
|
__initData = {
|
|
code: "function LaunchPadTsx1(){const{sharedState}=this.__closure;return sharedState.get();}"
|
|
};
|
|
__initData2 = {
|
|
code: "function LaunchPadTsx2(sharedState){const{keyboardShown,runOnJS,setFocused}=this.__closure;if(!keyboardShown.get()&&sharedState>0.75){runOnJS(setFocused)(true);}else if(keyboardShown.get()&&sharedState<=0){runOnJS(setFocused)(false);}}"
|
|
};
|
|
Component = Module19.memo(function({ tab, setTab, updateQuery, sharedState, searchRef }) {
|
|
let ref, sharedValue, ref2, callback, stateFromStores;
|
|
ref = void 0;
|
|
sharedValue = void 0;
|
|
ref2 = void 0;
|
|
callback = void 0;
|
|
stateFromStores = void 0;
|
|
const styles2 = useStyles();
|
|
const stateFromStores4 = useStateFromStores([DeveloperExperimentStore], () => DeveloperExperimentStore.isDeveloper);
|
|
ref = useRef(false);
|
|
sharedValue = useSharedValue(false);
|
|
ref2 = useRef(tab);
|
|
useEffect(() => {
|
|
ref2.current = tab;
|
|
});
|
|
callback = useCallback((a0, a1) => {
|
|
L16: {
|
|
if (a0 && ref2.current === c11290_31.SEARCH) {
|
|
const bestActiveInput2 = getBestActiveInput();
|
|
ref.current = (bestActiveInput2 == null ? void 0 : bestActiveInput2.isFocused()) === true;
|
|
if (searchRef.current == null) {
|
|
break L16;
|
|
}
|
|
sharedValue.set(true);
|
|
const current2 = searchRef.current;
|
|
if (current2 == null) {
|
|
break L16;
|
|
}
|
|
current2.focus();
|
|
} else if (!a0) {
|
|
if (ref.current && !a1) {
|
|
const bestActiveInput = getBestActiveInput();
|
|
if (bestActiveInput != null) {
|
|
bestActiveInput.focus();
|
|
}
|
|
}
|
|
const current = searchRef.current;
|
|
if (current != null) {
|
|
current.blur();
|
|
}
|
|
ref.current = false;
|
|
sharedValue.set(false);
|
|
}
|
|
}
|
|
}, [sharedValue, searchRef]);
|
|
stateFromStores = useStateFromStores([ActionSheetStore], () => ActionSheetStore.isOpen());
|
|
useEffect(() => {
|
|
callback(!stateFromStores, stateFromStores);
|
|
}, [stateFromStores, callback]);
|
|
useEffect(() => {
|
|
if (tab === c11290_31.SEARCH && sharedState.get() === 1) {
|
|
callback(true);
|
|
}
|
|
}, [tab, sharedState, callback]);
|
|
const T = () => sharedState.get();
|
|
T.__closure = {
|
|
sharedState
|
|
};
|
|
T.__workletHash = 17067823098320;
|
|
T.__initData = __initData;
|
|
const r63 = function(a0) {
|
|
if (!sharedValue.get() && a0 > 0.75) {
|
|
_ReanimatedRexport.runOnJS(callback)(true);
|
|
} else if (sharedValue.get() && a0 <= 0) {
|
|
_ReanimatedRexport.runOnJS(callback)(false);
|
|
}
|
|
};
|
|
r63.__closure = {
|
|
keyboardShown: sharedValue,
|
|
runOnJS: _ReanimatedRexport.runOnJS,
|
|
setFocused: callback
|
|
};
|
|
r63.__workletHash = 3784684686013;
|
|
r63.__initData = __initData2;
|
|
useAnimatedReaction(T, r63);
|
|
return <View style={styles2.header}>
|
|
{tab === c11290_31.SEARCH ? <SearchField size="md" returnKeyType="done" ref={searchRef} onChange={updateQuery} autoComplete="off" spellCheck={false} autoFocus={false} /> : tab === c11290_31.MEMBERS ? <TabHeader text={intl.string(t["9Oq93m"])} /> : tab === c11290_31.NOTIFICATIONS ? <TabHeader text={intl.string(t.HcoRu0)} /> : <TabHeader text="Dev Tools" />}
|
|
<View style={styles2.tabs}>
|
|
<TabButton icon={(a0) => <FlashIcon size="sm" color={a0} />} accessibilityLabel={intl.string(t.JqV7IC)} onPress={() => {
|
|
setTab(c11290_31.SEARCH);
|
|
const current = searchRef.current;
|
|
if (current != null) {
|
|
current.focus();
|
|
}
|
|
}} selected={tab === c11290_31.SEARCH} />
|
|
<TabButton icon={(a0) => <BellIcon size="sm" color={a0} />} accessibilityLabel={intl.string(t.HcoRu0)} onPress={() => {
|
|
setTab(c11290_31.NOTIFICATIONS);
|
|
const current = searchRef.current;
|
|
if (current != null) {
|
|
current.blur();
|
|
}
|
|
}} selected={tab === c11290_31.NOTIFICATIONS} />
|
|
{stateFromStores4 ? <TabButton icon={(a0) => <StaffBadgeIcon size="sm" color={a0} />} accessibilityLabel="Dev Tools" selected={tab === c11290_31.DEV_TOOLS} onPress={() => {
|
|
if (isAndroid()) {
|
|
navigateToDevTools();
|
|
hideLaunchPad();
|
|
} else {
|
|
setTab(c11290_31.DEV_TOOLS);
|
|
}
|
|
const current = searchRef.current;
|
|
if (current != null) {
|
|
current.blur();
|
|
}
|
|
}} /> : null}
|
|
</View>
|
|
</View>;
|
|
});
|
|
unreads = [];
|
|
c11290_37 = [AutocompleterResultTypes.GUILD, AutocompleterResultTypes.TEXT_CHANNEL, AutocompleterResultTypes.GROUP_DM, AutocompleterResultTypes.VOICE_CHANNEL, AutocompleterResultTypes.USER];
|
|
__initData3 = {
|
|
code: "function LaunchPadTsx3(){const{sharedState}=this.__closure;return sharedState.get()===0;}"
|
|
};
|
|
__initData4 = {
|
|
code: "function LaunchPadTsx4(hidden,prevHidden){const{runOnJS,clearQuery,cancelTimeout}=this.__closure;if(hidden===prevHidden)return;if(hidden&&hidden!==prevHidden){runOnJS(clearQuery)();}else if(!hidden&&hidden!==prevHidden){runOnJS(cancelTimeout)();}}"
|
|
};
|
|
const r141 = Module19.memo(function LaunchPad(props) {
|
|
let r250;
|
|
let state, state2, setState2;
|
|
let visible, setState3, setState4, state3;
|
|
let c22455_0, visible2, selectedGuildFromRoute, selectedChannelFromRoute, state4, setState5, ref3, stateFromStores2, ref4, stateFromStoresArray, ref5, stateFromStoresArray2, stateFromStores3, ref6, memo, ref7, memo2;
|
|
let styles, height, top, bottom;
|
|
let callback2, ref8, sharedState2, ref9, callback3, callback4;
|
|
const { visible: visible3, sharedState: sharedState3 } = props;
|
|
state = void 0;
|
|
state2 = void 0;
|
|
setState2 = void 0;
|
|
const styles2 = useStyles();
|
|
const [expandedHistory, setState] = useState(false);
|
|
const callback5 = useCallback(() => setState((prevState) => !prevState), []);
|
|
const ref10 = useRef(null);
|
|
visible = visible3;
|
|
setState3 = void 0;
|
|
setState4 = void 0;
|
|
state3 = void 0;
|
|
let state5;
|
|
[state5, setState3] = useState("");
|
|
let results;
|
|
[results, setState4] = useState(unreads);
|
|
state3 = _slicedToArray(useState(() => new Autocompleter((a0, a1) => {
|
|
if (a1.trim().trim() === "") {
|
|
setState4(unreads);
|
|
} else {
|
|
setState4(a0);
|
|
}
|
|
}, c11290_37, void 0, {
|
|
frecencyBoosters: true
|
|
})), 1)[0];
|
|
useEffect(() => () => state3.clean(), [state3]);
|
|
useEffect(() => RouteManager.addRouteChangeListener(() => {
|
|
const set = new Set([`user:${AuthenticationStore.getId()}`]);
|
|
const selectedGuildFromRoute2 = getSelectedGuildFromRoute();
|
|
if (selectedGuildFromRoute2 != null) {
|
|
set.add(`guild:${selectedGuildFromRoute2}`);
|
|
}
|
|
state3.setOptions({
|
|
blacklist: set
|
|
}, true);
|
|
}), [state3]);
|
|
useEffect(() => {
|
|
if (visible) {
|
|
state3.resume();
|
|
} else {
|
|
state3.pause();
|
|
}
|
|
}, [visible, state3]);
|
|
const callback6 = useCallback((a0) => {
|
|
setState3(a0);
|
|
state3.search(a0);
|
|
}, [state3]);
|
|
state = state5;
|
|
const r5 = state.trim().length > 0;
|
|
c22455_0 = r5;
|
|
visible2 = visible;
|
|
selectedGuildFromRoute = void 0;
|
|
selectedChannelFromRoute = void 0;
|
|
state4 = void 0;
|
|
setState5 = void 0;
|
|
ref3 = void 0;
|
|
stateFromStores2 = void 0;
|
|
ref4 = void 0;
|
|
stateFromStoresArray = void 0;
|
|
ref5 = void 0;
|
|
stateFromStoresArray2 = void 0;
|
|
stateFromStores3 = void 0;
|
|
ref6 = void 0;
|
|
memo = void 0;
|
|
ref7 = void 0;
|
|
memo2 = void 0;
|
|
selectedGuildFromRoute = getSelectedGuildFromRoute();
|
|
selectedChannelFromRoute = getSelectedChannelFromRoute();
|
|
[state4, setState5] = useState(void 0);
|
|
useEffect(() => {
|
|
if (!visible2) {
|
|
setState5(void 0);
|
|
}
|
|
}, [visible]);
|
|
ref3 = useRef([]);
|
|
stateFromStores2 = useStateFromStores([PrivateChannelReadStateStore], () => visible2 ? PrivateChannelReadStateStore.getUnreadPrivateChannelIds() : ref3.current);
|
|
useEffect(() => {
|
|
ref3.current = stateFromStores2;
|
|
});
|
|
ref4 = useRef([]);
|
|
stateFromStoresArray = useStateFromStoresArray([GuildReadStateStore, SortedGuildStore], () => {
|
|
if (!visible2) {
|
|
return ref4.current;
|
|
}
|
|
const r27 = [];
|
|
const r4 = [];
|
|
for (const item of SortedGuildStore.getFlattenedGuildIds()) {
|
|
if (item !== selectedGuildFromRoute) {
|
|
if (GuildReadStateStore.getMentionCount(item) > 0) {
|
|
r27.push(item);
|
|
} else if (GuildReadStateStore.hasUnread(item)) {
|
|
r4.push(item);
|
|
}
|
|
}
|
|
}
|
|
r27.push.apply(r27, [...r4]);
|
|
return r27;
|
|
}, [visible, selectedGuildFromRoute]);
|
|
useEffect(() => {
|
|
ref4.current = stateFromStoresArray;
|
|
});
|
|
ref5 = useRef([]);
|
|
stateFromStoresArray2 = useStateFromStoresArray([ChannelListStore, VoiceStateStore, ReadStateStore, UserGuildSettingsStore, ActiveJoinedThreadsStore], () => {
|
|
let r7 = state4;
|
|
if (state4 == null) {
|
|
r7 = selectedGuildFromRoute;
|
|
}
|
|
if (!c22455_0 && r7 != null) {
|
|
if (!visible2) {
|
|
return ref5.current;
|
|
}
|
|
const r35 = [];
|
|
let c28158_0 = r35;
|
|
const r6 = [];
|
|
let c28158_1 = r6;
|
|
const r4 = [];
|
|
let c28158_2 = r4;
|
|
const r5 = [];
|
|
let c28158_3 = r5;
|
|
for (const item of Object.values(ActiveJoinedThreadsStore.getActiveJoinedUnreadThreadsForGuild(r7))) {
|
|
for (const key in item) {
|
|
r6.push(key);
|
|
}
|
|
}
|
|
ChannelListStore.getGuild(r7).guildChannels.forEachChannel((a0) => {
|
|
L16: {
|
|
const isGuildVocalChannelType2 = isGuildVocalChannelType(a0.type);
|
|
if (!(!isGuildVocalChannelType2 && !isGuildSelectableChannelType(a0.type)) && !UserGuildSettingsStore.isChannelMuted(a0.guild_id, a0.id)) {
|
|
if (a0.parent_id != null && UserGuildSettingsStore.isChannelMuted(a0.guild_id, a0.parent_id)) {
|
|
break L16;
|
|
}
|
|
if (ReadStateStore.getMentionCount(a0.id) > 0) {
|
|
c28158_0.push(a0.id);
|
|
} else {
|
|
if (!isGuildVocalChannelType2 && getHasImportantUnread(a0)) {
|
|
c28158_1.push(a0.id);
|
|
break L16;
|
|
}
|
|
if (isGuildVocalChannelType2) {
|
|
const r48 = $forInKeys(VoiceStateStore.getVoiceStatesForChannel(a0.id));
|
|
let r1 = 0;
|
|
const length = r48.length;
|
|
if (r48 !== void 0) {
|
|
const r50 = r1 < length ? r48[r1++] : void 0;
|
|
if (r50 !== void 0) {
|
|
c28158_3.push(a0.id);
|
|
}
|
|
}
|
|
} else if (ReadStateStore.hasUnread(a0.id)) {
|
|
c28158_2.push(a0.id);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}, {
|
|
ignoreRecents: true,
|
|
withThreads: true
|
|
});
|
|
r35.push.apply(r35, [...r6]);
|
|
r35.push.apply(r35, [...r5]);
|
|
r35.push.apply(r35, [...r4]);
|
|
return r35;
|
|
}
|
|
return [];
|
|
}, [r5, selectedGuildFromRoute, visible, state4]);
|
|
useEffect(() => {
|
|
ref5.current = stateFromStoresArray2;
|
|
});
|
|
stateFromStores3 = useStateFromStores([NavigationHistoryStore], () => NavigationHistoryStore.getState().history);
|
|
ref6 = useRef([]);
|
|
memo = useMemo(() => {
|
|
if (!c22455_0 && visible2) {
|
|
const set = new Set(stateFromStoresArray);
|
|
if (selectedGuildFromRoute != null) {
|
|
set.add(selectedGuildFromRoute);
|
|
}
|
|
const r26 = [];
|
|
const set2 = new Set();
|
|
let r0 = stateFromStores3.length - 1;
|
|
while (0 <= r0) {
|
|
const r18 = stateFromStores3[r0];
|
|
const r1 = r0;
|
|
if (r18 == null) {
|
|
break;
|
|
}
|
|
const r37 = r18.startsWith(CHANNEL_PREFIX) ? ChannelStore.getChannel(getIdFromHistoryItem(r18))?.guild_id : getIdFromHistoryItem(r18);
|
|
if (!(r37 == null || set.has(r37) || set2.has(r37) || GuildStore.getGuild(r37) == null)) {
|
|
set2.add(r37);
|
|
r26.push(r37);
|
|
}
|
|
if (r26.length >= 20) {
|
|
break;
|
|
}
|
|
r0 = r1 - 1;
|
|
}
|
|
return r26;
|
|
}
|
|
return ref6.current;
|
|
}, [r5, visible, selectedGuildFromRoute, stateFromStoresArray, stateFromStores3]);
|
|
useEffect(() => {
|
|
ref6.current = memo;
|
|
});
|
|
ref7 = useRef(void 0);
|
|
memo2 = useMemo(() => {
|
|
if (c22455_0) {
|
|
return void 0;
|
|
}
|
|
if (visible2) {
|
|
const r28 = (function getChannelHistory(a0, a1) {
|
|
const r10 = a1 != null ? `${CHANNEL_PREFIX}${a1}` : void 0;
|
|
const r19 = [];
|
|
let r0 = a0.length - 1;
|
|
while (0 <= r0) {
|
|
const r21 = a0[r0];
|
|
const r1 = r0;
|
|
if (r21 == null) {
|
|
break;
|
|
}
|
|
L10: {
|
|
if (!r21.startsWith(GUILD_PREFIX) && r21 !== r10) {
|
|
const idFromHistoryItem = getIdFromHistoryItem(r21);
|
|
const basicChannel = ChannelStore.getBasicChannel(idFromHistoryItem);
|
|
if (basicChannel != null) {
|
|
if (basicChannel.guild_id != null && GuildStore.getGuild(basicChannel.guild_id) == null) {
|
|
break L10;
|
|
}
|
|
r19.push(idFromHistoryItem);
|
|
if (r19.length >= 20) {
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
r0 = r1 - 1;
|
|
}
|
|
return r19;
|
|
})(stateFromStores3, selectedChannelFromRoute);
|
|
const channelHistory = [];
|
|
if (state4 == null) {
|
|
const set = new Set();
|
|
for (const item of r28) {
|
|
createAndAppendChannel(item, set, channelHistory);
|
|
}
|
|
}
|
|
const unreads2 = [];
|
|
const set2 = new Set();
|
|
if (stateFromStoresArray2.length > 0) {
|
|
for (const item2 of stateFromStoresArray2) {
|
|
createAndAppendChannel(item2, set2, unreads2);
|
|
}
|
|
}
|
|
return channelHistory.length > 0 ? {
|
|
channelHistory,
|
|
unreads: unreads2
|
|
} : unreads2.length > 0 ? {
|
|
channelHistory,
|
|
unreads: unreads2
|
|
} : void 0;
|
|
}
|
|
return ref7.current;
|
|
}, [r5, visible, stateFromStoresArray2, selectedChannelFromRoute, state4, stateFromStores3]);
|
|
useEffect(() => {
|
|
ref7.current = memo2;
|
|
});
|
|
const deferredValue = useDeferredValue(memo2);
|
|
[state2, setState2] = useState(false);
|
|
const [tab2, setTab2] = useState(c11290_31.SEARCH);
|
|
styles = void 0;
|
|
height = void 0;
|
|
top = void 0;
|
|
bottom = void 0;
|
|
styles = useStyles();
|
|
height = useWindowDimensions_native().height;
|
|
const safeAreaInsets_native = useSafeAreaInsets_native();
|
|
top = safeAreaInsets_native.top;
|
|
bottom = safeAreaInsets_native.bottom;
|
|
const memo3 = useMemo(() => [styles.wrapper, {
|
|
maxHeight: height - top - bottom - 16
|
|
}], [height, top, bottom, styles]);
|
|
useEffect(() => {
|
|
if (state.length > 0 && !state2) {
|
|
AnalyticsUtils.track(AnalyticEvents.LAUNCHPAD_SEARCHED);
|
|
setState2(true);
|
|
} else if (state.length === 0) {
|
|
setState2(false);
|
|
}
|
|
}, [state, setState2, state2]);
|
|
callback2 = callback6;
|
|
ref8 = ref10;
|
|
sharedState2 = sharedState3;
|
|
ref9 = void 0;
|
|
callback3 = void 0;
|
|
callback4 = void 0;
|
|
ref9 = useRef(-1);
|
|
callback3 = useCallback(() => {
|
|
clearTimeout(ref9.current);
|
|
ref9.current = setTimeout(() => {
|
|
clearTimeout(ref9.current);
|
|
callback2("");
|
|
const current = ref8.current;
|
|
if (current != null) {
|
|
current.setText("");
|
|
}
|
|
}, 100);
|
|
}, [callback2, ref8]);
|
|
callback4 = useCallback(() => {
|
|
clearTimeout(ref9.current);
|
|
}, []);
|
|
useEffect(() => () => clearTimeout(ref9.current), []);
|
|
const l = () => sharedState2.get() === 0;
|
|
l.__closure = {
|
|
sharedState: sharedState2
|
|
};
|
|
l.__workletHash = 7315121230879;
|
|
l.__initData = __initData3;
|
|
const i = function i(a0, a1) {
|
|
L8: {
|
|
const r0 = a0 !== a1;
|
|
if (r0) {
|
|
if (a0 && r0) {
|
|
_ReanimatedRexport.runOnJS(callback3)();
|
|
break L8;
|
|
}
|
|
if (!(a0 ? a0 : a0 === a1)) {
|
|
_ReanimatedRexport.runOnJS(callback4)();
|
|
}
|
|
}
|
|
}
|
|
};
|
|
i.__closure = {
|
|
runOnJS: _ReanimatedRexport.runOnJS,
|
|
clearQuery: callback3,
|
|
cancelTimeout: callback4
|
|
};
|
|
i.__workletHash = 6379173436444;
|
|
i.__initData = __initData4;
|
|
useAnimatedReaction(l, i);
|
|
const r224 = state.trim().length > 0;
|
|
const r232 = [<Component tab={tab2} setTab={setTab2} updateQuery={callback2} searchRef={ref8} sharedState={sharedState2} />, state.trim().length === 0 && tab2 === c11290_31.SEARCH && <LaunchPadUnreadServers selectedGuildId={state4} setSelectedGuild={setState5} unreadPrivateChannelIds={stateFromStores2} unreadGuilds={stateFromStoresArray} guildHistory={memo} visible={visible} />, ,];
|
|
if (tab2 === c11290_31.SEARCH && r224) {
|
|
if (results == null) {
|
|
results = unreads;
|
|
}
|
|
r250 = <SearchResults results={results} query={state} />;
|
|
} else if (tab2 === c11290_31.SEARCH) {
|
|
let unreads2 = deferredValue?.unreads;
|
|
if (unreads2 == null) {
|
|
unreads2 = unreads;
|
|
}
|
|
let history2 = deferredValue?.channelHistory;
|
|
if (history2 == null) {
|
|
history2 = unreads;
|
|
}
|
|
r250 = <InitialResults selectedGuildId={state4} unreads={unreads2} history={history2} expandedHistory={expandedHistory} toggleExpandedHistory={callback5} />;
|
|
} else {
|
|
r250 = tab2 === c11290_31.DEV_TOOLS ? <DevToolsContent /> : tab2 === c11290_31.MEMBERS ? <LaunchPadMembers /> : <LaunchPadNotificationCenter />;
|
|
}
|
|
r232[2] = <View style={styles2.launchPadContent}>{r250}</View>;
|
|
return <View style={memo3}>{r232}</View>;
|
|
});
|
|
export default r141;
|