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

+633
View File
@@ -0,0 +1,633 @@
// 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;