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

+85
View File
@@ -0,0 +1,85 @@
// Metro module 14939 (f14940).
import { memo, useEffect, useRef } from "react";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import { isAndroid } from "../../../utils/PlatformUtils";
import ExternalPip_android from "../../external_pip/ExternalPip.android";
import useGuildsBarGesture from "./hooks/useGuildsBarGesture";
import useGuildsBarProps from "./hooks/useGuildsBarProps";
import { registerGuildVisibilityMethod } from "./utils/registerSidebarVisibilityMethods";
import StartupProfiler, { Profiles } from "../../app_startup/StartupProfiler";
import { GestureDetector } from "../../../_bundle/Module5273";
import NativeView from "../../core/native/NativeView";
import FastList from "../../../lib/native/FastList";
import GuildsBarDragPreview from "./GuildsBarDragPreview";
const useStyles = createStyles({
wrapper: {
position: "relative",
overflow: "visible",
flex: 1
}
});
const r27 = memo(function GuildsBar(props) {
let enableHome = props.enableHome;
if (enableHome === void 0) {
enableHome = false;
}
let listProps, fastListRef2, ref, ref2;
const styles = useStyles();
const guildsBarGesture = useGuildsBarGesture();
const { scrollPosition, gesture, scrollerRef, fastListRef, persistantKeys, onFastListScroll, onFastListScrollWorklet } = guildsBarGesture;
const guildsBarProps = useGuildsBarProps(fastListRef);
const { listProps: listProps2, listDataProps } = guildsBarProps;
useEffect(() => {
registerGuildVisibilityMethod(fastListRef);
}, [fastListRef]);
listProps = listProps2;
fastListRef2 = fastListRef;
ref = void 0;
ref2 = void 0;
ref = useRef(listProps);
ref2 = useRef(false);
useEffect(() => {
if (isAndroid()) {
let c30808_0 = ExternalPip_android.addOnPipModeChangedListener((a0) => {
if (a0) {
ref2.current = true;
}
});
return () => c30808_0 == null ? void 0 : c30808_0.remove();
}
}, []);
useEffect(() => {
const current = ref.current;
ref.current = listProps;
if (ref2.current) {
let chunkBase = listProps.chunkBase;
if (chunkBase == null) {
chunkBase = 0;
}
let chunkBase2 = current.chunkBase;
if (chunkBase2 == null) {
chunkBase2 = 0;
}
if (!(chunkBase <= chunkBase2)) {
ref2.current = false;
if (listProps.insetStart === current.insetStart && listProps.insetEnd === current.insetEnd) {
const current2 = fastListRef2.current;
if (current2 != null) {
current2.computeBlocks();
}
}
}
}
}, [fastListRef, listProps]);
return <StartupProfiler profile={Profiles.Guilds}>
<GestureDetector gesture={gesture}>
<NativeView style={styles.wrapper} collapsable={false} nativeID="guilds-bar-view">
<FastList {...listProps} {...listDataProps} ref={fastListRef} manualRef={scrollerRef} disableContentWrappers onScroll={onFastListScroll} onScrollWorklet={onFastListScrollWorklet} scrollPosValue={scrollPosition} stickySectionsVariant="sticky-mount" optimizeListItemRender persistantKeys={persistantKeys} disableRecyclingOnFullCompute style={enableHome ? {
overflow: "visible"
} : void 0} nativeID="guilds-bar-fast-list" />
<GuildsBarDragPreview />
</NativeView>
</GestureDetector>
</StartupProfiler>;
});
export default r27;
@@ -0,0 +1,141 @@
// Metro module 14991 (f14992).
import * as Module19 from "react";
import { useMemo } from "react";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useToken } from "../../../design/tokens/native/useToken";
import NativeView from "../../core/native/NativeView";
import { Icon } from "../../../design/void/native";
import { CalendarIcon } from "../../../design/components/Icon/native/redesign/generated/CalendarIcon";
import Module8326 from "../../../_bundle/Module8326";
import { StageIcon } from "../../../design/components/Icon/native/redesign/generated/StageIcon";
import Module7683 from "../../../_bundle/Module7683";
import { ScreenIcon } from "../../../design/components/Icon/native/redesign/generated/ScreenIcon";
import Module14992 from "../../../_bundle/Module14992";
import { VideoIcon } from "../../../design/components/Icon/native/redesign/generated/VideoIcon";
import Module14993 from "../../../_bundle/Module14993";
import { VoiceNormalIcon } from "../../../design/components/Icon/native/redesign/generated/VoiceNormalIcon";
import Module14994 from "../../../_bundle/Module14994";
import { AppsIcon } from "../../../design/components/Icon/native/redesign/generated/AppsIcon";
import Module6614 from "../../../_bundle/Module6614";
import useGuildMediaState from "../useGuildMediaState";
function $mk95043($env) {
return () => {
const r3 = $env;
const r5 = r3[1];
const icon = r5?.icon;
let source = r5?.source;
if (source == null) {
source = null;
}
return {
IconComponent: icon,
source,
isCurrentUserConnected: r3[0].isCurrentUserConnected
};
};
}
let useStyles, Component;
const getMediaIcon = function getMediaIcon({ audio, video, screenshare, liveStage, activeEvent, activity }) {
return activeEvent ? {
icon: CalendarIcon,
source: Module8326
} : liveStage ? {
icon: StageIcon,
source: Module7683
} : screenshare ? {
icon: ScreenIcon,
source: Module14992
} : video ? {
icon: VideoIcon,
source: Module14993
} : audio ? {
icon: VoiceNormalIcon,
source: Module14994
} : activity ? {
icon: AppsIcon,
source: Module6614
} : null;
};
useStyles = createStyles({
activityWrapper: {
position: "absolute",
top: -3,
right: -3,
justifyContent: "center",
width: 22,
height: 22,
padding: 3,
borderRadius: Module712.radii.md,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOWEST
},
activityIconWrapper: {
justifyContent: "center",
width: 16,
height: 16,
padding: 2,
borderRadius: Module712.radii.sm,
backgroundColor: Module712.colors.BACKGROUND_MOD_STRONG
},
activityIconWrapperActive: {
backgroundColor: Module712.colors.CONTROL_CONNECTED_BACKGROUND_DEFAULT
},
activityIcon: {
width: 12,
height: 12,
borderRadius: Module712.radii.none
}
});
Component = Module19.memo(function({ IconComponent, style, source, isCurrentUserConnected }) {
let r41;
const styles = useStyles();
let color = useToken(Module712.colors.ICON_DEFAULT);
const style2 = [styles.activityIconWrapper, isCurrentUserConnected ? styles.activityIconWrapperActive : null];
if (IconComponent != null) {
r41 = <IconComponent color={isCurrentUserConnected ? Module712.colors.WHITE : Module712.colors.ICON_DEFAULT} size="xxs" style={styles.activityIcon} />;
} else {
if (isCurrentUserConnected) {
color = Module712.unsafe_rawColors.WHITE;
}
r41 = <Icon source={source} color={color} style={styles.activityIcon} />;
}
return <NativeView style={[styles.activityWrapper, style]}>
<NativeView style={style2}>{r41}</NativeView>
</NativeView>;
});
const r57 = Module19.memo(function GuildsBarGuildActivityIndicator(props) {
let env21508;
const { guildId, style } = props;
const r4 = env21508 = {};
env21508[0] = void 0;
env21508[1] = void 0;
const guildMediaState = useGuildMediaState(guildId);
env21508[0] = guildMediaState;
const mediaIcon = getMediaIcon(guildMediaState);
env21508[1] = mediaIcon;
const r18 = [mediaIcon?.icon, , ,];
const source = mediaIcon?.source;
const r21 = $mk95043(r4);
r18[1] = source;
r18[2] = guildMediaState.isCurrentUserConnected;
const memo = useMemo(r21, r18);
const { IconComponent, source: source2, isCurrentUserConnected } = memo;
return source2 != null ? <Component IconComponent={IconComponent} style={style} source={source2} isCurrentUserConnected={isCurrentUserConnected} /> : null;
});
export default r57;
export { Component as GuildsBarActivityIndicatorBase };
export { getMediaIcon };
export function useActivityIndicatorState(a0) {
let env21507;
const r3 = env21507 = {};
const guildMediaState = useGuildMediaState(a0);
env21507[0] = guildMediaState;
const mediaIcon = getMediaIcon(guildMediaState);
env21507[1] = mediaIcon;
const r16 = [mediaIcon?.icon, , ,];
const source = mediaIcon?.source;
const r19 = $mk95043(r3);
r16[1] = source;
r16[2] = guildMediaState.isCurrentUserConnected;
return useMemo(r19, r16);
}
@@ -0,0 +1,335 @@
// Metro module 14952 (f14953).
import { useMemo, useCallback, useContext, useRef, useEffect } from "react";
import { IOS_POINTER_STYLE } from "../../../design/components/Styles/native/styleConstants";
import { GUILD_ITEM_HIT_SLOP, useGuildWrapperSize } from "./GuildsBarConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useToken } from "../../../design/tokens/native/useToken";
import * as _TransitionGroup from "../../../design/components/TransitionGroup/TransitionGroup";
import { TransitionItem } from "../../../design/components/TransitionGroup/TransitionGroup";
import * as _spring from "../../../design/animation/reanimated/spring/spring";
import * as _ReanimatedRexport from "../../reanimated/ReanimatedRexport";
import { useAnimatedStyle } from "../../reanimated/ReanimatedRexport";
import ReanimatedNativeView from "../../core/native/ReanimatedNativeView";
import usePressability from "../../core/native/usePressability";
import { HomeDrawerStateContext } from "../../home_drawer/native/useHomeDrawerGesture";
import { MobileHomeDrawerExperiment } from "../../home_drawer/native/HomeDrawerExperiment";
import { intl, t } from "../../../intl/index.native";
import { AccessibilityAnnouncer } from "../../../_bundle/Module3902";
import NativeView from "../../core/native/NativeView";
import { ClipViewAnimated } from "../../../design/components/Icon/native/ClipView";
let CORNER_SPRING_PHYSICS, BAR_SPRING_PHYSICS, useStyles, useStyles2, __initData, __initData2, renderUnreadIndicator, __initData3;
const UnreadIndicator = function UnreadIndicator(props) {
const { selected: selected2, sharedId, id, transitionState = _TransitionGroup.TransitionStates.MOUNTED } = props;
const MOUNTED = transitionState;
const cleanUp = props.cleanUp;
const token = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE);
const styles = useStyles(useGuildWrapperSize());
const disableEntering = MOUNTED === _TransitionGroup.TransitionStates.MOUNTED;
let c21485_6 = disableEntering;
const height = selected2 ? MOUNTED !== _TransitionGroup.TransitionStates.YEETED ? 40 : 8 : 8;
const memo = useMemo(() => [styles.unreadIndicator, {
height,
marginTop: height / 2 * -1,
marginLeft: MOUNTED === _TransitionGroup.TransitionStates.YEETED ? -4 : 0
}], [height, MOUNTED, styles.unreadIndicator]);
const h = function h(a0) {
let r31;
L5: {
L4: {
if (!c21485_6) {
if (sharedId != null && sharedId.get() !== id) {
break L4;
}
r31 = {
animations: {
originY: _spring.withSpring(a0.targetOriginY, BAR_SPRING_PHYSICS, "animate-always"),
originX: _spring.withSpring(a0.targetOriginX, BAR_SPRING_PHYSICS, "animate-always"),
height: _spring.withSpring(a0.targetHeight, BAR_SPRING_PHYSICS, "animate-always")
},
initialValues: {
height: 8,
originY: token / 2,
originX: -12
}
};
break L5;
}
}
r31 = {
animations: {},
initialValues: {}
};
}
return r31;
};
h.__closure = {
disableEntering,
sharedId,
id,
withSpring: _spring.withSpring,
BAR_SPRING_PHYSICS,
guildItemSize: token
};
h.__workletHash = 404454683979;
h.__initData = __initData;
const callback2 = useCallback(h, [disableEntering, sharedId, id, token]);
const _ = function _(a0) {
return {
animations: {
originY: _spring.withSpring(a0.targetOriginY, BAR_SPRING_PHYSICS, "animate-always"),
originX: _spring.withSpring(a0.targetOriginX, BAR_SPRING_PHYSICS, "animate-always"),
height: _spring.withSpring(a0.targetHeight, BAR_SPRING_PHYSICS, "animate-always")
},
initialValues: {
height: a0.currentHeight,
originY: a0.currentOriginY,
originX: a0.currentOriginX
},
callback: (a0) => {
if (MOUNTED === _TransitionGroup.TransitionStates.YEETED && a0 && cleanUp != null) {
_ReanimatedRexport.runOnJS(cleanUp)();
}
}
};
};
_.__closure = {
withSpring: _spring.withSpring,
BAR_SPRING_PHYSICS,
transitionState: MOUNTED,
TransitionStates: _TransitionGroup.TransitionStates,
cleanUp,
runOnJS: _ReanimatedRexport.runOnJS
};
_.__workletHash = 10632665703864;
_.__initData = __initData2;
return <ReanimatedNativeView collapsable={false} entering={callback2} layout={useCallback(_, [MOUNTED, cleanUp])} style={memo} pointerEvents="none" />;
};
renderUnreadIndicator = function renderUnreadIndicator(a0, a1, a2, a3) {
return <UnreadIndicator key={a0} sharedId={a1.sharedId} id={a1.id} selected={a1.selected} transitionState={a2} cleanUp={a3} />;
};
CORNER_SPRING_PHYSICS = {
mass: 0.8,
damping: 100,
stiffness: 150
};
BAR_SPRING_PHYSICS = {
mass: 0.25,
damping: 100,
stiffness: 200
};
useStyles = createStyles(function(height2 = 56) {
return {
draggedElement: {
opacity: 0
},
selectedBackgroundOverlay: {
position: "absolute",
top: 0,
left: 0,
right: 0,
bottom: 0
},
container: {
position: "relative",
overflow: "visible"
},
unreadIndicator: {
position: "absolute",
top: height2 / 2,
left: -4,
height: 8,
width: 8,
borderRadius: Module712.radii.xs,
backgroundColor: Module712.colors.TEXT_STRONG
},
expandedChildrenWrapper: {
position: "absolute",
left: height2 + 16,
top: 0,
right: 8,
height: height2,
transformOrigin: "0% 50%",
display: "flex",
flexDirection: "row",
alignItems: "center"
}
};
});
useStyles2 = createStyles((a0, a1, a2, a3) => {
let backgroundColor;
let r25 = "transparent";
if (a0) {
if (!a1) {
r25 = Module712.colors.BACKGROUND_SURFACE_HIGH;
}
backgroundColor = r25;
} else {
backgroundColor = Module712.colors.BACKGROUND_BRAND;
}
return {
pressableWrapper: {
position: "relative",
paddingTop: Module712.modules.mobile.GUILD_BAR_ITEM_MARGIN,
paddingBottom: Module712.modules.mobile.GUILD_BAR_ITEM_MARGIN,
paddingLeft: 12,
height: a3,
width: a2 + GUILD_ITEM_HIT_SLOP.left + GUILD_ITEM_HIT_SLOP.right
},
itemShape: {
position: "relative",
width: a2,
height: a2,
overflow: "hidden",
justifyContent: "center",
alignItems: "center",
backgroundColor: a1 ? "transparent" : Module712.colors.MOBILE_GUILDBAR_ICON_BACKGROUND_DEFAULT
},
itemShapeSelected: {
backgroundColor
}
};
});
__initData = {
code: "function GuildsBarAnimatedItemWrapperTsx1(values){const{disableEntering,sharedId,id,withSpring,BAR_SPRING_PHYSICS,guildItemSize}=this.__closure;if(disableEntering||sharedId!=null&&sharedId.get()!==id){return{animations:{},initialValues:{}};}return{animations:{originY:withSpring(values.targetOriginY,BAR_SPRING_PHYSICS,'animate-always'),originX:withSpring(values.targetOriginX,BAR_SPRING_PHYSICS,'animate-always'),height:withSpring(values.targetHeight,BAR_SPRING_PHYSICS,'animate-always')},initialValues:{height:8,originY:guildItemSize/2,originX:-12}};}"
};
__initData2 = {
code: "function GuildsBarAnimatedItemWrapperTsx2(values){const{withSpring,BAR_SPRING_PHYSICS,transitionState,TransitionStates,cleanUp,runOnJS}=this.__closure;return{animations:{originY:withSpring(values.targetOriginY,BAR_SPRING_PHYSICS,'animate-always'),originX:withSpring(values.targetOriginX,BAR_SPRING_PHYSICS,'animate-always'),height:withSpring(values.targetHeight,BAR_SPRING_PHYSICS,'animate-always')},initialValues:{height:values.currentHeight,originY:values.currentOriginY,originX:values.currentOriginX},callback:function(finished){if(transitionState===TransitionStates.YEETED&&finished&&cleanUp!=null){runOnJS(cleanUp)();}}};}"
};
__initData3 = {
code: "function GuildsBarAnimatedItemWrapperTsx3(){const{withSpring,circle,guildItemSelectedBorderRadius,guildItemSize,CORNER_SPRING_PHYSICS}=this.__closure;return{borderRadius:withSpring(!circle?guildItemSelectedBorderRadius:guildItemSize/2,CORNER_SPRING_PHYSICS,'animate-always')};}"
};
export default function GuildsBarAnimatedItemWrapper(props) {
let c21486_17, ref, c21486_19;
const { id: id2, selected, unread, circle, children, externalChildren, expandedChildren, config, label, hint, draggable = false } = props;
let c21486_4 = draggable;
const { cutouts, isDragTarget = false } = props;
let c21486_5 = isDragTarget;
const { dragState, isDragPreview = false, draggedItemSize = 0 } = props;
const top = draggedItemSize;
const { overState, styles: styles2, accessibilityActions, onAccessibilityAction, preventClipping = false, expanded, entering, exiting, layout, zIndex: zIndex2 = 0 } = props;
const zIndex = zIndex2;
const sharedId2 = props.sharedId;
c21486_17 = void 0;
ref = void 0;
c21486_19 = void 0;
const guildWrapperSize = useGuildWrapperSize();
const token2 = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE);
const styles3 = useStyles(guildWrapperSize);
const pressability = usePressability(config);
const token3 = useToken(Module712.modules.mobile.GUILD_ITEM_SELECTED_BORDER_RADIUS);
const W = () => ({
borderRadius: _spring.withSpring(circle ? token2 / 2 : token3, CORNER_SPRING_PHYSICS, "animate-always")
});
W.__closure = {
withSpring: _spring.withSpring,
circle,
guildItemSelectedBorderRadius: token3,
guildItemSize: token2,
CORNER_SPRING_PHYSICS
};
W.__workletHash = 15930523896348;
W.__initData = __initData3;
const animatedStyle = useAnimatedStyle(W);
const context = useContext(HomeDrawerStateContext);
const { guildsBarLabelDrawerStyle, guildsBarIconDrawerStyle, guildsBarUnreadDrawerStyle } = context;
const memo = useMemo(() => {
let r20, top2;
const r7 = c21486_5 && dragState === "dragging" ? overState === "self" ? overState != null && overState !== "self" ? dragState !== "dragging" ? "none" : "drag-target" : "none" : "hide" : overState != null && overState !== "self" ? dragState !== "dragging" ? "none" : "drag-target" : "none";
const height2 = r7 === "drag-target" ? guildWrapperSize + top : r7 !== "hide" ? guildWrapperSize : 0;
L17: {
r20 = {
height: height2,
top: null,
zIndex: null
};
top2 = 0;
if (r7 === "drag-target") {
if (overState !== "before") {
top2 = 0;
if (overState !== "convert-before") {
break L17;
}
}
top2 = top;
}
}
r20.top = top2;
r20.zIndex = zIndex;
return r20;
}, [isDragTarget, dragState, top, overState, zIndex, guildWrapperSize]);
const memo2 = useMemo(() => [styles2.pressableWrapper, c21486_5 ? styles3.draggedElement : void 0, IOS_POINTER_STYLE], [styles2.pressableWrapper, isDragTarget, styles3.draggedElement]);
const r94 = (unread ? !unread : !selected) || isDragTarget || isDragPreview;
c21486_17 = r94;
const memo3 = useMemo(() => {
if (c21486_17) {
return void 0;
}
return {
selected,
sharedId: sharedId2,
id: id2
};
}, [r94, selected, sharedId2, id2]);
const enableHome = MobileHomeDrawerExperiment.useConfig({
location: "guilds_bar"
}).enableHome;
ref = useRef(void 0);
useEffect(() => {
if (ref.current !== void 0) {
if (ref.current !== expanded) {
AccessibilityAnnouncer.announce(intl.string(expanded ? t.CUnsOR : t.jsudFd));
ref.current = expanded;
}
} else {
ref.current = expanded;
}
}, [expanded]);
const r2 = accessibilityActions != null && accessibilityActions.length > 0;
c21486_19 = r2;
const memo4 = useMemo(() => {
const r10 = hint != null && hint.length > 0;
const r5 = [];
if (r10) {
r5.push(hint);
}
if (c21486_4) {
r5.push(intl.string(t.BGMUFB));
}
if (c21486_19) {
r5.push(intl.string(t.X2x0MF));
}
return r5.join(". ");
}, [hint, draggable, r2]);
const r122 = enableHome ? styles3.container : null;
return <ReanimatedNativeView style={[r122, memo]} layout={layout} entering={entering} exiting={exiting} preventClipping={preventClipping} collapsable={false}>
<ReanimatedNativeView style={enableHome ? guildsBarIconDrawerStyle : null}>
<NativeView {...pressability} style={memo2} accessibilityLabel={label} accessible accessibilityRole="button" accessibilityState={{
selected,
expanded
}} hitSlop={GUILD_ITEM_HIT_SLOP} accessibilityHint={memo4.length > 0 ? memo4 : void 0} collapsable={false} accessibilityActions={accessibilityActions} onAccessibilityAction={onAccessibilityAction}>
{externalChildren}
<ReanimatedNativeView pointerEvents="none" style={[{
position: "absolute",
width: guildWrapperSize,
height: guildWrapperSize
}, enableHome ? guildsBarUnreadDrawerStyle : null]}>
<TransitionItem item={memo3} renderItem={renderUnreadIndicator} />
</ReanimatedNativeView>
<ClipViewAnimated style={[styles2.itemShape, animatedStyle]} cutouts={cutouts}>
<NativeView pointerEvents="none" style={[styles3.selectedBackgroundOverlay, selected ? styles2.itemShapeSelected : null]} />
{isDragTarget ? !isDragTarget : children}
</ClipViewAnimated>
</NativeView>
</ReanimatedNativeView>
{enableHome ? <ReanimatedNativeView {...pressability} style={[styles3.expandedChildrenWrapper, guildsBarLabelDrawerStyle]}>
{isDragTarget ? !isDragTarget : expandedChildren}
</ReanimatedNativeView> : null}
</ReanimatedNativeView>;
};
export function useGuildsBarAnimatedWrapperStyles(r2 = {}) {
const { disableSelectedColor = false, disableBGColor = false } = r2;
return useStyles2(disableSelectedColor, disableBGColor, useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE), useGuildWrapperSize());
}
export { UnreadIndicator };
export { renderUnreadIndicator };
@@ -0,0 +1,47 @@
// Metro module 14942 (f14943).
import { useToken } from "../../../design/tokens/native/useToken";
import Module712 from "../../../_bundle/Module712";
const r13 = {
MESSAGES: 0,
0: "MESSAGES",
FAVORITES: 1,
1: "FAVORITES",
PENDING_JOIN_REQUESTS: 2,
2: "PENDING_JOIN_REQUESTS",
LURKING_GUILDS: 3,
3: "LURKING_GUILDS",
GUEST_GUILDS: 4,
4: "GUEST_GUILDS",
UNREAD_PRIVATE_CHANNELS: 5,
5: "UNREAD_PRIVATE_CHANNELS",
SEPARATOR: 6,
6: "SEPARATOR",
GUILDS: 7,
7: "GUILDS"
};
export const GUILD_ITEM_SIZE = 48;
export const GUILD_LIST_WIDTH = 72;
export const GUILD_ITEM_EMPTY_SRC = {
uri: "invalid"
};
export const GUILD_ITEM_HIT_SLOP = {
top: 4,
left: 12,
bottom: 4,
right: 12
};
export const GUILD_ITEM_BADGE_SIZE = 16;
export function useGuildWrapperSize() {
return useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE) + 2 * useToken(Module712.modules.mobile.GUILD_BAR_ITEM_MARGIN);
}
export { r13 as FastListRenderSections };
export const FOLDER_SPRING_PHYSICS = {
mass: 0.5,
damping: 30,
stiffness: 300
};
export const TRANSITION_PHYSICS = {
mass: 0.5,
damping: 15,
stiffness: 120
};
@@ -0,0 +1,55 @@
// Metro module 15010 (f15011).
import { memo } from "react";
import { View } from "react-native";
import { AnalyticsPages, TooltipNames, UpsellTypes } from "../../../Constants";
import { PremiumUpsellTypes } from "../../premium/PremiumConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import "../../../_bundle/asyncRequire";
import { isAtGuildCapAndNonPremium } from "../../premium/GuildCapUpsellHooks";
import PremiumUpsellUtils from "../../../utils/native/PremiumUpsellUtils";
import AnalyticsLocation from "../../app_analytics/AnalyticsLocation";
import MobileVisualRefreshExperiment from "../../themes/experiments/MobileVisualRefreshExperiment";
import GuildsBarAnimatedItemWrapper, { useGuildsBarAnimatedWrapperStyles } from "./GuildsBarAnimatedItemWrapper";
import { intl, t } from "../../../intl/index.native";
import { HomeDrawerAddServerRowExpandedChildren } from "../../home_drawer/native/HomeDrawerAddServerRow";
import { CirclePlusIcon } from "../../../design/components/Icon/native/redesign/generated/CirclePlusIcon";
import Module712 from "../../../_bundle/Module712";
let useStyles, config;
export async function handleCreateJoinGuildPress() {
let c27883_1;
c27883_1 = void 0;
let c30818_0 = (await import("../../tooltip/TooltipActionCreators")).default;
let c30818_1 = (await import("../../create_guild/native/CreateGuildModalActionCreators")).default;
c30818_0.acknowledgeTooltip(TooltipNames.GUILD_TOOLTIP);
if (isAtGuildCapAndNonPremium()) {
PremiumUpsellUtils.handleShowUpsellAlert({
initialUpsellKey: UpsellTypes.GUILD_CAP,
analyticsLocation: {
page: AnalyticsPages.CREATE_JOIN_GUILD_MODAL
},
analyticsLocations: [AnalyticsLocation.NEW_GUILD_BUTTON],
analyticsProperties: {
type: PremiumUpsellTypes.GUILD_CAP_MODAL_UPSELL
}
});
} else {
c30818_1.openCreateGuildModal();
}
}
useStyles = createStyles({
stretch: {
alignSelf: "stretch"
}
});
config = {
onPress: handleCreateJoinGuildPress
};
const r42 = memo(function GuildsBarCreateJoinButton() {
const r12 = MobileVisualRefreshExperiment("GuildsBarCreateJoinButton");
return <View style={useStyles().stretch}>
<GuildsBarAnimatedItemWrapper selected={false} circle={!r12} unread={false} styles={useGuildsBarAnimatedWrapperStyles()} overState={void 0} config={config} label={intl.string(t.l5WIbf)} expandedChildren={<HomeDrawerAddServerRowExpandedChildren />}>
<CirclePlusIcon size="md" color={Module712.colors.MOBILE_GUILDBAR_ICON_DEFAULT} />
</GuildsBarAnimatedItemWrapper>
</View>;
});
export default r42;
@@ -0,0 +1,84 @@
// Metro module 14999 (f15000).
import * as Module19 from "react";
import { useMemo } from "react";
import AuthenticationStore from "../../../stores/AuthenticationStore";
import CallStore from "../../../stores/CallStore";
import ChannelStore from "../../../stores/ChannelStore";
import GuildReadStateStore from "../../../stores/GuildReadStateStore";
import RelationshipStore from "../../../stores/RelationshipStore";
import UserStore from "../../../stores/UserStore";
import { ChannelTypes } from "../../../Constants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import GuildsBarAnimatedItemWrapper, { useGuildsBarAnimatedWrapperStyles } from "./GuildsBarAnimatedItemWrapper";
import { useStateFromStores, useStateFromStoresObject } from "../../../_bundle/Module589";
import getChannelA11yLabel from "../../channel/getChannelA11yLabel";
import { intl, t } from "../../../intl/index.native";
import useGuildsBarBottomRightBadge from "./hooks/useGuildsBarBottomRightBadge";
import { transitionToChannel } from "../../routing/transitionToChannel";
import { openChannelLongPressActionSheet } from "../../channel/native/openChannelLongPressActionSheet";
import HomeDrawerDM from "../../home_drawer/native/HomeDrawerDM";
import GroupDMAvatar from "../../group_dm/native/GroupDMAvatar";
import { AvatarSizes } from "../../../design/void/native";
import FastImage from "../../../components_native/common/FastImage";
const useStyles = createStyles({
dm: {
width: Module712.modules.mobile.GUILD_BAR_ITEM_SIZE,
height: Module712.modules.mobile.GUILD_BAR_ITEM_SIZE
}
});
const r51 = Module19.memo(function GuildsBarDirectMessage(props) {
let channel, dmRecipient;
const channelId = props.channelId;
channel = void 0;
dmRecipient = void 0;
const styles = useStyles();
const styles2 = useGuildsBarAnimatedWrapperStyles({
disableSelectedColor: true,
disableBGColor: true
});
const stateFromStores = useStateFromStores([GuildReadStateStore], () => GuildReadStateStore.getMentionCountForPrivateChannel(channelId).count);
const stateFromStoresObject = useStateFromStoresObject([ChannelStore, UserStore, RelationshipStore, CallStore, AuthenticationStore], () => {
const channel2 = ChannelStore.getChannel(channelId);
const dmRecipient2 = channel2?.type === ChannelTypes.DM ? UserStore.getUser(channel2.getRecipientId()) : void 0;
const call = CallStore.getCall(channelId);
const id = AuthenticationStore.getId();
const isIncomingCall = call != null && id != null && call.ringing.includes(id);
const isOngoingCall = CallStore.isCallActive(channelId) && !isIncomingCall;
return {
channel: channel2,
dmRecipient: dmRecipient2,
label: channel2 != null ? getChannelA11yLabel({
channel: channel2,
unread: stateFromStores > 0,
mentionCount: stateFromStores,
isIncomingCall,
isOngoingCall
}) : intl.string(t.zLZPmk)
};
});
channel = stateFromStoresObject.channel;
dmRecipient = stateFromStoresObject.dmRecipient;
const label = stateFromStoresObject.label;
const guildsBarBottomRightBadge = useGuildsBarBottomRightBadge({
mentionCount: stateFromStores
});
const { badge, cutouts } = guildsBarBottomRightBadge;
const memo = useMemo(() => (channel == null ? void 0 : channel.isDM()) ? dmRecipient == null ? void 0 : dmRecipient.getAvatarSource(void 0) : void 0, [channel, dmRecipient]);
const memo2 = useMemo(() => ({
onPress: () => {
if (channel != null) {
transitionToChannel(channel.id);
}
},
onLongPress: () => {
if (channel != null) {
openChannelLongPressActionSheet(channel.id);
}
}
}), [channel]);
return <GuildsBarAnimatedItemWrapper selected={false} circle={!(channel == null ? void 0 : channel.isMultiUserDM())} unread styles={styles2} label={label} overState={void 0} config={memo2} cutouts={cutouts} externalChildren={badge} expandedChildren={channel != null ? <HomeDrawerDM channel={channel} /> : null}>
{(channel == null ? void 0 : channel.isMultiUserDM()) ? <GroupDMAvatar channel={channel} size={AvatarSizes.LARGE_48} pileSizeOverride={AvatarSizes.REFRESH_MEDIUM_32} animate /> : memo != null ? <FastImage style={styles.dm} source={memo} /> : null}
</GuildsBarAnimatedItemWrapper>;
});
export default r51;
@@ -0,0 +1,221 @@
// Metro module 14941 (f14942).
import { GuildsNodeType } from "../../../stores/SortedGuildStore";
import { createWithEqualityFn } from "../../../_bundle/identity_700";
import { makeMutable } from "../../reanimated/ReanimatedRexport";
import { batchUpdates } from "../../../_bundle/Module705";
import SentryUtils_native from "../../../utils/SentryUtils.native";
import { shallow } from "../../../_bundle/Module3802";
let c10569_4 = {
mode: null,
initialX: 0,
initialY: 0,
absoluteX: 0,
absoluteY: 0
};
let c10569_5 = -1;
const withEqualityFn = createWithEqualityFn((c21471_0, c21471_1) => ({
dragSpecs: void 0,
overSpecs: void 0,
dropSpecs: void 0,
dragRegion: makeMutable({
min: 0,
max: 0
}),
gestureState: makeMutable(c10569_4),
dragDropInProgress: makeMutable(false),
listInsets: makeMutable({
start: 0,
end: 0
}),
scrollPosition: makeMutable(0),
windowSize: 0,
setStateShallow: (a0) => {
const r10 = c21471_1();
let c27867_1 = r10;
for (const key in a0) {
if (r10[key] !== a0[key]) {
batchUpdates(() => c21471_0({
...c27867_1,
...a0
}));
return void 0;
}
}
},
dropStart: (a0) => {
const dropSpecs = a0;
const r17 = c21471_1();
const { dropSpecs: dropSpecs2, gestureState } = r17;
SentryUtils_native.addBreadcrumb({
category: "GuildsBarGesture",
message: "dropStart started",
data: {
newDropSpec: a0,
dropSpecs: dropSpecs2,
gestureState: gestureState.get()
}
});
if (dropSpecs2 != null) {
throw new Error("GuildsBarDnDStore.dropStart: you cannot start a drop while an existing drop is in progress");
}
batchUpdates(() => c21471_0({
dropSpecs,
dragSpecs: void 0,
overSpecs: void 0
}));
clearTimeout(c10569_5);
c10569_5 = setTimeout(() => {
const r4 = gestureState.get();
if (r4.mode === "drag") {
gestureState.set({
...r4,
mode: null
});
}
}, 0);
},
dropComplete: () => {
const r17 = c21471_1();
const { gestureState: gestureState2, dragDropInProgress, dropSpecs: dropSpecs2, dragSpecs } = r17;
SentryUtils_native.addBreadcrumb({
category: "GuildsBarGesture",
message: "dropComplete started",
data: {
gestureState: gestureState2.get(),
dropSpecs: dropSpecs2,
dragSpecs
}
});
if (dropSpecs2 != null) {
batchUpdates(() => c21471_0({
dropSpecs: void 0
}));
clearTimeout(c10569_5);
if (dragSpecs == null) {
dragDropInProgress.set(false);
}
const r36 = gestureState2.get();
if (r36.mode === "drag") {
gestureState2.set({
...r36,
mode: null
});
}
}
}
}));
export default withEqualityFn;
export { c10569_4 as INITIAL_GESTURE_STATE };
export function useItemDragState(c21472_0, c21472_1) {
return withEqualityFn(({ dragSpecs, overSpecs, dropSpecs: dropSpecs2, dragDropInProgress }) => {
if (dragSpecs == null && dropSpecs2 == null) {
return {
isDragTarget: false,
dragState: void 0,
overState: void 0,
itemSize: 0,
dragDropInProgress
};
}
let isDragTarget = !c21472_1;
if (!c21472_1) {
const r13 = dragSpecs == null ? void 0 : dragSpecs.node.id;
isDragTarget = r13 === c21472_0 && overSpecs?.node != null || (dropSpecs2 == null ? void 0 : dropSpecs2.dragNode.id) === c21472_0;
}
let r21 = !c21472_1;
if (!c21472_1) {
const r23 = overSpecs == null ? void 0 : overSpecs.node.id;
r21 = r23 === c21472_0 || (dropSpecs2 == null ? void 0 : dropSpecs2.overNode.id) === c21472_0;
}
const dragState = isDragTarget ? dropSpecs2 == null ? "dragging" : "dropping" : r21 ? dropSpecs2 == null ? "dragging" : "dropping" : void 0;
let overState = void 0;
if (r21) {
let r35 = dropSpecs2?.overState;
if (r35 == null) {
r35 = overSpecs?.state;
}
overState = r35;
}
let itemSize = 0;
if (r21) {
let r40 = dropSpecs2?.itemSize;
if (r40 == null) {
r40 = dragSpecs?.itemSize;
}
if (r40 == null) {
r40 = 0;
}
itemSize = r40;
}
return {
isDragTarget,
dragState,
overState,
itemSize,
dragDropInProgress
};
}, shallow);
}
export function useFolderBGHeightOffset(c21473_0) {
return withEqualityFn((a0) => {
let r1, r27;
const { dragSpecs, overSpecs } = a0;
const r3 = a0.dropSpecs != null;
let r12 = 0;
if (!r3) {
const r13 = overSpecs == null;
r12 = 0;
if (!r13) {
const r14 = dragSpecs == null;
r12 = 0;
if (!r14) {
const state = overSpecs.state;
r12 = 0;
if (state !== "self") {
const type = dragSpecs.node.type;
const GUILD = GuildsNodeType.GUILD;
r12 = 0;
if (type === GUILD) {
L16: {
const parentId = dragSpecs.node.parentId;
if (parentId === c21473_0) {
L15: {
const parentId2 = overSpecs.node.parentId;
r1 = 0;
if (parentId2 !== c21473_0) {
if (overSpecs.node.id === c21473_0) {
const state3 = overSpecs.state;
r1 = 0;
if (state3 === "after") {
break L15;
}
}
r1 = -1 * dragSpecs.itemSize;
}
}
r27 = r1;
} else {
if (overSpecs.node.parentId !== c21473_0) {
const id = overSpecs.node.id;
r27 = 0;
if (id !== c21473_0) {
break L16;
}
const state2 = overSpecs.state;
r27 = 0;
if (state2 !== "after") {
break L16;
}
}
r27 = dragSpecs.itemSize;
}
}
r12 = r27;
}
}
}
}
}
return r12;
});
}
@@ -0,0 +1,266 @@
// Metro module 15020 (f15021).
import * as Module19 from "react";
import { useMemo, useEffect } from "react";
import { GuildsNodeType } from "../../../stores/SortedGuildStore";
import GuildsBarDnDStore from "./GuildsBarDnDStore";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import { MobileHomeDrawerExperiment } from "../../home_drawer/native/HomeDrawerExperiment";
import * as _ReanimatedRexport from "../../reanimated/ReanimatedRexport";
import { useDerivedValue, useAnimatedStyle, useSharedValue } from "../../reanimated/ReanimatedRexport";
import * as _spring from "../../../design/animation/reanimated/spring/spring";
import ReanimatedNativeView from "../../core/native/ReanimatedNativeView";
import * as _TransitionGroup from "../../../design/components/TransitionGroup/TransitionGroup";
import { TransitionGroup } from "../../../design/components/TransitionGroup/TransitionGroup";
import GuildsBarGuildFolder from "./GuildsBarGuildFolder";
import GuildsBarGuild from "./GuildsBarGuild";
import { shallow } from "../../../_bundle/Module3802";
let useStyles, DRAG_SPRING_PHYSICS, __initData, __initData2, __initData3, __initData4, getItemPreviewKey, renderAnimatedItemPreview, __initData5, __initData6, AnimatedItemPreview;
const PreviewItem = function PreviewItem(props) {
let derivedValue, derivedValue2;
const { DragRegion, draggedHeight } = props;
let draggedNode = props.draggedNode;
const { dropComplete, gestureState, listInsets, overNode, overState, scrollPosition, windowSize, dropPosition } = props;
derivedValue = void 0;
derivedValue2 = void 0;
const styles = useStyles();
const enableHome = MobileHomeDrawerExperiment.useConfig({
location: "drag-preview"
}).enableHome;
const x = () => Math.max(scrollPosition.get() < DragRegion.get().min ? DragRegion.get().min - scrollPosition.get() : 0, listInsets.get().start);
x.__closure = {
scrollPosition,
DragRegion,
listInsets
};
x.__workletHash = 17436881889698;
x.__initData = __initData;
derivedValue = useDerivedValue(x);
const y = () => Math.min(scrollPosition.get() + (windowSize - listInsets.get().end) > DragRegion.get().max ? DragRegion.get().max - draggedHeight - scrollPosition.get() : windowSize - listInsets.get().end - draggedHeight, windowSize - listInsets.get().end - draggedHeight);
y.__closure = {
scrollPosition,
windowSize,
listInsets,
DragRegion,
draggedHeight
};
y.__workletHash = 4371355784;
y.__initData = __initData2;
derivedValue2 = useDerivedValue(y);
const G = function G() {
const r7 = dropPosition != null ? dropPosition - scrollPosition.get() : gestureState.get().absoluteY - draggedHeight / 2;
const r35 = gestureState.get().mode != null && dropPosition == null ? Math.min(Math.max(r7, derivedValue.get()), derivedValue2.get()) : Math.max(-draggedHeight, Math.min(r7, windowSize));
const r52 = function t(a0) {
if (a0 ? dropPosition != null : a0) {
_ReanimatedRexport.runOnJS(dropComplete)();
}
};
r52.__closure = {
dropPosition,
runOnJS: _ReanimatedRexport.runOnJS,
dropComplete
};
r52.__workletHash = 12640145939434;
r52.__initData = __initData4;
return {
top: _spring.withSpring(r35, DRAG_SPRING_PHYSICS, "animate-always", r52)
};
};
G.__closure = {
dropPosition,
scrollPosition,
gestureState,
draggedHeight,
minY: derivedValue,
maxY: derivedValue2,
windowSize,
withSpring: _spring.withSpring,
DRAG_SPRING_PHYSICS,
runOnJS: _ReanimatedRexport.runOnJS,
dropComplete
};
G.__workletHash = 5676492640532;
G.__initData = __initData3;
const animatedStyle = useAnimatedStyle(G);
const memo = useMemo(() => {
if (!(overState !== "convert-after" && overState !== "convert-before") && overNode != null) {
return {
type: GuildsNodeType.FOLDER,
id: -1,
parentId: void 0,
name: void 0,
color: void 0,
expanded: false,
children: [overNode]
};
}
}, [overState, overNode]);
const style = [styles.dragPreview, enableHome ? styles.dragPreviewHome : null, animatedStyle];
if (memo != null) {
draggedNode = memo;
}
return <ReanimatedNativeView style={style} nativeID="guilds-bar-drag-preview">
<TransitionGroup renderItem={renderAnimatedItemPreview} items={[draggedNode]} getItemKey={getItemPreviewKey} />
</ReanimatedNativeView>;
};
getItemPreviewKey = function getItemPreviewKey(a0) {
return `${a0.id}`;
};
renderAnimatedItemPreview = function renderAnimatedItemPreview(a0, a1, a2, a3) {
return <AnimatedItemPreview key={a0} node={a1} transitionState={a2} cleanUp={a3} />;
};
AnimatedItemPreview = function AnimatedItemPreview(props) {
const { node, transitionState, cleanUp } = props;
const styles = useStyles();
let enableHome = MobileHomeDrawerExperiment.useConfig({
location: "drag-preview"
}).enableHome;
const sharedValue = useSharedValue(transitionState === _TransitionGroup.TransitionStates.ENTERED ? 0 : 1);
const isFolder = node.type === GuildsNodeType.FOLDER;
if (enableHome) {
enableHome = !isFolder;
}
if (enableHome) {
enableHome = transitionState !== _TransitionGroup.TransitionStates.YEETED;
}
const w = function w() {
const r26 = sharedValue.get();
let r10 = 1;
const r0 = isFolder ? r26 === 1 ? 1 : 0.3 : r26 === 1 ? 1 : 0.33;
const r30 = !isFolder && sharedValue.get() !== 1 ? {
translateX: 10,
translateY: -10
} : {
translateX: 0,
translateY: 0
};
const { translateX, translateY } = r30;
const zIndex = isFolder ? 0 : 1;
const transform = [{
translateY: _spring.withSpring(translateY, DRAG_SPRING_PHYSICS, "animate-always")
}, {
translateX: _spring.withSpring(translateX, DRAG_SPRING_PHYSICS, "animate-always")
}, ,];
const r45 = function t(a0) {
if ((a0 ? transitionState === _TransitionGroup.TransitionStates.YEETED : a0) && isFolder) {
_ReanimatedRexport.runOnJS(cleanUp)();
}
};
r45.__closure = {
transitionState,
TransitionStates: _TransitionGroup.TransitionStates,
isFolder,
runOnJS: _ReanimatedRexport.runOnJS,
cleanUp
};
r45.__workletHash = 9409925192880;
r45.__initData = __initData6;
transform[2] = {
scale: _spring.withSpring(r0, DRAG_SPRING_PHYSICS, "animate-always", r45)
};
if (isFolder) {
r10 = sharedValue.get();
}
return {
zIndex,
transform,
opacity: _spring.withSpring(r10, DRAG_SPRING_PHYSICS, "animate-always")
};
};
w.__closure = {
isFolder,
visible: sharedValue,
withSpring: _spring.withSpring,
DRAG_SPRING_PHYSICS,
transitionState,
TransitionStates: _TransitionGroup.TransitionStates,
runOnJS: _ReanimatedRexport.runOnJS,
cleanUp
};
w.__workletHash = 13465198693221;
w.__initData = __initData5;
const animatedStyle = useAnimatedStyle(w);
useEffect(() => {
sharedValue.set(transitionState === _TransitionGroup.TransitionStates.YEETED ? 0 : 1);
});
return <ReanimatedNativeView style={[styles.animatedPreviewStyle, enableHome ? styles.animatedPreviewStyleHome : null, animatedStyle]}>
{node.type === GuildsNodeType.FOLDER ? <GuildsBarGuildFolder id={node.id} expanded={node.expanded} color={node.color} name={node.name} childNodes={node.children} isDragPreview hideExpandedChildren={!enableHome} /> : <GuildsBarGuild guildId={node.id} isDragPreview hideExpandedChildren={!enableHome} />}
</ReanimatedNativeView>;
};
useStyles = createStyles({
dragPreview: {
position: "absolute",
left: 0
},
animatedPreviewStyle: {
position: "absolute"
},
dragPreviewHome: {
right: 0
},
animatedPreviewStyleHome: {
left: 0,
right: 0
}
});
DRAG_SPRING_PHYSICS = {
mass: 0.5,
damping: 80,
stiffness: 320
};
__initData = {
code: "function GuildsBarDragPreviewTsx1(){const{scrollPosition,DragRegion,listInsets}=this.__closure;return Math.max(scrollPosition.get()<DragRegion.get().min?DragRegion.get().min-scrollPosition.get():0,listInsets.get().start);}"
};
__initData2 = {
code: "function GuildsBarDragPreviewTsx2(){const{scrollPosition,windowSize,listInsets,DragRegion,draggedHeight}=this.__closure;return Math.min(scrollPosition.get()+(windowSize-listInsets.get().end)>DragRegion.get().max?DragRegion.get().max-draggedHeight-scrollPosition.get():windowSize-listInsets.get().end-draggedHeight,windowSize-listInsets.get().end-draggedHeight);}"
};
__initData3 = {
code: "function GuildsBarDragPreviewTsx3(){const{dropPosition,scrollPosition,gestureState,draggedHeight,minY,maxY,windowSize,withSpring,DRAG_SPRING_PHYSICS,runOnJS,dropComplete}=this.__closure;let translateY=function(){if(dropPosition!=null){return dropPosition-scrollPosition.get();}return gestureState.get().absoluteY-draggedHeight/2;}();if(gestureState.get().mode!=null&&dropPosition==null){translateY=Math.min(Math.max(translateY,minY.get()),maxY.get());}else{translateY=Math.max(-draggedHeight,Math.min(translateY,windowSize));}return{top:withSpring(translateY,DRAG_SPRING_PHYSICS,'animate-always',function(finished){if(finished&&dropPosition!=null){runOnJS(dropComplete)();}})};}"
};
__initData4 = {
code: "function GuildsBarDragPreviewTsx4(finished){const{dropPosition,runOnJS,dropComplete}=this.__closure;if(finished&&dropPosition!=null){runOnJS(dropComplete)();}}"
};
__initData5 = {
code: "function GuildsBarDragPreviewTsx5(){const{isFolder,visible,withSpring,DRAG_SPRING_PHYSICS,transitionState,TransitionStates,runOnJS,cleanUp}=this.__closure;const targetScale=function(){if(isFolder){return visible.get()===1?1:0.3;}return visible.get()===1?1:0.33;}();const{translateX:translateX,translateY:translateY}=function(){if(isFolder){return{translateX:0,translateY:0};}if(visible.get()===1){return{translateX:0,translateY:0};}return{translateX:10,translateY:-10};}();return{zIndex:isFolder?0:1,transform:[{translateY:withSpring(translateY,DRAG_SPRING_PHYSICS,'animate-always')},{translateX:withSpring(translateX,DRAG_SPRING_PHYSICS,'animate-always')},{scale:withSpring(targetScale,DRAG_SPRING_PHYSICS,'animate-always',function(finished){if(finished&&transitionState===TransitionStates.YEETED&&isFolder){runOnJS(cleanUp)();}})}],opacity:withSpring(isFolder?visible.get():1,DRAG_SPRING_PHYSICS,'animate-always')};}"
};
__initData6 = {
code: "function GuildsBarDragPreviewTsx6(finished){const{transitionState,TransitionStates,isFolder,runOnJS,cleanUp}=this.__closure;if(finished&&transitionState===TransitionStates.YEETED&&isFolder){runOnJS(cleanUp)();}}"
};
const r45 = Module19.memo(function GuildsBarDragPreview() {
const props = GuildsBarDnDStore(({ dragSpecs, overSpecs, gestureState: gestureState2, scrollPosition: scrollPosition2, DragRegion: dragRegion2, windowSize: windowSize2, dropComplete: dropComplete2, listInsets: listInsets2, dropSpecs }) => {
if (dropSpecs != null) {
const overState2 = dropSpecs.overState;
return {
draggedNode: dropSpecs.dragNode,
draggedHeight: dropSpecs.itemSize,
overState: overState2,
overNode: overState2.startsWith("convert") ? dropSpecs.overNode : void 0,
dropPosition: dropSpecs.dropPosition,
gestureState: gestureState2,
scrollPosition: scrollPosition2,
DragRegion: dragRegion2,
windowSize: windowSize2,
dropComplete: dropComplete2,
listInsets: listInsets2
};
}
if (dragSpecs != null && overSpecs != null) {
const state = overSpecs.state;
return {
draggedNode: dragSpecs.node,
draggedHeight: dragSpecs.itemSize,
overState: state,
overNode: state.startsWith("convert") ? overSpecs.node : void 0,
dropPosition: void 0,
gestureState: gestureState2,
scrollPosition: scrollPosition2,
DragRegion: dragRegion2,
windowSize: windowSize2,
dropComplete: dropComplete2,
listInsets: listInsets2
};
}
return null;
}, shallow);
return props != null ? <PreviewItem {...props} /> : null;
});
export default r45;
@@ -0,0 +1,35 @@
// Metro module 14969 (f14970).
import { memo } from "react";
import FavoriteStore from "../../favorites/FavoriteStore";
import { FAVORITES } from "../../../Constants";
import transitionGuildsBarToGuildOrOpenSelectedChannel from "./utils/transitionGuildsBarToGuildOrOpenSelectedChannel";
import MobileVisualRefreshExperiment from "../../themes/experiments/MobileVisualRefreshExperiment";
import GuildsBarAnimatedItemWrapper, { useGuildsBarAnimatedWrapperStyles } from "./GuildsBarAnimatedItemWrapper";
import { useIsFavoritesGuildSelected } from "../../favorites/FavoritesHooks";
import { useStateFromStores } from "../../../_bundle/Module589";
import useFavoritesGuildUnreads from "../../favorites/hooks/useFavoritesGuildUnreads";
import useGuildsBarBottomRightBadge from "./hooks/useGuildsBarBottomRightBadge";
import { intl, t } from "../../../intl/index.native";
import { HomeDrawerFavoritesRowExpandedChildren } from "../../home_drawer/native/HomeDrawerFavoritesRow";
import { StarIcon } from "../../../design/components/Icon/native/redesign/generated/StarIcon";
import Module712 from "../../../_bundle/Module712";
const config = {
onPress: () => {
transitionGuildsBarToGuildOrOpenSelectedChannel(FAVORITES);
}
};
const r27 = memo(function GuildsBarFavorites() {
const r15 = MobileVisualRefreshExperiment("GuildsBarFavorites");
const styles = useGuildsBarAnimatedWrapperStyles();
const isFavoritesGuildSelected = useIsFavoritesGuildSelected();
const favoritesGuildUnreads = useFavoritesGuildUnreads(useStateFromStores([FavoriteStore], () => FavoriteStore.getFavoriteChannels()));
const { badge, unread } = favoritesGuildUnreads;
const guildsBarBottomRightBadge = useGuildsBarBottomRightBadge({
mentionCount: badge
});
const badge2 = guildsBarBottomRightBadge.badge;
return <GuildsBarAnimatedItemWrapper selected={isFavoritesGuildSelected} circle={r15 ? !r15 : !isFavoritesGuildSelected} unread={unread} styles={styles} cutouts={guildsBarBottomRightBadge.cutouts} overState={void 0} config={config} label={intl.string(t.wMWyci)} externalChildren={badge2} expandedChildren={<HomeDrawerFavoritesRowExpandedChildren />}>
<StarIcon color={isFavoritesGuildSelected ? Module712.colors.WHITE : Module712.colors.MOBILE_GUILDBAR_ICON_DEFAULT} />
</GuildsBarAnimatedItemWrapper>;
});
export default r27;
@@ -0,0 +1,35 @@
// Metro module 14944 (f14945).
import SortedGuildStore from "../../../stores/SortedGuildStore";
import { AnalyticsSections } from "../../../Constants";
import { EnvelopeIcon } from "../../../design/components/Icon/native/redesign/generated/EnvelopeIcon";
import { intl, t } from "../../../intl/index.native";
import { SettingsIcon } from "../../../design/components/Icon/native/redesign/generated/SettingsIcon";
export function getGuildFolderMenuItems(c21475_0) {
return [{
IconComponent: EnvelopeIcon,
label: intl.string(t.e6RscS),
action: async () => {
let c30810_1;
let c31752_0;
L13: {
c30810_1 = void 0;
c31752_0 = void 0;
const guildFolderById = SortedGuildStore.getGuildFolderById(c21475_0);
c31752_0 = guildFolderById;
if (guildFolderById != null) {
(0, (await import("../../guild/markGuildsAsRead")).default)(c31752_0.guildIds, AnalyticsSections.GUILD_LIST);
break L13;
}
return void 0;
}
}
}, {
IconComponent: SettingsIcon,
label: intl.string(t.Dx7im5),
action: async () => {
let c30811_0;
c30811_0 = void 0;
(0, (await import("./GuildsBarFolderSettingsModalActionCreators")).showGuildsBarFolderModal)(c21475_0);
}
}];
}
@@ -0,0 +1,84 @@
// Metro module 14946 (f14947).
import { useState, useCallback, useMemo } from "react";
import SortedGuildStore from "../../../stores/SortedGuildStore";
import { DEFAULT_FOLDER_COLOR } from "../GuildsBarConstants";
import { saveGuildFolders } from "../../../actions/UserSettingsActionCreators";
import { Form, FormSection, FormInput } from "../../../design/void/Form/native/index";
import { intl, t } from "../../../intl/index.native";
import { ClearButtonVisibility } from "../../../design/void/native";
import FormRoleColorPicker from "../../../components_native/common/color_picker/FormRoleColorPicker";
import { getHeaderCloseButton, getHeaderTextButton } from "../../../design/components/Navigator/native/NavigatorHeader.native";
import { useStateFromStoresObject } from "../../../_bundle/Module589";
import { hideGuildsBarFolderModal } from "./GuildsBarFolderSettingsModalActionCreators";
import { Navigator } from "../../../design/components/Navigator/native/Navigator.native";
let initialRouteName;
const GuildFolderSettingsScene = function GuildFolderSettingsScene(props) {
const { name, onNameChange: onNameChange2, color, onColorChange: onColorChange2 } = props;
return <Form>
<FormSection title={intl.string(t.tGRbjA)}>
<FormInput placeholder={intl.string(t.xV9hVh)} value={name} onChange={onNameChange2} showTopContainer={false} maxLength={32} autoFocus clearButtonVisibility={ClearButtonVisibility.WITH_CONTENT} />
</FormSection>
<FormSection title={intl.string(t.xpurRF)}>
<FormRoleColorPicker color={color} onChange={onColorChange2} />
</FormSection>
</Form>;
};
initialRouteName = "Folder Settings";
export default function GuildFolderSettingsModal(props) {
let state, setState, state2, setState2, c21476_5, callback, callback2;
const folderId = props.folderId;
state = void 0;
setState = void 0;
state2 = void 0;
setState2 = void 0;
c21476_5 = void 0;
callback = void 0;
callback2 = void 0;
const stateFromStoresObject = useStateFromStoresObject([SortedGuildStore], () => {
const guildFolderById = SortedGuildStore.getGuildFolderById(folderId);
return {
initialFolderName: guildFolderById?.folderName != null ? guildFolderById.folderName : "",
initialFolderColor: guildFolderById?.folderColor != null ? guildFolderById.folderColor : DEFAULT_FOLDER_COLOR
};
}, [folderId]);
const { initialFolderName, initialFolderColor } = stateFromStoresObject;
[state, setState] = useState(initialFolderName);
[state2, setState2] = useState(initialFolderColor);
const r1 = state !== initialFolderName || state2 !== initialFolderColor;
c21476_5 = r1;
callback = useCallback(() => {
const folderId2 = folderId;
const state3 = state;
const state4 = state2;
saveGuildFolders(SortedGuildStore.getGuildFolders().map((item) => item.folderId === folderId2 ? {
...item,
folderName: state3,
folderColor: state4
} : item));
hideGuildsBarFolderModal();
}, [folderId, state, state2]);
callback2 = useCallback(() => {
hideGuildsBarFolderModal();
}, []);
return <Navigator screens={useMemo(() => {
let c27870_0;
const r3 = {
name: state,
onNameChange: (a0) => setState(a0),
color: state2,
onColorChange: (a0) => setState2(a0)
};
c27870_0 = r3;
const r18 = {
render: () => <GuildFolderSettingsScene {...c27870_0} />,
title: intl.string(t.Dx7im5),
headerLeft: getHeaderCloseButton(callback2),
headerRight: null
};
const headerRight = c21476_5 ? getHeaderTextButton(intl.string(t["R3BPH+"]), callback) : () => null;
const r43 = {};
r18.headerRight = headerRight;
r43[initialRouteName] = r18;
return r43;
}, [state2, state, r1, callback, callback2])} initialRouteName={initialRouteName} />;
};
@@ -0,0 +1,11 @@
// Metro module 14945 (f14946).
import ModalActionCreators from "../../../actions/ModalActionCreators";
let c10573_3 = "GUILD_FOLDER_SETTINGS_MODAL_KEY";
export function showGuildsBarFolderModal(a0) {
ModalActionCreators.pushLazy(import("./GuildsBarFolderSettingsModal"), {
folderId: a0
}, c10573_3);
}
export function hideGuildsBarFolderModal() {
ModalActionCreators.popWithKey(c10573_3);
}
@@ -0,0 +1,24 @@
// Metro module 15006 (f15007).
import { GUILD_ITEM_HIT_SLOP } from "./GuildsBarConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useToken } from "../../../design/tokens/native/useToken";
import { MobileHomeDrawerExperiment } from "../../home_drawer/native/HomeDrawerExperiment";
import NativeView from "../../core/native/NativeView";
const useStyles = createStyles({
footerWrapper: {
display: "flex",
alignSelf: "stretch",
alignItems: "center",
gap: Module712.modules.mobile.GUILD_BAR_ITEM_PADDING
}
});
export default function GuildsBarFooterWrapper(props) {
const children = props.children;
const token = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE);
return <NativeView style={[useStyles().footerWrapper, MobileHomeDrawerExperiment.useConfig({
location: "guilds_bar"
}).enableHome ? null : {
width: token + GUILD_ITEM_HIT_SLOP.left + GUILD_ITEM_HIT_SLOP.right
}]}>{children}</NativeView>;
};
@@ -0,0 +1,38 @@
// Metro module 15005 (f15006).
import { memo } from "react";
import { View } from "react-native";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { DARK_1_LIGHT_08 } from "../../../design/migrations/native/LegacyTokens";
import FastImage from "../../../components_native/common/FastImage";
import Module11424 from "../../../_bundle/Module11424";
const useStyles = createStyles({
badgeImageContainer: {
position: "absolute",
bottom: -3,
right: -3,
height: 22,
width: 22,
borderColor: Module712.colors.BACKGROUND_BASE_LOWEST,
backgroundColor: Module712.colors.STATUS_WARNING_BACKGROUND,
borderWidth: 3,
borderRadius: 11,
justifyContent: "center",
alignItems: "center",
overflow: "hidden"
},
badgeImage: {
height: 16,
width: 16,
opacity: DARK_1_LIGHT_08,
tintColor: Module712.colors.BLACK
}
});
const r45 = memo(function GuildsBarGeoRestrictedBadge(props) {
const style = props.style;
const styles = useStyles();
return <View style={[styles.badgeImageContainer, style]} pointerEvents="none">
<FastImage source={Module11424} style={styles.badgeImage} />
</View>;
});
export default r45;
@@ -0,0 +1,64 @@
// Metro module 15004 (f15005).
import { memo, useMemo } from "react";
import { GUILD_ITEM_BADGE_SIZE } from "./GuildsBarConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import computeGuildsBarCutout from "./utils/computeGuildsBarCutout";
import MobileVisualRefreshExperiment from "../../themes/experiments/MobileVisualRefreshExperiment";
import GuildsBarAnimatedItemWrapper, { useGuildsBarAnimatedWrapperStyles } from "./GuildsBarAnimatedItemWrapper";
import AvatarUtils from "../../../utils/AvatarUtils";
import GuildIcon, { ImageSizes, GuildIconSizes } from "../../guild/native/GuildIcon";
import AlertActionCreators from "../../../actions/AlertActionCreators";
import { intl, t } from "../../../intl/index.native";
import GuildSettingsActionCreators from "../../guild_settings/GuildSettingsActionCreators";
import GuildsBarGeoRestrictedBadge from "./GuildsBarGeoRestrictedBadge";
import HomeDrawerGuildRow from "../../home_drawer/native/HomeDrawerGuildRow";
import FastImage from "../../../components_native/common/FastImage";
const useStyles = createStyles({
guildIcon: {
width: Module712.modules.mobile.GUILD_BAR_ITEM_SIZE,
height: Module712.modules.mobile.GUILD_BAR_ITEM_SIZE
},
geoRestrictedBadge: {
borderColor: "transparent",
width: GUILD_ITEM_BADGE_SIZE,
height: GUILD_ITEM_BADGE_SIZE,
bottom: 4,
right: 12
}
});
const cutouts = [computeGuildsBarCutout({
position: "bottom-right"
})];
const r45 = memo(function GuildsBarGeoRestrictedGuild(props) {
const restrictedGuild = props.restrictedGuild;
const r15 = MobileVisualRefreshExperiment("GuildsBarGeoRestrictedGuild");
const styles = useStyles();
const styles2 = useGuildsBarAnimatedWrapperStyles({
disableSelectedColor: true,
disableBGColor: true
});
const source = restrictedGuild.icon != null ? AvatarUtils.getAnimatableSourceWithFallback(false, (a0) => AvatarUtils.getGuildIconSource({
id: restrictedGuild.id,
size: ImageSizes[GuildIconSizes.LARGE],
icon: restrictedGuild.icon,
canAnimate: a0
})) : null;
return <GuildsBarAnimatedItemWrapper selected={false} unread={false} circle={!r15} styles={styles2} label={restrictedGuild.name} isDragTarget={false} config={useMemo(() => ({
onPress: () => {
AlertActionCreators.show({
title: intl.string(t.aCAiGl),
body: intl.format(t["4cJV9S"], {
serverName: restrictedGuild.name
}),
cancelText: intl.string(t.J2TBi3),
onCancel: () => {
GuildSettingsActionCreators.leaveGuild(restrictedGuild.id);
}
});
}
}), [restrictedGuild.id, restrictedGuild.name])} cutouts={cutouts} overState={void 0} externalChildren={<GuildsBarGeoRestrictedBadge style={styles.geoRestrictedBadge} />} expandedChildren={<HomeDrawerGuildRow guildId={restrictedGuild.id} />}>
{source != null ? <FastImage source={source} style={styles.guildIcon} fadeDuration={0} /> : <GuildIcon value={restrictedGuild.name} selected={false} animate={false} size={GuildIconSizes.LARGE} />}
</GuildsBarAnimatedItemWrapper>;
});
export default r45;
@@ -0,0 +1,294 @@
// Metro module 14972 (f14973).
import * as Module19 from "react";
import { useRef, useCallback, useMemo } from "react";
import LurkingStore from "../../lurker_mode/LurkingStore";
import { getGuildIconSource, getGuildIconURL } from "../../../records/GuildRecord";
import GuildAvailabilityStore from "../../../stores/GuildAvailabilityStore";
import GuildReadStateStore from "../../../stores/GuildReadStateStore";
import GuildStore from "../../../stores/GuildStore";
import SelectedGuildStore from "../../../stores/SelectedGuildStore";
import SortedGuildStore from "../../../stores/SortedGuildStore";
import { useItemDragState } from "./GuildsBarDnDStore";
import { TRANSITION_PHYSICS } from "./GuildsBarConstants";
import { AnalyticEvents } from "../../../Constants";
import { makeMutable, useSharedValue } from "../../reanimated/ReanimatedRexport";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import MobileVisualRefreshExperiment from "../../themes/experiments/MobileVisualRefreshExperiment";
import { useToken } from "../../../design/tokens/native/useToken";
import GuildsBarAnimatedItemWrapper, { useGuildsBarAnimatedWrapperStyles } from "./GuildsBarAnimatedItemWrapper";
import { MobileHomeDrawerExperiment } from "../../home_drawer/native/HomeDrawerExperiment";
import { useDrawerOpen } from "../../home_drawer/native/useDrawerState";
import HomeDrawerGuildRow, { HomeDrawerActiveHook } from "../../home_drawer/native/HomeDrawerGuildRow";
import { useStateFromStoresObject, useStateFromStores } from "../../../_bundle/Module589";
import GuildIcon, { ImageSizes, GuildIconSizes } from "../../guild/native/GuildIcon";
import isGuildsBarGuildDataEqual from "./utils/isGuildsBarGuildDataEqual";
import useGuildsBarBadges from "./hooks/useGuildsBarBadges";
import AlertActionCreators from "../../../actions/AlertActionCreators";
import { intl, t } from "../../../intl/index.native";
import AnalyticsUtils from "../../../utils/AnalyticsUtils";
import { trackGuildIconClicked } from "../../lurker_mode/LurkerPreviewAnalytics";
import transitionGuildsBarToGuildOrOpenSelectedChannel from "./utils/transitionGuildsBarToGuildOrOpenSelectedChannel";
import { getIsScreenReaderEnabled } from "../../a11y/native/useIsScreenReaderEnabled.native";
import getGuildsBarGuildMenuItems from "./utils/getGuildsBarGuildMenuItems";
import { showContextMenu, hideContextMenu } from "../../../design/components/ContextMenu/native/ContextMenuState.native";
import usePreloadedGuildAsset from "./hooks/usePreloadedGuildAsset";
import getGuildsBarGuildAccessibilityActions from "./utils/getGuildsBarGuildAccessibilityActions";
import * as _spring from "../../../design/animation/reanimated/spring/spring";
import FastImage from "../../../components_native/common/FastImage";
import Module14998 from "../../../_bundle/Module14998";
const state = {
pan: makeMutable(-1),
itemMeasurements: makeMutable([]),
activeIndex: makeMutable(-1)
};
const useStyles = createStyles({
guildIcon: {
width: Module712.modules.mobile.GUILD_BAR_ITEM_SIZE,
height: Module712.modules.mobile.GUILD_BAR_ITEM_SIZE
}
});
const __initData = {
code: "function GuildsBarGuildTsx1(values){const{dragDropInProgress,sharedId,guildId,isDragTarget,withSpring,TRANSITION_PHYSICS}=this.__closure;var _guildId;const shouldAnimate=dragDropInProgress.get()&&sharedId.get()===guildId&&!isDragTarget;sharedId.set((_guildId=guildId)!==null&&_guildId!==void 0?_guildId:null);return{animations:{originY:shouldAnimate?withSpring(values.targetOriginY,TRANSITION_PHYSICS,'animate-always'):values.targetOriginY,height:shouldAnimate?withSpring(values.targetHeight,TRANSITION_PHYSICS,'animate-always'):values.targetHeight},initialValues:{originY:values.currentOriginY,height:values.currentHeight}};}"
};
const r79 = Module19.memo(function GuildsBarGuild(props) {
let selected, isUnavailable, mentionCount, unread, isLurking, guildName, mediaState, isDragTarget, dragDropInProgress, stateFromStores, sharedValue;
const guildId = props.guildId;
let isDragPreview = props.isDragPreview;
if (isDragPreview === void 0) {
isDragPreview = false;
}
let hideExpandedChildren = props.hideExpandedChildren;
if (hideExpandedChildren === void 0) {
hideExpandedChildren = false;
}
selected = void 0;
isUnavailable = void 0;
mentionCount = void 0;
unread = void 0;
isLurking = void 0;
guildName = void 0;
mediaState = void 0;
isDragTarget = void 0;
dragDropInProgress = void 0;
stateFromStores = void 0;
sharedValue = void 0;
const r31 = MobileVisualRefreshExperiment("GuildsBarGuild");
const styles = useStyles();
const token = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE);
const styles2 = useGuildsBarAnimatedWrapperStyles({
disableSelectedColor: true,
disableBGColor: true
});
const enableHome = MobileHomeDrawerExperiment.useConfig({
location: "guilds"
}).enableHome;
const drawerOpen = useDrawerOpen(enableHome);
const ref = useRef(HomeDrawerActiveHook.NONE);
const callback = useCallback((a0) => {
ref.current = a0;
}, []);
const stateFromStoresObject = useStateFromStoresObject([SelectedGuildStore, GuildAvailabilityStore, GuildReadStateStore, LurkingStore], () => ({
selected: SelectedGuildStore.getGuildId() === guildId,
isUnavailable: GuildAvailabilityStore.isUnavailable(guildId),
unread: GuildReadStateStore.hasUnread(guildId),
mentionCount: GuildReadStateStore.getMentionCount(guildId),
isMentionLowImportance: GuildReadStateStore.getIsMentionLowImportance(guildId),
isLurking: LurkingStore.isLurking(guildId)
}), [guildId]);
selected = stateFromStoresObject.selected;
isUnavailable = stateFromStoresObject.isUnavailable;
mentionCount = stateFromStoresObject.mentionCount;
unread = stateFromStoresObject.unread;
const isMentionLowImportance = stateFromStoresObject.isMentionLowImportance;
isLurking = stateFromStoresObject.isLurking;
const stateFromStores2 = useStateFromStores([GuildStore], () => {
const guild = GuildStore.getGuild(guildId);
const icon = guild != null ? getGuildIconURL(guild, token, selected) : void 0;
return {
guildName: guild?.name,
icon,
asset: icon != null ? guild != null ? getGuildIconSource(guild, ImageSizes[GuildIconSizes.LARGE], selected) : void 0 : void 0
};
}, [guildId, token, selected], isGuildsBarGuildDataEqual);
const { asset, icon } = stateFromStores2;
guildName = stateFromStores2.guildName;
const guildsBarBadges = useGuildsBarBadges(guildId, mentionCount, isMentionLowImportance);
const { badgeTopRight, badgeBottomRight, cutouts } = guildsBarBadges;
mediaState = guildsBarBadges.mediaState;
const memo = useMemo(() => ({
onPress: () => {
if (GuildStore.getGuild(guildId) != null && !isUnavailable) {
const index = SortedGuildStore.getGuildFolders().findIndex((item) => item.guildIds.includes(guildId));
if (index > -1) {
AnalyticsUtils.track(AnalyticEvents.GUILD_CLICKED, {
guild_id: guildId,
index
});
if (drawerOpen) {
AnalyticsUtils.track(AnalyticEvents.HOME_DRAWER_GUILD_CLICKED, {
guild_id: guildId,
index,
active_hook: ref.current
});
}
}
if (isLurking) {
trackGuildIconClicked(guildId);
}
transitionGuildsBarToGuildOrOpenSelectedChannel(guildId);
return void 0;
}
return AlertActionCreators.show({
title: intl.string(t.R0RpRX),
body: intl.string(t.m9gRVN)
});
},
onLongPress: isLurking ? (a0) => {
const guild = GuildStore.getGuild(guildId);
if (guild != null && !getIsScreenReaderEnabled()) {
const guildsBarGuildMenuItems = getGuildsBarGuildMenuItems(guildId, SortedGuildStore.getGuildsTree().version);
let c30815_0 = guildsBarGuildMenuItems;
if (guildsBarGuildMenuItems.length !== 0) {
const pageY = a0.nativeEvent.pageY;
state.activeIndex.set(-1);
showContextMenu({
key: guildId,
title: guild.name,
items: guildsBarGuildMenuItems,
x: 12 + token + 12,
y: pageY - token / 2,
positionX: "left",
positionY: "below",
width: token,
height: token,
state,
dividerIndexes: [],
keyboardShouldPersistTaps: "never",
requestClose: (a0) => {
if (!a0) {
const r10 = c30815_0[state.activeIndex.get()];
if (r10 != null) {
r10.action();
}
}
state.activeIndex.set(-1);
hideContextMenu();
},
onClose: () => {}
});
}
}
} : void 0
}), [guildId, token, isLurking, isUnavailable, drawerOpen]);
const memo2 = useMemo(() => {
const r23 = mentionCount != null && mentionCount > 0 ? intl.formatToPlainString(t["/uzRss"], {
guildName,
mentions: mentionCount
}) : unread === true ? intl.formatToPlainString(t.lzqe42, {
guildName
}) : intl.formatToPlainString(t["/uzRss"], {
guildName,
mentions: mentionCount
});
const r55 = [];
if (mediaState.activeEvent) {
r55.push(intl.string(t.dHvJ2p));
}
if (mediaState.liveStage) {
r55.push(intl.string(t.OO7ndG));
}
if (mediaState.screenshare) {
r55.push(intl.string(t.wsHMZ7));
}
if (mediaState.video) {
r55.push(intl.string(t.BrLCS0));
}
if (mediaState.audio) {
r55.push(intl.string(t.jPBhKy));
}
if (mediaState.activity) {
r55.push(intl.string(t.Y3Gii5));
}
return r55.length > 0 ? `${r23}, ${r55.join(" ")}` : r23;
}, [guildName, mentionCount, unread, mediaState]);
const preloadedGuildAsset = usePreloadedGuildAsset(guildId, icon, asset);
const itemDragState = useItemDragState(guildId, isDragPreview);
isDragTarget = itemDragState.isDragTarget;
const { dragState, overState, itemSize } = itemDragState;
dragDropInProgress = itemDragState.dragDropInProgress;
stateFromStores = useStateFromStores([SortedGuildStore], () => SortedGuildStore.getGuildsTree().version);
const memo3 = useMemo(() => {
let c27878_0;
const guildsBarGuildMenuItems = getGuildsBarGuildMenuItems(guildId, stateFromStores);
const guildsBarGuildAccessibilityActions = getGuildsBarGuildAccessibilityActions(guildId, stateFromStores);
const r20 = [...guildsBarGuildMenuItems.map((guildsBarGuildMenuItem) => ({
name: guildsBarGuildMenuItem.label,
label: guildsBarGuildMenuItem.label,
action: guildsBarGuildMenuItem.action
})), ...guildsBarGuildAccessibilityActions.map((guildsBarGuildAccessibilityAction) => ({
name: guildsBarGuildAccessibilityAction.name,
label: guildsBarGuildAccessibilityAction.label,
action: guildsBarGuildAccessibilityAction.action
}))];
c27878_0 = r20;
return {
accessibilityActions: r20.map((item) => ({
name: item.name,
label: item.label
})),
onAccessibilityAction: (c30816_0) => {
const r7 = c27878_0.find((item) => item.name === c30816_0.nativeEvent.actionName);
if (r7 != null) {
const action = r7.action;
if (action != null) {
action.call(r7);
}
}
}
};
}, [guildId, stateFromStores]);
const { accessibilityActions, onAccessibilityAction: onAccessibilityAction2 } = memo3;
sharedValue = useSharedValue(guildId);
const R = function R(a0) {
const r9 = dragDropInProgress.get() && sharedValue.get() === guildId && !isDragTarget;
let r15 = guildId;
if (guildId == null) {
r15 = null;
}
sharedValue.set(r15);
return {
animations: {
originY: r9 ? _spring.withSpring(a0.targetOriginY, TRANSITION_PHYSICS, "animate-always") : a0.targetOriginY,
height: r9 ? _spring.withSpring(a0.targetHeight, TRANSITION_PHYSICS, "animate-always") : a0.targetHeight
},
initialValues: {
originY: a0.currentOriginY,
height: a0.currentHeight
}
};
};
R.__closure = {
dragDropInProgress,
sharedId: sharedValue,
guildId,
isDragTarget,
withSpring: _spring.withSpring,
TRANSITION_PHYSICS
};
R.__workletHash = 14096669603718;
R.__initData = __initData;
const callback2 = useCallback(R, [guildId, sharedValue, isDragTarget, dragDropInProgress]);
const cutouts2 = isDragTarget ? void 0 : cutouts;
const circle = r31 ? !r31 : selected ? !selected : !enableHome;
if (!isDragPreview) {
isDragPreview = isDragTarget;
}
return <GuildsBarAnimatedItemWrapper id={guildId} draggedItemSize={itemSize} accessibilityActions={accessibilityActions} onAccessibilityAction={onAccessibilityAction2} cutouts={cutouts2} selected={selected} isDragTarget={isDragTarget} dragState={dragState} sharedId={sharedValue} circle={circle} overState={overState} unread={unread} label={memo2} config={memo} styles={styles2} isDragPreview={isDragPreview} layout={callback2} externalChildren={<>
{badgeTopRight}
{badgeBottomRight}
</>} expandedChildren={hideExpandedChildren ? void 0 : <HomeDrawerGuildRow guildId={guildId} onActiveHookChange={callback} />}>
{isUnavailable ? <FastImage source={Module14998} style={styles.guildIcon} /> : preloadedGuildAsset != null ? <FastImage source={preloadedGuildAsset} style={styles.guildIcon} /> : <GuildIcon value={guildName} selected={selected} animate={selected} size={GuildIconSizes.LARGE} />}
</GuildsBarAnimatedItemWrapper>;
});
export default r79;
@@ -0,0 +1,458 @@
// Metro module 14951 (f14952).
import * as Module19 from "react";
import { useEffect, useCallback, useMemo, Fragment } from "react";
import GuildReadStateStore from "../../../stores/GuildReadStateStore";
import GuildStore from "../../../stores/GuildStore";
import SelectedGuildStore from "../../../stores/SelectedGuildStore";
import SortedGuildStore, { GuildsNodeType } from "../../../stores/SortedGuildStore";
import { useFolderBGHeightOffset, useItemDragState } from "./GuildsBarDnDStore";
import { DEFAULT_FOLDER_COLOR } from "../GuildsBarConstants";
import { FOLDER_SPRING_PHYSICS, TRANSITION_PHYSICS } from "./GuildsBarConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useToken } from "../../../design/tokens/native/useToken";
import { useStateFromStores, useStateFromStoresObject } from "../../../_bundle/Module589";
import GuildIcon, { GuildIconSizes } from "../../guild/native/GuildIcon";
import MobileVisualRefreshExperiment from "../../themes/experiments/MobileVisualRefreshExperiment";
import * as _spring from "../../../design/animation/reanimated/spring/spring";
import { hexWithOpacity } from "../../../utils/ColorUtils";
import { int2hex } from "../../../_bundle/int2hslRaw";
import ReanimatedNativeView from "../../core/native/ReanimatedNativeView";
import * as _ReanimatedRexport from "../../reanimated/ReanimatedRexport";
import { useSharedValue, useAnimatedStyle } from "../../reanimated/ReanimatedRexport";
import * as _TransitionGroup from "../../../design/components/TransitionGroup/TransitionGroup";
import { TransitionGroup } from "../../../design/components/TransitionGroup/TransitionGroup";
import Module4653 from "../../../_bundle/Module4653";
import Module7903 from "../../../_bundle/Module7903";
import FastImage from "../../../components_native/common/FastImage";
import GuildsBarAnimatedItemWrapper, { useGuildsBarAnimatedWrapperStyles } from "./GuildsBarAnimatedItemWrapper";
import useGuildsBarBottomRightBadge from "./hooks/useGuildsBarBottomRightBadge";
import { getListSummaryLabel } from "../../../utils/ListUtils";
import isGuildsBarGuildLabelEqual from "./utils/isGuildsBarGuildLabelEqual";
import { triggerHapticFeedback, HapticFeedbackTypes } from "../../haptics/HapticUtils.native";
import GuildActionCreators from "../../../actions/GuildActionCreators";
import NativeView from "../../core/native/NativeView";
import { getGuildFolderMenuItems } from "./GuildsBarFolderMenuItems";
import HomeDrawerFolderRow from "../../home_drawer/native/HomeDrawerFolderRow";
let useStyles, __initData, FolderBGInner, __initData2, __initData3, TransitionWrapper, getItemKey, GuildFolderIcon, renderGuildFolderContent, __initData4;
const MiniGuildIcon = function MiniGuildIcon(props) {
const { guildId, position, selected } = props;
const styles2 = useStyles(false, useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE));
return <GuildIcon key={`${selected}`} style={[styles2.guildPreviewIcon, selected ? void 0 : styles2.guildPreviewIconUnselected, position === 0 ? styles2.guildPreview0 : position === 1 ? styles2.guildPreview1 : position === 2 ? styles2.guildPreview2 : position === 3 ? styles2.guildPreview3 : void 0]} guild={useStateFromStores([GuildStore], () => GuildStore.getGuild(guildId))} size={GuildIconSizes.XXSMALL} selected={selected} />;
};
TransitionWrapper = function TransitionWrapper(props) {
const { children, fromTop = false } = props;
let c21481_0 = fromTop;
const { cleanUp, state } = props;
const r23 = MobileVisualRefreshExperiment("GuildsBarGuildFolder");
const token = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE);
const styles2 = useStyles(r23, token);
const sharedValue = useSharedValue(state === _TransitionGroup.TransitionStates.MOUNTED ? 1 : 0);
const u = () => {
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 = 47605595424;
t.__initData = __initData3;
const r4 = {
opacity: _spring.withSpring(r10, FOLDER_SPRING_PHYSICS, void 0, t),
transform: null
};
const r37 = sharedValue.get();
let r38 = 1;
const transform = [{
translateY: _spring.withSpring(r37 !== 1 ? c21481_0 ? -token : token : 0, FOLDER_SPRING_PHYSICS)
}, ,];
if (sharedValue.get() !== 1) {
r38 = c21481_0 ? 0.3 : 1.3;
}
transform[1] = {
scale: _spring.withSpring(r38, FOLDER_SPRING_PHYSICS)
};
r4.transform = transform;
return r4;
};
u.__closure = {
withSpring: _spring.withSpring,
visible: sharedValue,
FOLDER_SPRING_PHYSICS,
state,
TransitionStates: _TransitionGroup.TransitionStates,
runOnJS: _ReanimatedRexport.runOnJS,
cleanUp,
fromTop,
guildItemSize: token
};
u.__workletHash = 14426547532118;
u.__initData = __initData2;
const animatedStyle = useAnimatedStyle(u);
useEffect(() => {
sharedValue.set(state === _TransitionGroup.TransitionStates.YEETED ? 0 : 1);
}, [state, sharedValue]);
return <ReanimatedNativeView style={[animatedStyle, styles2.folderScaleContainer]}>{children}</ReanimatedNativeView>;
};
getItemKey = function getItemKey(a0) {
return a0.type;
};
GuildFolderIcon = function GuildFolderIcon(props) {
const item = props.item;
const source = MobileVisualRefreshExperiment("GuildFolderIcon") ? Module4653 : Module7903;
return item.type === "icon" ? <FastImage source={source} style={item.tintStyle} /> : null;
};
renderGuildFolderContent = function renderGuildFolderContent(a0, a1, a2, a3) {
const type = a1.type;
if (type === "icon") {
return <TransitionWrapper key={a0} fromTop cleanUp={a3} state={a2}>
<GuildFolderIcon item={a1} />
</TransitionWrapper>;
}
if (type === "preview") {
return <TransitionWrapper key={a0} cleanUp={a3} state={a2}>
{a1.guilds.map((guild, index) => {
const position = index !== 0 ? index !== 1 ? index !== 2 ? index !== 3 ? void 0 : index : index : index : index;
return guild != null ? position != null ? <MiniGuildIcon key={guild} guildId={guild} selected={guild === a1.selectedGuildId} position={position} /> : null : null;
})}
</TransitionWrapper>;
}
};
useStyles = createStyles(function() {
let width = arguments[1];
if (width === void 0) {
width = 48;
}
let r7 = arguments[2];
if (r7 === void 0) {
r7 = 0;
}
return {
folderBackground: {
position: "absolute",
top: Module712.modules.mobile.GUILD_BAR_ITEM_MARGIN,
left: Module712.modules.mobile.GUILD_FOLDER_BACKGROUND_LEFT,
backgroundColor: Module712.colors.GUILD_FOLDER_BACKGROUND,
borderTopLeftRadius: Module712.modules.mobile.GUILD_FOLDER_BACKGROUND_RADIUS,
borderTopRightRadius: Module712.modules.mobile.GUILD_FOLDER_BACKGROUND_RADIUS,
borderBottomLeftRadius: Module712.modules.mobile.GUILD_FOLDER_BACKGROUND_RADIUS,
borderBottomRightRadius: Module712.modules.mobile.GUILD_FOLDER_BACKGROUND_RADIUS,
width: width + r7
},
folderScaleContainer: {
position: "absolute",
top: 0,
left: 0,
width,
height: width,
justifyContent: "center",
alignItems: "center"
},
guildPreviewIcon: {
position: "absolute",
margin: Module712.modules.mobile.GUILD_FOLDER_PREVIEW_ICON_MARGIN
},
guildPreviewIconUnselected: {
borderRadius: Module712.radii.sm
},
guildPreview0: {
top: 0,
left: 0
},
guildPreview1: {
top: 0,
right: 0
},
guildPreview2: {
bottom: 0,
left: 0
},
guildPreview3: {
bottom: 0,
right: 0
},
guildPreviewWrapper: {
position: "absolute",
width,
height: width,
opacity: Module712.modules.mobile.GUILD_FOLDER_PREVIEW_OPACITY
}
};
});
__initData = {
code: "function GuildsBarGuildFolderTsx1(values){const{withSpring,TRANSITION_PHYSICS}=this.__closure;return{animations:{height:withSpring(values.targetHeight,TRANSITION_PHYSICS,'animate-always')},initialValues:{height:values.currentHeight}};}"
};
FolderBGInner = Module19.memo(function FolderBGInner(props) {
let token2;
const { folderId, totalItems, color } = props;
token2 = void 0;
const r14 = MobileVisualRefreshExperiment("GuildsBarGuildFolder");
let c21483_1 = r14;
const token3 = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE);
const token4 = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_MARGIN);
const styles2 = useStyles(r14, token3, useToken(Module712.modules.mobile.GUILD_FOLDER_BACKGROUND_WIDTH_OFFSET));
const height = token3 + (r14 ? token4 : 0) + (token3 + 2 * token4) * totalItems + useFolderBGHeightOffset(folderId);
const r55 = function(a0) {
return {
animations: {
height: _spring.withSpring(a0.targetHeight, TRANSITION_PHYSICS, "animate-always")
},
initialValues: {
height: a0.currentHeight
}
};
};
r55.__closure = {
withSpring: _spring.withSpring,
TRANSITION_PHYSICS
};
r55.__workletHash = 2519256682742;
r55.__initData = __initData;
const callback = useCallback(r55, []);
token2 = useToken(Module712.modules.mobile.GUILD_FOLDER_COLOR_OPACITY);
return <ReanimatedNativeView pointerEvents="none" collapsable={false} layout={callback} style={[styles2.folderBackground, useMemo(() => {
if (c21483_1 && color != null && color !== DEFAULT_FOLDER_COLOR) {
return {
backgroundColor: hexWithOpacity(int2hex(color), token2)
};
}
}, [r14, color, token2]), {
height
}]} />;
});
__initData2 = {
code: "function GuildsBarGuildFolderTsx2(){const{withSpring,visible,FOLDER_SPRING_PHYSICS,state,TransitionStates,runOnJS,cleanUp,fromTop,guildItemSize}=this.__closure;return{opacity:withSpring(visible.get(),FOLDER_SPRING_PHYSICS,undefined,function(finished){if(finished&&state===TransitionStates.YEETED)runOnJS(cleanUp)();}),transform:[{translateY:withSpring(visible.get()===1?0:fromTop?-guildItemSize:guildItemSize,FOLDER_SPRING_PHYSICS)},{scale:withSpring(visible.get()===1?1:fromTop?0.3:1.3,FOLDER_SPRING_PHYSICS)}]};}"
};
__initData3 = {
code: "function GuildsBarGuildFolderTsx3(finished){const{state,TransitionStates,runOnJS,cleanUp}=this.__closure;if(finished&&state===TransitionStates.YEETED)runOnJS(cleanUp)();}"
};
__initData4 = {
code: "function GuildsBarGuildFolderTsx4(values){const{dragDropInProgress,sharedId,id,isDragTarget,withSpring,TRANSITION_PHYSICS}=this.__closure;var _id;const shouldAnimate=dragDropInProgress.get()&&sharedId.get()===\"\"+id&&!isDragTarget;sharedId.set(\"\"+((_id=id)!==null&&_id!==void 0?_id:null));return{animations:{originY:shouldAnimate?withSpring(values.targetOriginY,TRANSITION_PHYSICS,'animate-always'):values.targetOriginY,height:shouldAnimate?withSpring(values.targetHeight,TRANSITION_PHYSICS,'animate-always'):values.targetHeight},initialValues:{originY:values.currentOriginY,height:values.currentHeight}};}"
};
const r60 = Module19.memo(function GuildsBarGuildFolder(props) {
let selectedPreviewId, tintStyle, folderPreviewStyle, isDragTarget, dragDropInProgress, sharedValue2;
const { id, expanded, name, color: color2, childNodes, isDragPreview = false, hideExpandedChildren = false, foldersChanged } = props;
selectedPreviewId = void 0;
tintStyle = void 0;
folderPreviewStyle = void 0;
isDragTarget = void 0;
dragDropInProgress = void 0;
sharedValue2 = void 0;
const disableBGColor = MobileVisualRefreshExperiment("GuildsBarGuildFolder");
const styles = useStyles(disableBGColor, useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE));
const styles2 = useGuildsBarAnimatedWrapperStyles({
disableSelectedColor: true,
disableBGColor
});
const stateFromStoresObject = useStateFromStoresObject([GuildReadStateStore], () => {
if (expanded) {
return {
unread: false,
mentionCount: 0,
isMentionLowImportance: false
};
}
const mutableGuildStates = GuildReadStateStore.getMutableGuildStates();
return childNodes.reduce((acc, childNode) => {
if (childNode.id != null) {
let r5 = mutableGuildStates[childNode.id]?.highImportanceMentionCount;
if (r5 == null) {
r5 = 0;
}
let r9 = mutableGuildStates[childNode.id]?.lowImportanceMentionCount;
if (r9 == null) {
r9 = 0;
}
acc.mentionCount = acc.mentionCount + r5 + r9;
let unread = acc.unread || mutableGuildStates[childNode.id]?.unread;
if (unread == null) {
unread = false;
}
acc.unread = unread;
acc.isMentionLowImportance = acc.isMentionLowImportance && r5 === 0;
}
return acc;
}, {
unread: false,
mentionCount: 0,
isMentionLowImportance: true
});
});
const { unread, mentionCount, isMentionLowImportance } = stateFromStoresObject;
const stateFromStoresObject2 = useStateFromStoresObject([SelectedGuildStore, SortedGuildStore], () => {
let selectedPreviewId2 = void 0;
let r9 = 0;
const guildId2 = SelectedGuildStore.getGuildId();
for (const childNode of childNodes) {
if (childNode.id !== guildId2) {
const r30 = r9 + 1;
r9 = r30;
if (!(4 <= r30)) {
continue;
}
break;
}
selectedPreviewId2 = guildId2;
break;
}
return {
selectedPreviewId: selectedPreviewId2,
hasGuildSelected: expanded ? false : guildId2 != null ? SortedGuildStore.getGuildsTree().getNode(guildId2)?.parentId === id : false
};
}, [expanded, id, childNodes]);
selectedPreviewId = stateFromStoresObject2.selectedPreviewId;
const hasGuildSelected = stateFromStoresObject2.hasGuildSelected;
const guildsBarBottomRightBadge = useGuildsBarBottomRightBadge({
mentionCount,
isMentionLowImportance
});
const { badge, cutouts } = guildsBarBottomRightBadge;
const label = useStateFromStores([GuildStore], () => {
if (name != null) {
return {
count: 1,
names: [name],
label: name
};
}
const names = [];
let r26 = 0;
for (const childNode of childNodes) {
const guild = GuildStore.getGuild(childNode.id);
if (guild != null) {
names.push(guild.name);
}
const r39 = r26 + 1;
r26 = r39;
if (!(3 <= r39)) {
continue;
}
break;
}
return {
names,
count: childNodes.length,
label: getListSummaryLabel(names, childNodes.length)
};
}, [name, childNodes], isGuildsBarGuildLabelEqual).label;
const memo = useMemo(() => {
let r8 = color2;
if (color2 == null) {
r8 = DEFAULT_FOLDER_COLOR;
}
const tintColor = int2hex(r8);
return {
tintStyle: {
tintColor
},
folderPreviewStyle: {
backgroundColor: tintColor
}
};
}, [color2]);
tintStyle = memo.tintStyle;
folderPreviewStyle = memo.folderPreviewStyle;
const memo2 = useMemo(() => ({
onPress: () => {
if (foldersChanged != null && foldersChanged.get().has(`${id}`)) {
const set = new Set(foldersChanged.get());
set.add(`${id}`);
foldersChanged.set(set);
}
triggerHapticFeedback(HapticFeedbackTypes.IMPACT_LIGHT);
GuildActionCreators.toggleGuildFolderExpand(id);
}
}), [id, foldersChanged]);
const memo3 = useMemo(() => {
if (expanded) {
return [{
type: "icon",
tintStyle
}];
}
const guilds = [];
for (const childNode of childNodes) {
const r25 = childNode;
if (childNode.type !== GuildsNodeType.GUILD) {
continue;
}
guilds.push(r25.id);
if (!(guilds.length >= 4)) {
continue;
}
break;
}
return [{
type: "preview",
guilds,
selectedGuildId: selectedPreviewId
}];
}, [expanded, childNodes, tintStyle, selectedPreviewId]);
const callback = useCallback((a0) => <Fragment key="wrapper">
<NativeView style={[styles.guildPreviewWrapper, expanded ? void 0 : folderPreviewStyle]} />
{a0}
</Fragment>, [expanded, styles.guildPreviewWrapper, folderPreviewStyle]);
const itemDragState = useItemDragState(id, isDragPreview);
isDragTarget = itemDragState.isDragTarget;
const { dragState, overState, itemSize } = itemDragState;
dragDropInProgress = itemDragState.dragDropInProgress;
const memo4 = useMemo(() => {
const guildFolderMenuItems = getGuildFolderMenuItems(id);
return {
accessibilityActions: guildFolderMenuItems.map((guildFolderMenuItem) => ({
name: guildFolderMenuItem.label,
label: guildFolderMenuItem.label
})),
onAccessibilityAction: (c30812_0) => {
const r7 = guildFolderMenuItems.find((guildFolderMenuItem) => guildFolderMenuItem.label === c30812_0.nativeEvent.actionName);
if (r7 != null) {
const action = r7.action;
if (action != null) {
action.call(r7);
}
}
}
};
}, [id]);
const { accessibilityActions, onAccessibilityAction: onAccessibilityAction2 } = memo4;
sharedValue2 = useSharedValue(`${id}`);
const E = function E(a0) {
const r9 = dragDropInProgress.get() && sharedValue2.get() === `${id}` && !isDragTarget;
let r7 = id;
if (id == null) {
r7 = null;
}
sharedValue2.set(`${r7}`);
return {
animations: {
originY: r9 ? _spring.withSpring(a0.targetOriginY, TRANSITION_PHYSICS, "animate-always") : a0.targetOriginY,
height: r9 ? _spring.withSpring(a0.targetHeight, TRANSITION_PHYSICS, "animate-always") : a0.targetHeight
},
initialValues: {
originY: a0.currentOriginY,
height: a0.currentHeight
}
};
};
E.__closure = {
dragDropInProgress,
sharedId: sharedValue2,
id,
isDragTarget,
withSpring: _spring.withSpring,
TRANSITION_PHYSICS
};
E.__workletHash = 11967845900199;
E.__initData = __initData4;
return <GuildsBarAnimatedItemWrapper id={`${id}`} draggedItemSize={itemSize} accessibilityActions={accessibilityActions} onAccessibilityAction={onAccessibilityAction2} selected={hasGuildSelected} unread={expanded ? !expanded : unread} circle={false} styles={styles2} label={label} isDragTarget={isDragTarget} dragState={dragState} sharedId={sharedValue2} cutouts={cutouts} config={memo2} isDragPreview={isDragPreview} overState={overState} preventClipping expanded={expanded} layout={useCallback(E, [id, sharedValue2, isDragTarget, dragDropInProgress])} externalChildren={expanded ? isDragPreview ? badge : <FolderBGInner color={color2} folderId={id} totalItems={childNodes.length} /> : badge} expandedChildren={hideExpandedChildren ? void 0 : <HomeDrawerFolderRow folderId={id} expanded={expanded} />}>
<TransitionGroup renderItem={renderGuildFolderContent} getItemKey={getItemKey} items={memo3} wrapChildren={callback} />
</GuildsBarAnimatedItemWrapper>;
});
export default r60;
export { FolderBGInner as GuildsBarGuildFolderBG };
@@ -0,0 +1,39 @@
// Metro module 14957 (f14958).
import { View } from "react-native";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { DARK_1_LIGHT_08 } from "../../../design/migrations/native/LegacyTokens";
import { GuildJoinRequestApplicationStatuses } from "../../guild_member_verification/MemberVerificationTypes";
import Module14958 from "../../../_bundle/Module14958";
import Module14959 from "../../../_bundle/Module14959";
import Module14960 from "../../../_bundle/Module14960";
import Module11442 from "../../../_bundle/Module11442";
import FastImage from "../../../components_native/common/FastImage";
const useStyles = createStyles({
badgeImageContainer: {
position: "absolute",
bottom: -3,
right: -3,
height: 22,
width: 22,
borderColor: Module712.colors.BACKGROUND_BASE_LOWEST,
borderWidth: 3,
borderRadius: 11,
justifyContent: "center",
alignItems: "center",
overflow: "hidden"
},
badgeImage: {
height: 16,
width: 16,
opacity: DARK_1_LIGHT_08
}
});
export default function GuildsBarGuildJoinRequestBadge(props) {
const { style, joinRequestState } = props;
const styles = useStyles();
const source = GuildJoinRequestApplicationStatuses.REJECTED === joinRequestState ? Module14958 : GuildJoinRequestApplicationStatuses.SUBMITTED === joinRequestState ? Module14959 : GuildJoinRequestApplicationStatuses.STARTED === joinRequestState ? Module14960 : GuildJoinRequestApplicationStatuses.APPROVED === joinRequestState ? Module11442 : null;
return source != null ? <View pointerEvents="none" style={[styles.badgeImageContainer, style]}>
<FastImage source={source} style={styles.badgeImage} />
</View> : null;
};
@@ -0,0 +1,94 @@
// Metro module 15008 (f15009).
import { memo, useCallback } from "react";
import { Image as Image2, Pressable, View } from "react-native";
import SelectedGuildStore from "../../../stores/SelectedGuildStore";
import { DM_WIDTH, EMPTY_NUX_SERVER } from "../../../Constants";
import { MODE_CHANGE_PHYSICS } from "../../main_tabs_v2/native/MainTabsConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useToken } from "../../../design/tokens/native/useToken";
import { useStateFromStores } from "../../../_bundle/Module589";
import { transitionToGuild } from "../../routing/transitionToGuild.native";
import ReanimatedRexport, { useSharedValue, useAnimatedStyle } from "../../reanimated/ReanimatedRexport";
import * as _spring from "../../../design/animation/reanimated/spring/spring";
import { intl, t } from "../../../intl/index.native";
import Module15009 from "../../../_bundle/Module15009";
import { UnreadIndicator } from "./GuildsBarAnimatedItemWrapper";
let __initData;
const hitSlop = {
top: 4,
left: 12,
bottom: 4,
right: 12
};
const useStyles = createStyles((a0) => ({
container: {
position: "relative",
flexDirection: "row",
alignItems: "center",
marginTop: Module712.modules.mobile.GUILD_BAR_ITEM_PADDING,
height: 55,
width: a0
},
guildIndicator: {
position: "absolute",
left: -(DM_WIDTH - a0) / 2,
top: 4
},
icon: {
width: 59,
height: 55,
marginLeft: -3,
marginRight: -6
},
backdrop: {
position: "absolute",
top: 16,
width: a0,
height: a0 - 10,
borderRadius: a0 / 3
}
}));
__initData = {
code: "function GuildsBarItemEmptyNUXTsx1(){const{withSpring,selected,activeColor,inactiveColor,MODE_CHANGE_PHYSICS}=this.__closure;return{backgroundColor:withSpring(selected?activeColor:inactiveColor,MODE_CHANGE_PHYSICS,'animate-always')};}"
};
const r42 = memo(function GuildsBarEmptyNUX() {
let sharedValue, token, token2;
const styles = useStyles(useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE));
const stateFromStores = useStateFromStores([SelectedGuildStore], () => SelectedGuildStore.getGuildId() === EMPTY_NUX_SERVER);
const callback = useCallback(() => {
transitionToGuild(EMPTY_NUX_SERVER);
}, []);
sharedValue = useSharedValue(false);
const callback2 = useCallback(() => {
sharedValue.set(true);
}, [sharedValue]);
const callback3 = useCallback(() => {
sharedValue.set(false);
}, [sharedValue]);
token = useToken(Module712.colors.BACKGROUND_SURFACE_HIGH);
token2 = useToken(Module712.colors.BACKGROUND_BRAND);
const r63 = () => ({
backgroundColor: _spring.withSpring(stateFromStores ? token2 : token, MODE_CHANGE_PHYSICS, "animate-always")
});
r63.__closure = {
withSpring: _spring.withSpring,
selected: stateFromStores,
activeColor: token2,
inactiveColor: token,
MODE_CHANGE_PHYSICS
};
r63.__workletHash = 15012639840543;
r63.__initData = __initData;
const animatedStyle = useAnimatedStyle(r63);
return <Pressable style={styles.container} onPressIn={callback2} onPressOut={callback3} onPress={callback} accessible accessibilityRole="button" accessibilityLabel={intl.string(t["3S2xmm"])} accessibilityState={{
selected: stateFromStores
}} hitSlop={hitSlop}>
<ReanimatedRexport.View style={[styles.backdrop, animatedStyle]} />
<Image2 style={styles.icon} source={Module15009} resizeMode="contain" />
<View style={styles.guildIndicator}>
<UnreadIndicator selected={stateFromStores === true} />
</View>
</Pressable>;
});
export default r42;
@@ -0,0 +1,38 @@
// Metro module 15007 (f15008).
import { memo } from "react";
import { Image as Image2, Pressable } from "react-native";
import GuildAvailabilityStore from "../../../stores/GuildAvailabilityStore";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import AlertActionCreators from "../../../actions/AlertActionCreators";
import { intl, t } from "../../../intl/index.native";
import { useStateFromStores } from "../../../_bundle/Module589";
import Module14998 from "../../../_bundle/Module14998";
const useStyles = createStyles({
unavailableGuilds: {
marginTop: Module712.modules.mobile.GUILD_BAR_ITEM_PADDING,
justifyContent: "center",
alignItems: "center"
},
unavailableGuildsIcon: {
width: Module712.modules.mobile.GUILD_BAR_ITEM_SIZE,
height: Module712.modules.mobile.GUILD_BAR_ITEM_SIZE
}
});
const r48 = memo(function GuildsBarItemUnavailableGuilds() {
const styles = useStyles();
const stateFromStores = useStateFromStores([GuildAvailabilityStore], () => GuildAvailabilityStore.totalUnavailableGuilds);
return stateFromStores <= 0 ? null : <Pressable accessibilityRole="button" accessibilityLabel={intl.formatToPlainString(t["MEpX+2"], {
count: stateFromStores
})} onPress={() => {
AlertActionCreators.show({
title: intl.string(t.R0RpRX),
body: intl.format(t["TnH05/"], {
count: stateFromStores
})
});
}} style={styles.unavailableGuilds}>
<Image2 style={styles.unavailableGuildsIcon} source={Module14998} />
</Pressable>;
});
export default r48;
@@ -0,0 +1,35 @@
// Metro module 14966 (f14967).
import { memo } from "react";
import SelectedGuildStore from "../../../stores/SelectedGuildStore";
import { ME } from "../../../Constants";
import transitionGuildsBarToGuildOrOpenSelectedChannel from "./utils/transitionGuildsBarToGuildOrOpenSelectedChannel";
import MobileVisualRefreshExperiment from "../../themes/experiments/MobileVisualRefreshExperiment";
import GuildsBarAnimatedItemWrapper, { useGuildsBarAnimatedWrapperStyles } from "./GuildsBarAnimatedItemWrapper";
import { useStateFromStores } from "../../../_bundle/Module589";
import useGuildsBarBottomRightBadge from "./hooks/useGuildsBarBottomRightBadge";
import Module712 from "../../../_bundle/Module712";
import { intl, t } from "../../../intl/index.native";
import HomeDrawerDirectMessagesRow from "../../home_drawer/native/HomeDrawerDirectMessagesRow";
import { ChatIcon } from "../../../design/components/Icon/native/redesign/generated/ChatIcon";
const config = {
onPress: () => {
transitionGuildsBarToGuildOrOpenSelectedChannel(ME);
}
};
const r27 = memo(function GuildsBarMessages() {
const r15 = MobileVisualRefreshExperiment("GuildsBarMessages");
const styles = useGuildsBarAnimatedWrapperStyles();
const stateFromStores = useStateFromStores([SelectedGuildStore], () => {
const guildId = SelectedGuildStore.getGuildId();
return guildId == null || guildId === ME;
});
const guildsBarBottomRightBadge = useGuildsBarBottomRightBadge({
mentionCount: 0
});
const { badge, cutouts } = guildsBarBottomRightBadge;
const color = stateFromStores ? Module712.colors.WHITE : Module712.colors.MOBILE_GUILDBAR_ICON_DEFAULT;
return <GuildsBarAnimatedItemWrapper selected={stateFromStores} circle={r15 ? !r15 : !stateFromStores} unread={false} styles={styles} cutouts={cutouts} config={config} overState={void 0} label={intl.string(t.YUU0RF)} externalChildren={badge} expandedChildren={<HomeDrawerDirectMessagesRow />}>
<ChatIcon color={color} />
</GuildsBarAnimatedItemWrapper>;
});
export default r27;
@@ -0,0 +1,106 @@
// Metro module 15003 (f15004).
import * as Module19 from "react";
import { useMemo } from "react";
import UserGuildJoinRequestStore from "../../guild_member_verification/UserGuildJoinRequestStore";
import { getGuildIconSource, getGuildIconURL } from "../../../records/GuildRecord";
import SelectedGuildStore from "../../../stores/SelectedGuildStore";
import SortedGuildStore from "../../../stores/SortedGuildStore";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import GuildsBarAnimatedItemWrapper, { useGuildsBarAnimatedWrapperStyles } from "./GuildsBarAnimatedItemWrapper";
import { useToken } from "../../../design/tokens/native/useToken";
import { useStateFromStores } from "../../../_bundle/Module589";
import GuildIcon, { ImageSizes, GuildIconSizes } from "../../guild/native/GuildIcon";
import isGuildsBarGuildDataEqual from "./utils/isGuildsBarGuildDataEqual";
import useGuildsBarBottomRightBadge from "./hooks/useGuildsBarBottomRightBadge";
import { GuildJoinRequestApplicationStatuses } from "../../guild_member_verification/MemberVerificationTypes";
import { openMemberVerificationIncompleteAlert, openMemberVerificationPendingAlert, openMemberVerificationRejectedAlert } from "../../guild_member_verification/native/MemberVerificationAlertActionCreators";
import transitionGuildsBarToGuildOrOpenSelectedChannel from "./utils/transitionGuildsBarToGuildOrOpenSelectedChannel";
import usePreloadedGuildAsset from "./hooks/usePreloadedGuildAsset";
import getGuildsBarGuildMenuItems from "./utils/getGuildsBarGuildMenuItems";
import { useSharedValue } from "../../reanimated/ReanimatedRexport";
import HomeDrawerGuildRow from "../../home_drawer/native/HomeDrawerGuildRow";
import FastImage from "../../../components_native/common/FastImage";
const useStyles = createStyles({
guildIcon: {
width: Module712.modules.mobile.GUILD_BAR_ITEM_SIZE,
height: Module712.modules.mobile.GUILD_BAR_ITEM_SIZE
}
});
const r46 = Module19.memo(function GuildsBarPendingGuild(props) {
let stateFromStores2, stateFromStores3;
const guildId = props.guildId;
stateFromStores2 = void 0;
stateFromStores3 = void 0;
const styles = useStyles();
const styles2 = useGuildsBarAnimatedWrapperStyles({
disableSelectedColor: true,
disableBGColor: true
});
const token = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE);
const stateFromStores = useStateFromStores([SelectedGuildStore], () => SelectedGuildStore.getGuildId() === guildId, [guildId]);
stateFromStores2 = useStateFromStores([UserGuildJoinRequestStore], () => UserGuildJoinRequestStore.getRequest(guildId), [guildId]);
const stateFromStores4 = useStateFromStores([UserGuildJoinRequestStore], () => {
const joinRequestGuild = UserGuildJoinRequestStore.getJoinRequestGuild(guildId);
const icon = joinRequestGuild != null ? getGuildIconURL(joinRequestGuild, token, stateFromStores) : void 0;
return {
guildName: joinRequestGuild?.name,
icon,
asset: icon != null ? joinRequestGuild != null ? getGuildIconSource(joinRequestGuild, ImageSizes[GuildIconSizes.LARGE], stateFromStores) : void 0 : void 0
};
}, [guildId, token, stateFromStores], isGuildsBarGuildDataEqual);
const { asset, icon, guildName } = stateFromStores4;
const guildsBarBottomRightBadge = useGuildsBarBottomRightBadge({
mentionCount: 0,
joinRequestState: stateFromStores2?.applicationStatus
});
const { badge, cutouts } = guildsBarBottomRightBadge;
const memo = useMemo(() => ({
onPress: () => {
const applicationStatus = stateFromStores2?.applicationStatus;
if (GuildJoinRequestApplicationStatuses.STARTED === applicationStatus) {
openMemberVerificationIncompleteAlert(guildId);
} else if (GuildJoinRequestApplicationStatuses.SUBMITTED === applicationStatus) {
openMemberVerificationPendingAlert(guildId);
} else if (GuildJoinRequestApplicationStatuses.APPROVED === applicationStatus) {
transitionGuildsBarToGuildOrOpenSelectedChannel(guildId);
} else if (GuildJoinRequestApplicationStatuses.REJECTED === applicationStatus) {
openMemberVerificationRejectedAlert({
guildId,
canWithdraw: true
});
}
}
}), [guildId, stateFromStores2?.applicationStatus]);
const preloadedGuildAsset = usePreloadedGuildAsset(guildId, icon, asset);
stateFromStores3 = useStateFromStores([SortedGuildStore], () => SortedGuildStore.getGuildsTree().version);
const memo2 = useMemo(() => {
const guildsBarGuildMenuItems = getGuildsBarGuildMenuItems(guildId, stateFromStores3);
let c27882_0 = guildsBarGuildMenuItems;
return {
accessibilityActions: guildsBarGuildMenuItems.map((guildsBarGuildMenuItem) => ({
name: guildsBarGuildMenuItem.label,
label: guildsBarGuildMenuItem.label
})),
onAccessibilityAction: (c30817_0) => {
const r7 = c27882_0.find((item) => item.label === c30817_0.nativeEvent.actionName);
if (r7 != null) {
const action = r7.action;
if (action != null) {
action.call(r7);
}
}
}
};
}, [guildId, stateFromStores3]);
const { accessibilityActions, onAccessibilityAction: onAccessibilityAction2 } = memo2;
const sharedValue = useSharedValue(guildId);
let label = guildName;
if (label == null) {
label = "";
}
return <GuildsBarAnimatedItemWrapper id={guildId} accessibilityActions={accessibilityActions} onAccessibilityAction={onAccessibilityAction2} cutouts={cutouts} selected={stateFromStores} sharedId={sharedValue} circle={!stateFromStores} overState={void 0} unread={false} label={label} config={memo} styles={styles2} externalChildren={badge} expandedChildren={<HomeDrawerGuildRow guildId={guildId} disableSubtitle />}>
{preloadedGuildAsset != null ? <FastImage source={preloadedGuildAsset} style={styles.guildIcon} /> : <GuildIcon value={guildName} selected={stateFromStores} animate={stateFromStores} size={GuildIconSizes.LARGE} />}
</GuildsBarAnimatedItemWrapper>;
});
export default r46;
@@ -0,0 +1,60 @@
// Metro module 14965 (f14966).
import * as Module19 from "react";
import { useMemo } from "react";
import SelectedGuildStore from "../../../stores/SelectedGuildStore";
import { EMPTY_STRING_SNOWFLAKE_ID } from "../../../Constants";
import GuildsBarAnimatedItemWrapper, { useGuildsBarAnimatedWrapperStyles } from "./GuildsBarAnimatedItemWrapper";
import usePendingFolderGuildIds from "../usePendingFolderGuildIds";
import { useStateFromStores } from "../../../_bundle/Module589";
import { getGuildFolderMenuItems } from "./GuildsBarFolderMenuItems";
import { useSharedValue } from "../../reanimated/ReanimatedRexport";
import { triggerHapticFeedback, HapticFeedbackTypes } from "../../haptics/HapticUtils.native";
import GuildActionCreators from "../../../actions/GuildActionCreators";
import { intl, t } from "../../../intl/index.native";
import { GuildsBarGuildFolderBG } from "./GuildsBarGuildFolder";
import { HourglassIcon } from "../../../design/components/Icon/native/redesign/generated/HourglassIcon";
const r25 = Module19.memo(function GuildsBarPendingGuildFolder(props) {
const { id, expanded, childNodes } = props;
const styles = useGuildsBarAnimatedWrapperStyles({
disableSelectedColor: true,
disableBGColor: false
});
let c21492_1 = usePendingFolderGuildIds();
const stateFromStores = useStateFromStores([SelectedGuildStore], () => {
let r7 = SelectedGuildStore.getGuildId();
if (r7 == null) {
r7 = EMPTY_STRING_SNOWFLAKE_ID;
}
return c21492_1.includes(r7);
});
const memo = useMemo(() => {
const guildFolderMenuItems = getGuildFolderMenuItems(id);
return {
accessibilityActions: guildFolderMenuItems.map((guildFolderMenuItem) => ({
name: guildFolderMenuItem.label,
label: guildFolderMenuItem.label
})),
onAccessibilityAction: (c30814_0) => {
const r7 = guildFolderMenuItems.find((guildFolderMenuItem) => guildFolderMenuItem.label === c30814_0.nativeEvent.actionName);
if (r7 != null) {
const action = r7.action;
if (action != null) {
action.call(r7);
}
}
}
};
}, [id]);
const { accessibilityActions, onAccessibilityAction: onAccessibilityAction2 } = memo;
const sharedValue = useSharedValue(`${id}`);
const memo2 = useMemo(() => ({
onPress: () => {
triggerHapticFeedback(HapticFeedbackTypes.IMPACT_LIGHT);
GuildActionCreators.toggleGuildFolderExpand(id);
}
}), [id]);
return <GuildsBarAnimatedItemWrapper id={`${id}`} accessibilityActions={accessibilityActions} onAccessibilityAction={onAccessibilityAction2} selected={stateFromStores} unread={false} circle={false} styles={styles} label={intl.string(t["scsU+l"])} sharedId={sharedValue} cutouts={void 0} overState={void 0} preventClipping config={memo2} externalChildren={expanded ? <GuildsBarGuildFolderBG folderId={id} totalItems={childNodes.length} /> : null}>
<HourglassIcon />
</GuildsBarAnimatedItemWrapper>;
});
export default r25;
@@ -0,0 +1,43 @@
// Metro module 15002 (f15003).
import { memo, useContext } from "react";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useToken } from "../../../design/tokens/native/useToken";
import * as _useHomeDrawerGesture from "../../home_drawer/native/useHomeDrawerGesture";
import { HomeDrawerStateContext } from "../../home_drawer/native/useHomeDrawerGesture";
import { useAnimatedStyle } from "../../reanimated/ReanimatedRexport";
import * as _spring from "../../../design/animation/reanimated/spring/spring";
import ReanimatedNativeView from "../../core/native/ReanimatedNativeView";
const useStyles = createStyles({
separator: {
height: 1,
marginTop: Module712.modules.mobile.GUILD_BAR_ITEM_MARGIN,
marginBottom: Module712.modules.mobile.GUILD_BAR_ITEM_MARGIN,
marginLeft: 12,
marginRight: 12,
backgroundColor: Module712.colors.BORDER_SUBTLE
}
});
const __initData = {
code: "function GuildsBarSeparatorTsx1(){const{withSpring,guildItemSize,panelX,HOME_DRAWER_FLING_PHYSICS}=this.__closure;return{maxWidth:withSpring(Math.max(guildItemSize,panelX.get()+guildItemSize),HOME_DRAWER_FLING_PHYSICS)};}"
};
const r41 = memo(function GuildsBarSeparator() {
const styles = useStyles();
const token = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE);
const panelX = useContext(HomeDrawerStateContext).panelX;
const l = function l() {
return {
maxWidth: _spring.withSpring(Math.max(token, panelX.get() + token), _useHomeDrawerGesture.HOME_DRAWER_FLING_PHYSICS)
};
};
l.__closure = {
withSpring: _spring.withSpring,
guildItemSize: token,
panelX,
HOME_DRAWER_FLING_PHYSICS: _useHomeDrawerGesture.HOME_DRAWER_FLING_PHYSICS
};
l.__workletHash = 1425261651828;
l.__initData = __initData;
return <ReanimatedNativeView style={[styles.separator, useAnimatedStyle(l)]} />;
});
export default r41;
@@ -0,0 +1,333 @@
// Metro module 15012 (f15013).
import _slicedToArray from "../../../_bundle/_slicedToArray";
import * as Module19 from "react";
import { useState, useMemo, useEffect, useCallback } from "react";
import { View } from "react-native";
import GuildReadStateStore from "../../../stores/GuildReadStateStore";
import SelectedGuildStore from "../../../stores/SelectedGuildStore";
import SortedGuildStore, { GuildsNodeType } from "../../../stores/SortedGuildStore";
import { FastListRenderSections, useGuildWrapperSize, GUILD_LIST_WIDTH } from "./GuildsBarConstants";
import { YOU_BAR_HEIGHT, YOU_BAR_MARGIN } from "../../main_tabs_v2/native/you_bar/YouBarConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import { FastListItemTypes } from "../../../lib/native/FastList";
import useSafeAreaInsets_native from "../../safe_area/useSafeAreaInsets.native";
import { useMobileQuestDockHeight } from "../../quests/native/QuestHooks.native";
import { useYouBarTotalHeight } from "../../main_tabs_v2/native/you_bar/hooks/useYouBarTotalHeight";
import debounce from "../../../_bundle/debounce";
import shallowEqual from "../../../_bundle/shallowEqual";
import { BatchedStoreListener } from "../../../_bundle/Module589";
import * as _ReanimatedRexport from "../../reanimated/ReanimatedRexport";
import { useAnimatedReaction } from "../../reanimated/ReanimatedRexport";
import UnreadBars from "../../../components_native/common/UnreadBars";
let useStyles, c10626_17, c10626_18, findFirstOrLastMentionedItem, __initData, __initData2;
const checkNodeAndIterate = function checkNodeAndIterate(a0) {
let length;
const node = a0.node;
let section = a0.section;
let item = a0.item;
const { direction, selectedGuildId } = a0;
if (node != null) {
if (node.type === GuildsNodeType.GUILD && node.id !== selectedGuildId) {
const node2 = GuildReadStateStore.getMentionCount(node.id) > 0 ? node : void 0;
if (node2 != null) {
if (section == null) {
section = 0;
}
if (item == null) {
item = 0;
}
return {
node: node2,
section,
item
};
}
}
let r14 = direction !== 1 ? node.children.length - 1 : 0;
if (0 <= r14 && r14 < node.children.length) {
do {
const r30 = r14;
const section2 = section ?? r30;
const r34 = checkNodeAndIterate({
node: node.children[r30],
section: section2,
item: section != null ? r30 : void 0,
direction,
selectedGuildId
});
if (r34 != null) {
return node.type === GuildsNodeType.FOLDER ? node.expanded ? r34 : {
node,
section: section2
} : r34;
}
const r35 = r30 + direction;
if (!(r35 >= 0)) {
break;
}
length = node.children.length;
r14 = r35;
} while (r14 < length);
}
}
};
findFirstOrLastMentionedItem = function findFirstOrLastMentionedItem(fastList, a1, a2, top, a4) {
let section;
const guildsTree = SortedGuildStore.getGuildsTree();
const root = guildsTree.root;
let r15 = fastList.getSectionItemFromPosition(fastList.scrollPosValue.get() + a4).item?.layoutStart;
if (r15 == null) {
r15 = fastList.scrollPosValue.get();
}
const r14 = fastList.scrollPosValue.get() + fastList.containerSize - top - (YOU_BAR_HEIGHT + YOU_BAR_MARGIN);
let r58 = -1;
let r59 = -1;
let r60 = false;
loop5: for (const r65 of fastList.state.items) {
const r66 = r65;
if (r65.layoutStart < r15) {
continue;
}
if (r66.type !== FastListItemTypes.ITEM && r66.type !== FastListItemTypes.SECTION) {
continue;
}
if (r66.layoutStart > r14) {
break;
}
if (r66.section < FastListRenderSections.GUILDS) {
if (!a1) {
continue;
}
r60 = true;
break;
}
if (r66.layoutSize === 0) {
continue;
}
if (r58 === -1) {
r58 = r66.section;
r59 = r66.item;
}
const type = r66.type;
if (FastListItemTypes.SECTION === type) {
const node2 = guildsTree.getNode(r66.recyclerKey);
if (node2 == null) {
continue;
}
if (node2.type !== GuildsNodeType.FOLDER) {
continue;
}
if (node2.expanded) {
continue;
}
for (const item of node2.children) {
if (item.type !== GuildsNodeType.GUILD) {
continue;
}
if (!(GuildReadStateStore.getMentionCount(item.id) > 0)) {
continue;
}
r60 = true;
continue loop5;
}
continue;
}
if (FastListItemTypes.ITEM !== type) {
r66.type;
continue;
}
const node = guildsTree.getNode(r66.recyclerKey);
if (node == null) {
continue;
}
if (node.type !== GuildsNodeType.GUILD) {
continue;
}
if (!(GuildReadStateStore.getMentionCount(node.id) > 0)) {
continue;
}
r60 = true;
break;
}
if (r60) {
return c10626_17;
}
const r150 = a1 ? void 0 : checkNodeAndIterate({
node: root,
direction: 1,
selectedGuildId: a2
});
if (!(r150 == null && a1) && r150 == null) {
return c10626_17;
}
if (r150 == null) {
return c10626_18;
}
L59: {
section = r150.section + FastListRenderSections.GUILDS;
if (!(section < r58)) {
if (section === r58) {
let item2 = r150.item;
if (item2 == null) {
item2 = 0;
}
if (item2 < r59) {
break L59;
}
}
const r163 = checkNodeAndIterate({
node: root,
direction: -1,
selectedGuildId: a2
});
return r163 != null ? {
beforeItem: void 0,
afterItem: {
section: r163.section + FastListRenderSections.GUILDS,
row: r163.item,
mention: true
}
} : c10626_17;
}
}
return {
beforeItem: {
section,
row: r150.item,
mention: true
},
afterItem: void 0
};
};
useStyles = createStyles({
wrapper: {
position: "absolute",
top: 0,
left: 0,
bottom: 0,
width: GUILD_LIST_WIDTH
}
});
c10626_17 = {
beforeItem: void 0,
afterItem: void 0
};
c10626_18 = {
beforeItem: {
section: 0,
row: 0,
mention: true
},
afterItem: void 0
};
__initData = {
code: "function GuildsBarUnreadBarsTsx1(){const{scrollPosValue}=this.__closure;return scrollPosValue.get();}"
};
__initData2 = {
code: "function GuildsBarUnreadBarsTsx2(position,lastPosition){const{runOnJS,debouncedUpdate}=this.__closure;if(position!==lastPosition){runOnJS(debouncedUpdate)();}}"
};
const r56 = Module19.memo(function GuildsBarUnreadBars(props) {
let setState, memo, scrollPosValue, paddingStart, paddingEnd;
let styles, top2, mobileQuestDockHeight, youBarTotalHeight;
const fastList = props.fastList;
setState = void 0;
memo = void 0;
scrollPosValue = void 0;
paddingStart = void 0;
paddingEnd = void 0;
const top = useSafeAreaInsets_native().top;
const r0 = useGuildWrapperSize() / 2;
let c21521_2 = r0;
const r28 = _slicedToArray(useState(() => {
const r2 = GuildReadStateStore.getPrivateChannelMentionCount() > 0;
let r18 = SelectedGuildStore.getGuildId();
if (r18 == null) {
r18 = null;
}
return findFirstOrLastMentionedItem(fastList, r2, r18, top, c21521_2);
}), 2);
const r29 = r28[0];
const { beforeItem, afterItem } = r29;
setState = r28[1];
memo = useMemo(() => debounce(() => {
const r2 = GuildReadStateStore.getPrivateChannelMentionCount() > 0;
let r18 = SelectedGuildStore.getGuildId();
if (r18 == null) {
r18 = null;
}
let c30819_0 = findFirstOrLastMentionedItem(fastList, r2, r18, top, c21521_2);
setState((prevState) => {
let r12;
L4: {
if (prevState !== c30819_0) {
const r11 = shallowEqual(prevState.afterItem, c30819_0.afterItem);
r12 = c30819_0;
if (!r11) {
break L4;
}
r12 = shallowEqual(prevState.beforeItem, c30819_0.beforeItem) ? prevState : c30819_0;
} else {
r12 = prevState;
}
}
return r12;
});
}, 100), [fastList, top, r0]);
useEffect(() => {
const batchedStoreListener = new BatchedStoreListener([GuildReadStateStore, SelectedGuildStore, SortedGuildStore], memo);
let c27884_0 = batchedStoreListener;
batchedStoreListener.attach("guild-mention-bars");
return () => {
c27884_0.detach();
};
}, [memo]);
scrollPosValue = fastList.scrollPosValue;
const D = () => scrollPosValue.get();
D.__closure = {
scrollPosValue
};
D.__workletHash = 16367582542434;
D.__initData = __initData;
const O = function O(a0, a1) {
if (a0 !== a1) {
_ReanimatedRexport.runOnJS(memo)();
}
};
O.__closure = {
runOnJS: _ReanimatedRexport.runOnJS,
debouncedUpdate: memo
};
O.__workletHash = 13727289405147;
O.__initData = __initData2;
useAnimatedReaction(D, O);
styles = void 0;
top2 = void 0;
mobileQuestDockHeight = void 0;
youBarTotalHeight = void 0;
styles = useStyles();
top2 = useSafeAreaInsets_native().top;
mobileQuestDockHeight = useMobileQuestDockHeight();
youBarTotalHeight = useYouBarTotalHeight(mobileQuestDockHeight > 0 ? 0 : 8);
const memo2 = useMemo(() => ({
style: [styles.wrapper, {
top: top2,
bottom: mobileQuestDockHeight + youBarTotalHeight
}],
paddingStart: top2,
paddingEnd: mobileQuestDockHeight + 4 + youBarTotalHeight
}), [styles.wrapper, top2, mobileQuestDockHeight, youBarTotalHeight]);
const style = memo2.style;
paddingStart = memo2.paddingStart;
paddingEnd = memo2.paddingEnd;
return <View style={style} collapsable={false} pointerEvents="box-none" testID="guilds-bar-unread-bars">
<UnreadBars beforeItem={beforeItem} afterItem={afterItem} scrollToLocation={useCallback((a0) => {
fastList.scrollToLocation({
...a0,
paddingStart,
paddingEnd,
orientation: "visible"
});
}, [fastList, paddingStart, paddingEnd])} compact />
</View>;
});
export default r56;
@@ -0,0 +1,128 @@
// Metro module 14988 (f14989).
import { useMemo } from "react";
import GuildIncidentsStore from "../../../guild_antiraid/GuildIncidentsStore";
import UserGuildJoinRequestStore from "../../../guild_member_verification/UserGuildJoinRequestStore";
import LurkingStore from "../../../lurker_mode/LurkingStore";
import GuildMemberStore from "../../../../stores/GuildMemberStore";
import GuildStore from "../../../../stores/GuildStore";
import PermissionStore from "../../../../stores/PermissionStore";
import UserStore from "../../../../stores/UserStore";
import { GuildFeatures, Permissions } from "../../../../Constants";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import { useStateFromStores } from "../../../../_bundle/Module589";
import { isActionedAndNotAcked } from "../../../guild_member_verification/GuildJoinRequestUtils";
import useGuildMediaState from "../../useGuildMediaState";
import { useToken } from "../../../../design/tokens/native/useToken";
import Module712 from "../../../../_bundle/Module712";
import { BADGE_PADDING } from "../../../../design/void/native";
import { getMediaIcon, GuildsBarActivityIndicatorBase } from "../GuildsBarActivityIndicator";
import computeGuildsBarCutout from "../utils/computeGuildsBarCutout";
import useGuildsBarBottomRightBadge from "./useGuildsBarBottomRightBadge";
const _excluded = ["guildActivityIndicatorSource"];
const useStyles = createStyles({
topRightBadge: {
position: "absolute",
right: 9,
backgroundColor: "transparent",
borderColor: "transparent"
}
});
export default function useGuildsBarBadges(a0, a1, a2) {
let c21505_3, token, token2, memo, cutoutTopRight, cutout;
const styles = useStyles();
const stateFromStores = useStateFromStores([GuildStore], () => {
const guild = GuildStore.getGuild(a0);
let r8 = guild == null ? void 0 : guild.features.has(GuildFeatures.MEMBER_VERIFICATION_MANUAL_APPROVAL);
if (r8 == null) {
r8 = false;
}
return r8;
});
const stateFromStores2 = useStateFromStores([UserGuildJoinRequestStore, UserStore, GuildMemberStore], () => {
L7: {
if (stateFromStores) {
const request = UserGuildJoinRequestStore.getRequest(a0);
const currentUser = UserStore.getCurrentUser();
if (currentUser != null && request != null && request.userId === currentUser.id) {
const member = GuildMemberStore.getMember(a0, request.userId);
if (member != null && !member.isPending && !isActionedAndNotAcked(request)) {
break L7;
}
return request.applicationStatus;
}
}
}
}, [a0, stateFromStores]);
const stateFromStores3 = useStateFromStores([PermissionStore, GuildStore, GuildIncidentsStore], () => {
const guild = GuildStore.getGuild(a0);
if (guild != null && PermissionStore.can(Permissions.MANAGE_GUILD, guild)) {
const guildIncident = GuildIncidentsStore.getGuildIncident(a0);
const r19 = guild == null;
let r20 = void 0;
if (!r19) {
const features = guild.features;
const has = features.has;
r20 = has == null ? void 0 : has.call(features, GuildFeatures.INVITES_DISABLED);
}
if (!r20) {
r20 = guildIncident?.invitesDisabledUntil != null && new Date(guildIncident.invitesDisabledUntil) > new Date();
}
return r20;
}
return false;
}, [a0]);
const guildMediaState = useGuildMediaState(a0);
c21505_3 = guildMediaState;
const stateFromStores4 = useStateFromStores([LurkingStore], () => LurkingStore.getLurkingPreviewExpiry(a0), [a0]);
token = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE);
token2 = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_MARGIN);
memo = useMemo(() => [styles.topRightBadge, {
top: token2 - BADGE_PADDING
}], [styles.topRightBadge, token2]);
const memo2 = useMemo(() => {
const mediaIcon = getMediaIcon(c21505_3);
let guildActivityIndicatorSource2 = mediaIcon?.source;
if (guildActivityIndicatorSource2 == null) {
guildActivityIndicatorSource2 = null;
}
const r10 = {
guildActivityIndicatorSource: guildActivityIndicatorSource2,
IconComponent: mediaIcon?.icon,
isCurrentUserConnected: c21505_3.isCurrentUserConnected
};
const { guildActivityIndicatorSource, ...rest } = r10;
return {
badgeTopRight: guildActivityIndicatorSource != null ? <GuildsBarActivityIndicatorBase style={memo} source={guildActivityIndicatorSource} {...rest} /> : null,
cutoutTopRight: guildActivityIndicatorSource != null ? computeGuildsBarCutout({
position: "top-right",
containerSize: token
}) : void 0
};
}, [guildMediaState, memo, token]);
const badgeTopRight = memo2.badgeTopRight;
cutoutTopRight = memo2.cutoutTopRight;
const guildsBarBottomRightBadge = useGuildsBarBottomRightBadge({
mentionCount: a1,
isMentionLowImportance: a2,
joinRequestState: stateFromStores2,
shouldShowInvitesDisabled: stateFromStores3,
lurkerPreviewExpiresAt: stateFromStores4
});
const badge = guildsBarBottomRightBadge.badge;
cutout = guildsBarBottomRightBadge.cutout;
return {
badgeTopRight,
badgeBottomRight: badge,
cutouts: useMemo(() => {
const r1 = [];
if (cutoutTopRight != null) {
r1.push(cutoutTopRight);
}
if (cutout != null) {
r1.push(cutout);
}
return r1;
}, [cutoutTopRight, cutout]),
mediaState: guildMediaState
};
};
@@ -0,0 +1,98 @@
// Metro module 14954 (f14955).
import { useState, useMemo } from "react";
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
import LurkerPreviewCooldownBadge, { useHasExpired } from "../../../lurker_mode/native/LurkerPreviewCooldownBadge";
import { BADGE_MASK_SIZE, BADGE_MASK_UNREAD_SIZE, BADGE_PADDING, MaskedBadge } from "../../../../design/void/native";
import { useToken } from "../../../../design/tokens/native/useToken";
import Module712 from "../../../../_bundle/Module712";
import computeGuildsBarCutout from "../utils/computeGuildsBarCutout";
import GuildsBarGuildJoinRequestBadge from "../GuildsBarGuildJoinRequestBadge";
import InvitesDisabledBadge from "../../../guild/native/InvitesDisabledBadge";
const useStyles = createStyles({
bottomRightBadge: {
position: "absolute",
right: 9,
backgroundColor: "transparent",
borderColor: "transparent"
}
});
export default function useGuildsBarBottomRightBadge(a0) {
let state, setState, token, token2, memo;
const { mentionCount, isMentionLowImportance, joinRequestState, shouldShowInvitesDisabled = false } = a0;
let c21487_3 = shouldShowInvitesDisabled;
let lurkerPreviewExpiresAt = a0.lurkerPreviewExpiresAt;
if (lurkerPreviewExpiresAt === void 0) {
lurkerPreviewExpiresAt = null;
}
const expiresAt = lurkerPreviewExpiresAt;
state = void 0;
setState = void 0;
token = void 0;
token2 = void 0;
memo = void 0;
const styles = useStyles();
const hasExpired = useHasExpired(expiresAt);
[state, setState] = useState(() => mentionCount > 0 ? BADGE_MASK_SIZE : BADGE_MASK_UNREAD_SIZE);
token = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_SIZE);
token2 = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_MARGIN);
memo = useMemo(() => [styles.bottomRightBadge, {
bottom: token2 - BADGE_PADDING
}], [styles.bottomRightBadge, token2]);
return useMemo(() => {
if (mentionCount > 0) {
const cutout4 = computeGuildsBarCutout({
position: "bottom-right",
containerSize: token,
width: state - 2 * BADGE_PADDING
});
return {
badge: <MaskedBadge maskStyle={memo} value={mentionCount} isMentionLowImportance={isMentionLowImportance} accessibilityElementsHidden importantForAccessibility="no-hide-descendants" onLayout={(event) => {
const layout = event.nativeEvent.layout;
if (state !== layout.width) {
setState(layout.width);
}
}} />,
cutout: cutout4,
cutouts: [cutout4]
};
}
if (joinRequestState != null) {
const cutout3 = computeGuildsBarCutout({
position: "bottom-right",
containerSize: token
});
return {
badge: <GuildsBarGuildJoinRequestBadge style={memo} joinRequestState={joinRequestState} />,
cutout: cutout3,
cutouts: [cutout3]
};
}
if (c21487_3) {
const cutout2 = computeGuildsBarCutout({
position: "bottom-right",
containerSize: token
});
return {
badge: <InvitesDisabledBadge style={memo} />,
cutout: cutout2,
cutouts: [cutout2]
};
}
if (expiresAt != null && !hasExpired) {
const cutout = computeGuildsBarCutout({
position: "bottom-right",
containerSize: token
});
return {
badge: <LurkerPreviewCooldownBadge style={memo} expiresAt={expiresAt} />,
cutout,
cutouts: [cutout]
};
}
return {
badge: null,
cutout: void 0,
cutouts: void 0
};
}, [state, shouldShowInvitesDisabled, joinRequestState, mentionCount, isMentionLowImportance, memo, token, expiresAt, hasExpired]);
};
@@ -0,0 +1,39 @@
// Metro module 15016 (f15017).
import { useEffect } from "react";
import UserGuildJoinRequestStore from "../../../guild_member_verification/UserGuildJoinRequestStore";
import ExpandedGuildFolderStore from "../../../../stores/ExpandedGuildFolderStore";
import { useStateFromStores } from "../../../../_bundle/Module589";
import usePendingFolderGuildIds from "../../usePendingFolderGuildIds";
import { SpecialGuildsNodeIds } from "../../GuildsBarTypes";
import GuildJoinRequestActionCreators from "../../../guild_member_verification/GuildJoinRequestActionCreators";
import { createFolderNode, createGuildNode } from "../../GuildsTree";
import { intl, t } from "../../../../intl/index.native";
export default function useGuildsBarCreatePendingFolderNode() {
const stateFromStores = useStateFromStores([UserGuildJoinRequestStore], () => UserGuildJoinRequestStore.hasFetchedRequestToJoinGuilds);
const pendingFolderGuildIds = usePendingFolderGuildIds();
const stateFromStores2 = useStateFromStores([ExpandedGuildFolderStore], () => ExpandedGuildFolderStore.isFolderExpanded(SpecialGuildsNodeIds.PENDING_JOIN_REQUESTS_FOLDER));
useEffect(() => {
if (!stateFromStores) {
GuildJoinRequestActionCreators.fetchRequestToJoinGuilds();
}
}, [stateFromStores]);
if (!(pendingFolderGuildIds.length > 0)) {
return {
expanded: false,
pendingFolderNode: null
};
}
const folderNode = createFolderNode({
folderId: SpecialGuildsNodeIds.PENDING_JOIN_REQUESTS_FOLDER,
folderName: intl.string(t["scsU+l"]),
expanded: stateFromStores2,
guildIds: pendingFolderGuildIds
});
for (const item of pendingFolderGuildIds) {
folderNode.children.push(createGuildNode(item, folderNode.id));
}
return {
expanded: stateFromStores2,
pendingFolderNode: folderNode
};
};
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,583 @@
// Metro module 14950 (f14951).
import { useEffect, useMemo, useCallback } from "react";
import GatewayConnectionStore from "../../../gateway/GatewayConnectionStore";
import LurkingStore from "../../../lurker_mode/LurkingStore";
import MessageRequestStore from "../../../message_request/MessageRequestStore";
import SpamMessageRequestStore from "../../../message_request/SpamMessageRequestStore";
import GeoRestrictedGuildStore from "../../../../stores/GeoRestrictedGuildStore";
import GuildAvailabilityStore from "../../../../stores/GuildAvailabilityStore";
import GuildMemberStore from "../../../../stores/GuildMemberStore";
import GuildStore from "../../../../stores/GuildStore";
import PrivateChannelReadStateStore from "../../../../stores/PrivateChannelReadStateStore";
import SelectedGuildStore from "../../../../stores/SelectedGuildStore";
import SortedGuildStore, { GuildsNodeType } from "../../../../stores/SortedGuildStore";
import GuildsBarDnDStore from "../GuildsBarDnDStore";
import { FastListRenderSections, useGuildWrapperSize } from "../GuildsBarConstants";
import GuildsBarGuildFolder from "../GuildsBarGuildFolder";
import GuildsBarPendingGuildFolder from "../GuildsBarPendingGuildFolder";
import GuildsBarMessages from "../GuildsBarMessages";
import GuildsBarFavorites from "../GuildsBarFavorites";
import GuildsBarGuild from "../GuildsBarGuild";
import GuildsBarDirectMessage from "../GuildsBarDirectMessage";
import GuildsBarSeparator from "../GuildsBarSeparator";
import GuildsBarPendingGuild from "../GuildsBarPendingGuild";
import GuildsBarGeoRestrictedGuild from "../GuildsBarGeoRestrictedGuild";
import GuildsBarFooterWrapper from "../GuildsBarFooterWrapper";
import GuildsBarItemUnavailableGuilds from "../GuildsBarItemUnavailableGuilds";
import GuildsBarItemEmptyNUX from "../GuildsBarItemEmptyNUX";
import GuildsBarCreateJoinButton from "../GuildsBarCreateJoinButton";
import GuildsBarUnreadBars from "../GuildsBarUnreadBars";
import { useToken } from "../../../../design/tokens/native/useToken";
import Module712 from "../../../../_bundle/Module712";
import useSafeAreaInsets_native from "../../../safe_area/useSafeAreaInsets.native";
import { useMobileQuestDockHeight } from "../../../quests/native/QuestHooks.native";
import { useYouBarTotalHeight } from "../../../main_tabs_v2/native/you_bar/hooks/useYouBarTotalHeight";
import useIsFavoritesGuildVisible from "../../../favorites/hooks/useIsFavoritesGuildVisible";
import { useStateFromStoresArray, useStateFromStores } from "../../../../_bundle/Module589";
import { filterOutMessageRequestsAndSpamById } from "../../../message_request/MessageRequestUtils";
import areGuildsBarFastListStatesEqual from "../utils/areGuildsBarFastListStatesEqual";
import useGuildsBarCreatePendingFolderNode from "./useGuildsBarCreatePendingFolderNode";
import { getWindowDimensions } from "../../../screen/useWindowDimensions.native";
import useGuildsBarSelectedGuildScroller from "../../hooks/useGuildsBarSelectedGuildScroller";
import { FastListItemTypes } from "../../../../lib/native/FastList";
let c10577_21, isAnchorIdEqual;
const findGuildSectionIndex = function findGuildSectionIndex(guildId) {
const fastListGuildFolders = SortedGuildStore.getFastListGuildFolders();
let r29 = -1;
let item3 = 0;
let r31 = false;
for (const item of fastListGuildFolders) {
r29 = r29 + 1;
item3 = 0;
if (!(item.type === GuildsNodeType.GUILD && item.id === guildId)) {
if (item.type === GuildsNodeType.FOLDER) {
for (const item2 of item.children) {
if (item2.type !== GuildsNodeType.GUILD) {
continue;
}
if (item2.id !== guildId) {
item3 = item3 + 1;
continue;
}
if (!item.expanded) {
item3 = 0;
}
r31 = true;
break;
}
}
if (r31) {
break;
}
continue;
}
r31 = true;
break;
}
return r31 ? {
section: r29 + FastListRenderSections.GUILDS,
item: item3
} : null;
};
isAnchorIdEqual = function isAnchorIdEqual(a0, id, a2) {
return a2 != null && id === `${a0}:${a2}`;
};
c10577_21 = {
MESSAGES: "section-messages",
FAVORITES: "section-favorites",
PENDING_JOIN_REQUESTS: "section-pending-join-requests",
LURKING_GUILDS: "section-lurking-guilds",
GUEST_GUILDS: "section-guest-guilds",
UNREAD_PRIVATE_CHANNELS: "section-private-channels",
SEPARATOR: "section-separator",
GUILDS: "section-guilds"
};
export default function useGuildsBarProps(a0) {
let c21479_8, stateFromStoresArray, stateFromStores, stateFromStoresArray2, stateFromStores2, stateFromStoresArray3, guildsNFolders, expanded, pendingFolderNode, stateFromStores3, memo, memo2;
let c21479_0 = a0;
const guildWrapperSize = useGuildWrapperSize();
const token = useToken(Module712.modules.mobile.GUILD_BAR_ITEM_MARGIN);
const safeAreaInsets_native = useSafeAreaInsets_native();
const { top, bottom } = safeAreaInsets_native;
const mobileQuestDockHeight = useMobileQuestDockHeight();
const youBarTotalHeight = useYouBarTotalHeight();
const youBarTotalHeight2 = useYouBarTotalHeight(4);
useEffect(() => {
GuildsBarDnDStore.getState().listInsets.set({
start: top,
end: mobileQuestDockHeight + youBarTotalHeight
});
}, [mobileQuestDockHeight, top, youBarTotalHeight]);
const r60 = useIsFavoritesGuildVisible("useGuildsBarProps") ? 1 : 0;
c21479_8 = r60;
stateFromStoresArray = useStateFromStoresArray([PrivateChannelReadStateStore, MessageRequestStore, SpamMessageRequestStore], () => filterOutMessageRequestsAndSpamById(PrivateChannelReadStateStore.getUnreadPrivateChannelIds(), [MessageRequestStore, SpamMessageRequestStore]), []);
stateFromStores = useStateFromStores([GatewayConnectionStore], () => GatewayConnectionStore.isConnected());
stateFromStoresArray2 = useStateFromStoresArray([GeoRestrictedGuildStore], () => GeoRestrictedGuildStore.getGeoRestrictedGuilds());
stateFromStores2 = useStateFromStores([LurkingStore], () => LurkingStore.lurkingGuildIds());
stateFromStoresArray3 = useStateFromStoresArray([GuildStore, GuildMemberStore], () => GuildStore.getGuildIds().filter((item) => GuildMemberStore.isCurrentUserGuest(item)));
const stateFromStores4 = useStateFromStores([SortedGuildStore], () => ({
guildsNFolders: SortedGuildStore.getFastListGuildFolders(),
version: SortedGuildStore.getGuildsTree().version
}), [], areGuildsBarFastListStatesEqual);
guildsNFolders = stateFromStores4.guildsNFolders;
const version = stateFromStores4.version;
const guildsBarCreatePendingFolderNode = useGuildsBarCreatePendingFolderNode();
expanded = guildsBarCreatePendingFolderNode.expanded;
pendingFolderNode = guildsBarCreatePendingFolderNode.pendingFolderNode;
stateFromStores3 = useStateFromStores([GuildAvailabilityStore], () => GuildAvailabilityStore.totalUnavailableGuilds);
memo = useMemo(() => ({
scrollIndicatorInsets: {
top: 3 * token,
bottom: youBarTotalHeight > 0 ? youBarTotalHeight - 16 : bottom + 3 * token
},
insetStart: top,
insetEnd: mobileQuestDockHeight + 2 * token + youBarTotalHeight2,
chunkBase: getWindowDimensions().height
}), [top, mobileQuestDockHeight, bottom, youBarTotalHeight, youBarTotalHeight2, token]);
useGuildsBarSelectedGuildScroller(useCallback((a0, a1) => {
if (a0 != null) {
const r14 = findGuildSectionIndex(a0);
if (r14 == null) {
return void 0;
}
const current2 = c21479_0.current;
if (current2 != null) {
current2.scrollToLocation({
...r14,
orientation: "visible",
paddingStart: memo.insetStart,
paddingEnd: memo.insetEnd
});
}
} else {
const current = c21479_0.current;
if (current != null) {
current.scrollTo(0, a1);
}
}
}, [memo.insetStart, memo.insetEnd, a0]));
memo2 = useMemo(() => {
const guildId = SelectedGuildStore.getGuildId();
const r8 = guildId != null ? findGuildSectionIndex(guildId) : void 0;
if (r8 != null) {
return {
initialScrollItem: r8.item,
initialScrollSection: r8.section
};
}
}, []);
return {
listProps: memo,
listDataProps: useMemo(() => {
const sections = [1, c21479_8, pendingFolderNode == null ? 0 : expanded ? pendingFolderNode.children.length : 1, stateFromStores2.length, stateFromStoresArray3.length, Math.min(stateFromStoresArray.length, 10), 1];
for (const guildsNFolder of guildsNFolders) {
const r46 = guildsNFolder;
if (guildsNFolder.type === GuildsNodeType.GUILD) {
sections.push(1);
} else if (r46.type === GuildsNodeType.FOLDER) {
if (r46.expanded) {
sections.push(r46.children.length);
} else {
sections.push(1);
}
}
}
if (stateFromStoresArray2.length > 0) {
sections.push(stateFromStoresArray2.length);
}
const r69 = [];
let c27871_0 = r69;
if (stateFromStores3 > 0) {
r69.push("unavailable-guilds");
}
let r74 = stateFromStores;
if (stateFromStores) {
r74 = guildsNFolders.length === 0;
}
if (r74) {
r74 = stateFromStores3 === 0;
}
if (r74) {
r69.push("empty-nux");
}
r69.push("create-join-guild");
return {
...memo2,
sections,
sectionSize: (a0) => {
let r10;
L7: {
if (a0 === FastListRenderSections.PENDING_JOIN_REQUESTS) {
r10 = guildWrapperSize;
if (pendingFolderNode != null) {
break L7;
}
}
const r12 = a0 >= FastListRenderSections.GUILDS;
r10 = 0;
if (r12) {
const r15 = guildsNFolders[a0 - FastListRenderSections.GUILDS];
r10 = r15 == null ? 0 : r15.type === GuildsNodeType.FOLDER ? guildWrapperSize : 0;
}
}
return r10;
},
itemSize: (a0, a1) => {
let r16, r29;
L31: {
const MESSAGES = FastListRenderSections.MESSAGES;
r16 = guildWrapperSize;
if (MESSAGES !== a0) {
const FAVORITES = FastListRenderSections.FAVORITES;
r16 = guildWrapperSize;
if (FAVORITES !== a0) {
const LURKING_GUILDS = FastListRenderSections.LURKING_GUILDS;
r16 = guildWrapperSize;
if (LURKING_GUILDS !== a0) {
const GUEST_GUILDS = FastListRenderSections.GUEST_GUILDS;
r16 = guildWrapperSize;
if (GUEST_GUILDS !== a0) {
let r20 = a1;
if (FastListRenderSections.UNREAD_PRIVATE_CHANNELS === a0) {
if (a1 == null) {
r20 = -1;
}
r16 = stateFromStoresArray[r20] == null ? 0 : guildWrapperSize;
} else if (FastListRenderSections.SEPARATOR === a0) {
r16 = 1 + 2 * token;
} else if (FastListRenderSections.PENDING_JOIN_REQUESTS === a0) {
r16 = a1 != null ? pendingFolderNode != null ? pendingFolderNode.expanded ? pendingFolderNode.children[a1] != null ? guildWrapperSize : 0 : 0 : 0 : 0;
} else {
const r3 = a1 == null;
r16 = 0;
if (!r3) {
const r24 = a0 - FastListRenderSections.GUILDS;
if (guildsNFolders.length >= r24) {
const r26 = stateFromStoresArray2[a1];
r16 = guildWrapperSize;
if (r26 != null) {
break L31;
}
}
L18: {
const r27 = guildsNFolders[r24];
const r28 = r27 == null;
r29 = 0;
if (!r28) {
const type = r27.type;
const ROOT = GuildsNodeType.ROOT;
r29 = 0;
if (type !== ROOT) {
if (r27.type === GuildsNodeType.GUILD) {
const r35 = a1 > 0;
r29 = 0;
if (r35) {
break L18;
}
}
if (r27.type === GuildsNodeType.FOLDER) {
const expanded2 = r27.expanded;
r29 = 0;
if (!expanded2) {
break L18;
}
const r41 = r27.children[a1] == null;
r29 = 0;
if (r41) {
break L18;
}
}
r29 = guildWrapperSize;
}
}
}
r16 = r29;
}
}
}
}
}
}
}
return r16;
},
footerSize: () => c27871_0.length * guildWrapperSize + 8,
renderSection: (a0) => {
let r13;
if (a0 >= FastListRenderSections.GUILDS) {
const r23 = guildsNFolders[a0 - FastListRenderSections.GUILDS];
r13 = r23.type === GuildsNodeType.FOLDER ? <GuildsBarGuildFolder id={r23.id} expanded={r23.expanded} name={r23.name} color={r23.color} childNodes={r23.children} /> : null;
} else {
r13 = a0 === FastListRenderSections.PENDING_JOIN_REQUESTS ? pendingFolderNode != null ? <GuildsBarPendingGuildFolder id={pendingFolderNode.id} expanded={pendingFolderNode.expanded} childNodes={pendingFolderNode.children} /> : null : null;
}
return r13;
},
renderItem: (a0, a1) => {
let r27;
L39: {
if (FastListRenderSections.MESSAGES === a0) {
r27 = <GuildsBarMessages />;
} else if (FastListRenderSections.FAVORITES === a0) {
r27 = <GuildsBarFavorites />;
} else if (FastListRenderSections.LURKING_GUILDS === a0) {
const guildId2 = stateFromStores2[a1];
r27 = guildId2 != null ? <GuildsBarGuild guildId={guildId2} /> : null;
} else if (FastListRenderSections.GUEST_GUILDS === a0) {
const guildId = stateFromStoresArray3[a1];
r27 = guildId != null ? <GuildsBarGuild guildId={guildId} /> : null;
} else if (FastListRenderSections.UNREAD_PRIVATE_CHANNELS === a0) {
const channelId = stateFromStoresArray[a1];
r27 = channelId != null ? <GuildsBarDirectMessage channelId={channelId} /> : null;
} else if (FastListRenderSections.SEPARATOR === a0) {
r27 = <GuildsBarSeparator />;
} else if (FastListRenderSections.PENDING_JOIN_REQUESTS === a0) {
const r59 = pendingFolderNode == null;
r27 = null;
if (!r59) {
const r61 = pendingFolderNode.children[a1];
r27 = r61 == null ? null : r61.type === GuildsNodeType.GUILD ? <GuildsBarPendingGuild guildId={r61.id} /> : null;
}
} else {
const r24 = a0 - FastListRenderSections.GUILDS;
if (r24 >= guildsNFolders.length) {
const restrictedGuild = stateFromStoresArray2[a1];
r27 = restrictedGuild != null ? <GuildsBarGeoRestrictedGuild restrictedGuild={restrictedGuild} /> : null;
} else {
const r26 = guildsNFolders[r24];
const r2 = r26 == null;
r27 = null;
if (!r2) {
const type = r26.type;
const ROOT = GuildsNodeType.ROOT;
r27 = null;
if (type !== ROOT) {
if (r26.type === GuildsNodeType.GUILD) {
const r32 = a1 > 0;
r27 = null;
if (r32) {
break L39;
}
}
const r15 = r26.type === GuildsNodeType.FOLDER ? r26.children[a1] : r26;
r27 = r15 == null ? null : r15.type === GuildsNodeType.GUILD ? <GuildsBarGuild guildId={r15.id} /> : null;
}
}
}
}
}
return r27;
},
renderFooter: () => <GuildsBarFooterWrapper>
{c27871_0.map((item) => {
if (item === "unavailable-guilds") {
return <GuildsBarItemUnavailableGuilds key={item} />;
}
if (item === "empty-nux") {
return <GuildsBarItemEmptyNUX key={item} />;
}
if (item === "create-join-guild") {
return <GuildsBarCreateJoinButton key={item} />;
}
})}
</GuildsBarFooterWrapper>,
getRecyclerKey: (a0, a1, a2) => {
if (FastListItemTypes.ITEM !== a0 && FastListItemTypes.SECTION !== a0) {
return void 0;
}
L13: {
if (!(a1 < FastListRenderSections.GUILDS)) {
const r22 = guildsNFolders[a1 - FastListRenderSections.GUILDS];
if (r22 != null && r22.type !== GuildsNodeType.ROOT) {
const type = r22.type;
const FOLDER = GuildsNodeType.FOLDER;
let r28 = r22;
if (type === FOLDER) {
if (a2 == null) {
return `${r22.id}`;
}
r28 = r22.children[a2];
}
if (r28.type === GuildsNodeType.GUILD && a2 == null) {
break L13;
}
return `${r28.id}`;
}
}
}
},
renderAccessory: (a0) => <GuildsBarUnreadBars fastList={a0} />,
getAnchorIdFromIndex: (a0, a1) => {
let MESSAGES;
if (GuildsBarDnDStore.getState().dropSpecs == null && GuildsBarDnDStore.getState().dragSpecs == null) {
if (FastListRenderSections.MESSAGES === a0) {
MESSAGES = c10577_21.MESSAGES;
} else if (FastListRenderSections.FAVORITES === a0) {
MESSAGES = c10577_21.FAVORITES;
} else if (FastListRenderSections.PENDING_JOIN_REQUESTS === a0) {
if (a1 == null) {
MESSAGES = c10577_21.PENDING_JOIN_REQUESTS;
} else {
const r83 = pendingFolderNode == null ? void 0 : pendingFolderNode.children[a1]?.id;
MESSAGES = r83 != null ? `${c10577_21.PENDING_JOIN_REQUESTS}:${r83}` : void 0;
}
} else if (FastListRenderSections.LURKING_GUILDS === a0) {
MESSAGES = a1 == null ? c10577_21.LURKING_GUILDS : `${c10577_21.LURKING_GUILDS}:${stateFromStores2[a1]}`;
} else if (FastListRenderSections.GUEST_GUILDS === a0) {
MESSAGES = a1 == null ? c10577_21.GUEST_GUILDS : `${c10577_21.GUEST_GUILDS}:${stateFromStoresArray3[a1]}`;
} else if (FastListRenderSections.UNREAD_PRIVATE_CHANNELS === a0) {
MESSAGES = a1 == null ? c10577_21.UNREAD_PRIVATE_CHANNELS : `${c10577_21.UNREAD_PRIVATE_CHANNELS}:${stateFromStoresArray[a1]}`;
} else if (FastListRenderSections.SEPARATOR === a0) {
MESSAGES = c10577_21.SEPARATOR;
} else {
FastListRenderSections.GUILDS;
const r30 = a0 - FastListRenderSections.GUILDS;
const r31 = guildsNFolders[r30];
const r13 = r31 == null ? r30 >= guildsNFolders.length ? a1 != null ? stateFromStoresArray2[a1]?.id : void 0 : void 0 : a1 == null ? r31.id : r31.children[a1]?.id;
MESSAGES = r13 != null ? `${c10577_21.GUILDS}:${r13}` : void 0;
}
return MESSAGES;
}
},
getAnchorIndexFromId: (a0) => (function getAnchorIndexFromId({ id, lurkingGuildsIds, guestGuildIds, privateChannelIds, guildsNFolders: guildsNFolders2, pendingFolderNode: pendingFolderNode2, geoRestrictedGuilds }) {
let r152;
if (c10577_21.MESSAGES === id) {
return {
section: FastListRenderSections.MESSAGES
};
}
if (c10577_21.FAVORITES === id) {
return {
section: FastListRenderSections.FAVORITES
};
}
if (c10577_21.PENDING_JOIN_REQUESTS === id) {
return {
section: FastListRenderSections.PENDING_JOIN_REQUESTS
};
}
if (c10577_21.LURKING_GUILDS === id) {
return {
section: FastListRenderSections.LURKING_GUILDS
};
}
if (c10577_21.GUEST_GUILDS === id) {
return {
section: FastListRenderSections.GUEST_GUILDS
};
}
if (c10577_21.UNREAD_PRIVATE_CHANNELS === id) {
return {
section: FastListRenderSections.UNREAD_PRIVATE_CHANNELS
};
}
if (c10577_21.SEPARATOR === id) {
return {
section: FastListRenderSections.SEPARATOR
};
}
if (id.startsWith(c10577_21.LURKING_GUILDS)) {
let item13 = 0;
for (const item7 of lurkingGuildsIds) {
if (!isAnchorIdEqual(c10577_21.LURKING_GUILDS, id, item7)) {
item13 = item13 + 1;
continue;
}
return {
section: FastListRenderSections.LURKING_GUILDS,
item: item13
};
}
} else {
if (id.startsWith(c10577_21.PENDING_JOIN_REQUESTS) && pendingFolderNode2 != null) {
let item8 = 0;
for (const item of pendingFolderNode2.children) {
if (!isAnchorIdEqual(c10577_21.PENDING_JOIN_REQUESTS, id, item.id)) {
item8 = item8 + 1;
continue;
}
return {
section: 0 + FastListRenderSections.PENDING_JOIN_REQUESTS,
item: item8
};
}
}
if (id.startsWith(c10577_21.GUEST_GUILDS)) {
let item12 = 0;
for (const item6 of guestGuildIds) {
if (!isAnchorIdEqual(c10577_21.GUEST_GUILDS, id, item6)) {
item12 = item12 + 1;
continue;
}
return {
section: FastListRenderSections.GUEST_GUILDS,
item: item12
};
}
} else {
if (id.startsWith(c10577_21.UNREAD_PRIVATE_CHANNELS)) {
let item9 = 0;
for (const item2 of privateChannelIds) {
if (!isAnchorIdEqual(c10577_21.UNREAD_PRIVATE_CHANNELS, id, item2)) {
item9 = item9 + 1;
continue;
}
return {
section: FastListRenderSections.UNREAD_PRIVATE_CHANNELS,
item: item9
};
}
}
if (id.startsWith(c10577_21.GUILDS)) {
let r118 = 0;
let item10 = 0;
for (const item3 of guildsNFolders2) {
if (!isAnchorIdEqual(c10577_21.GUILDS, id, item3.id)) {
done139: {
for (const item4 of item3.children) {
if (!isAnchorIdEqual(c10577_21.GUILDS, id, item4.id)) {
item10 = item10 + 1;
continue;
}
r152 = {
section: r118 + FastListRenderSections.GUILDS,
item: item10
};
break done139;
}
r118 = r118 + 1;
item10 = 0;
continue;
}
return r152;
}
return {
section: r118 + FastListRenderSections.GUILDS
};
}
let item11 = 0;
for (const item5 of geoRestrictedGuilds) {
if (!isAnchorIdEqual(c10577_21.GUILDS, id, item5.id)) {
item11 = item11 + 1;
continue;
}
return {
section: r118 + FastListRenderSections.GUILDS,
item: item11
};
}
}
}
}
})({
id: a0,
lurkingGuildsIds: stateFromStores2,
guestGuildIds: stateFromStoresArray3,
privateChannelIds: stateFromStoresArray,
guildsNFolders,
pendingFolderNode,
geoRestrictedGuilds: stateFromStoresArray2
})
};
}, [r60, pendingFolderNode, stateFromStores2, stateFromStoresArray3, stateFromStoresArray, stateFromStoresArray2, stateFromStores3, stateFromStores, guildsNFolders, memo2, version, expanded, token, guildWrapperSize])
};
};
@@ -0,0 +1,47 @@
// Metro module 14995 (f14996).
import { useState, useRef, useEffect } from "react";
import useRefValue from "../../../../hooks/useRefValue";
import FastImage from "../../../../components_native/common/FastImage";
export default function usePreloadedGuildAsset(a0, a1, a2) {
const guildId = a0;
const preloading = a1;
let r2 = a2;
const asset = a2;
const [, setState] = useState({});
const ref = useRef({
guildId: a0,
asset: a2,
icon: a1,
preloading: a1
});
useEffect(() => () => {
ref.current.guildId = void 0;
}, []);
const refValue = useRefValue(ref);
if (a0 === refValue.guildId) {
r2 = refValue.asset;
}
useEffect(() => {
L7: {
if (guildId === ref.current.guildId && preloading != null) {
if (!(preloading !== ref.current.icon && preloading !== ref.current.preloading)) {
break L7;
}
ref.current.preloading = preloading;
FastImage.preload(preloading).then(() => {
if (ref.current.guildId === guildId && ref.current.preloading === preloading) {
ref.current.icon = preloading;
ref.current.asset = asset;
setState({});
}
});
} else {
ref.current.guildId = guildId;
ref.current.icon = preloading;
ref.current.preloading = preloading;
ref.current.asset = asset;
}
}
});
return r2;
};
@@ -0,0 +1,4 @@
// Metro module 15015 (f15016).
export default function areGuildsBarFastListStatesEqual(a0, a1) {
return a0.version === a1.version;
};
@@ -0,0 +1,25 @@
// Metro module 14956 (f14957).
import { PixelRatio } from "react-native";
import { GUILD_ITEM_SIZE } from "../GuildsBarConstants";
import { BADGE_SIZE, BADGE_PADDING } from "../../../../design/void/native";
import { CutoutShape } from "../../../../design/components/Icon/native/ClipView";
export default function computeGuildsBarCutout({ position, containerSize = GUILD_ITEM_SIZE, width = BADGE_SIZE, height = BADGE_SIZE, padding = BADGE_PADDING }) {
const width2 = PixelRatio.roundToNearestPixel(width + 2 * padding);
const height2 = PixelRatio.roundToNearestPixel(height + 2 * padding);
const r43 = {
shape: CutoutShape.RoundedRect,
x: 0,
y: 0,
width: width2,
height: height2,
cornerRadius: PixelRatio.roundToNearestPixel(Math.min(width2, height2) / 2)
};
if (position === "top-right") {
r43.x = containerSize - width2 + padding;
r43.y = -padding;
} else {
r43.x = containerSize - width2 + padding;
r43.y = containerSize - height2 + padding;
}
return r43;
};
@@ -0,0 +1,31 @@
// Metro module 14997 (f14998).
import SortedGuildStore from "../../../../stores/SortedGuildStore";
import { GuildsNodeType } from "../../GuildsTree";
export default function getGuildBarNeighbors(a0) {
const guildsTree = SortedGuildStore.getGuildsTree();
const node = guildsTree.getNode(a0);
if (node != null && node.type === GuildsNodeType.GUILD) {
const r21 = node.parentId != null ? guildsTree.getNode(node.parentId) : guildsTree.root;
if (r21 == null) {
return null;
}
const r26 = r21.children.indexOf(node);
if (r26 < 0) {
return null;
}
const node2 = r21.children[r26 - 1];
const node3 = r21.children[r26 + 1];
return {
containingFolder: r21.type === GuildsNodeType.FOLDER ? r21 : null,
above: node2 == null ? null : {
node: node2,
isFolder: node2.type === GuildsNodeType.FOLDER
},
below: node3 == null ? null : {
node: node3,
isFolder: node3.type === GuildsNodeType.FOLDER
}
};
}
return null;
};
@@ -0,0 +1,194 @@
// Metro module 14996 (f14997).
import GuildStore from "../../../../stores/GuildStore";
import SortedGuildStore from "../../../../stores/SortedGuildStore";
import { intl, t } from "../../../../intl/index.native";
import { saveGuildFolders } from "../../../../actions/UserSettingsActionCreators";
import { AccessibilityAnnouncer } from "../../../../design/shared";
import getGuildBarNeighbors from "./getGuildBarNeighbors";
import GuildActionCreators from "../../../../actions/GuildActionCreators";
export default function getGuildsBarGuildAccessibilityActions(a0) {
let name = GuildStore.getGuild(a0)?.name;
if (name == null) {
name = "";
}
const r19 = [];
const guildBarNeighbors = getGuildBarNeighbors(a0);
if (guildBarNeighbors == null) {
return r19;
}
const { containingFolder, above, below } = guildBarNeighbors;
let c21510_1 = intl.formatToPlainString(t["2XShGC"], {
name
});
let c21510_2 = intl.formatToPlainString(t.D4maKL, {
name
});
if (containingFolder == null) {
r19.push({
name: "create-new-folder",
label: intl.string(t.ehmVyX),
action: () => {
GuildActionCreators.createGuildFolderLocal([a0], "");
saveGuildFolders(SortedGuildStore.getCompatibleGuildFolders());
if (c21510_1 != null) {
AccessibilityAnnouncer.announce(c21510_1);
}
}
});
}
if (above != null) {
if (above.isFolder) {
const node = above.node;
const folderName = node.name != null && node.name !== "" ? node.name : intl.string(t.ebAnWE);
r19.push({
name: `move-up-into-folder-${node.id}`,
label: intl.formatToPlainString(t["08U1Sa"], {
folderName
}),
action: () => {
const guildBarNeighbors = getGuildBarNeighbors(a0);
if (guildBarNeighbors != null) {
const r19 = guildBarNeighbors.above != null ? guildBarNeighbors.above.isFolder ? guildBarNeighbors.above.node : null : null;
if (r19 != null) {
GuildActionCreators.moveById(a0, r19.id, true, true);
saveGuildFolders(SortedGuildStore.getCompatibleGuildFolders());
if (c21510_1 != null) {
AccessibilityAnnouncer.announce(c21510_1);
}
}
}
}
});
r19.push({
name: `move-above-folder-${node.id}`,
label: intl.formatToPlainString(t.gBM0Vf, {
folderName
}),
action: () => {
const guildBarNeighbors = getGuildBarNeighbors(a0);
if (guildBarNeighbors != null) {
const r18 = guildBarNeighbors.above != null ? guildBarNeighbors.above.isFolder ? guildBarNeighbors.above.node : null : null;
if (r18 != null) {
GuildActionCreators.moveById(a0, r18.id, false, false);
saveGuildFolders(SortedGuildStore.getCompatibleGuildFolders());
}
}
}
});
} else {
r19.push({
name: "move-up",
label: intl.string(t["yiH+Tx"]),
action: () => {
const guildBarNeighbors = getGuildBarNeighbors(a0);
if (guildBarNeighbors != null) {
const r18 = guildBarNeighbors.above == null ? null : guildBarNeighbors.above.isFolder ? null : guildBarNeighbors.above.node;
if (r18 != null) {
GuildActionCreators.moveById(a0, r18.id, false, false);
saveGuildFolders(SortedGuildStore.getCompatibleGuildFolders());
}
}
}
});
}
}
if (below != null) {
if (below.isFolder) {
const node2 = below.node;
const folderName2 = node2.name != null && node2.name !== "" ? node2.name : intl.string(t.ebAnWE);
r19.push({
name: `move-down-into-folder-${node2.id}`,
label: intl.formatToPlainString(t["6lLC/B"], {
folderName: folderName2
}),
action: () => {
const guildBarNeighbors = getGuildBarNeighbors(a0);
if (guildBarNeighbors != null) {
const r19 = guildBarNeighbors.below != null ? guildBarNeighbors.below.isFolder ? guildBarNeighbors.below.node : null : null;
if (r19 != null) {
GuildActionCreators.moveById(a0, r19.id, true, true);
saveGuildFolders(SortedGuildStore.getCompatibleGuildFolders());
if (c21510_1 != null) {
AccessibilityAnnouncer.announce(c21510_1);
}
}
}
}
});
r19.push({
name: `move-below-folder-${node2.id}`,
label: intl.formatToPlainString(t.YhxCkM, {
folderName: folderName2
}),
action: () => {
const guildBarNeighbors = getGuildBarNeighbors(a0);
if (guildBarNeighbors != null) {
const r18 = guildBarNeighbors.below != null ? guildBarNeighbors.below.isFolder ? guildBarNeighbors.below.node : null : null;
if (r18 != null) {
GuildActionCreators.moveById(a0, r18.id, true, false);
saveGuildFolders(SortedGuildStore.getCompatibleGuildFolders());
}
}
}
});
} else {
r19.push({
name: "move-down",
label: intl.string(t["+V6oLI"]),
action: () => {
const guildBarNeighbors = getGuildBarNeighbors(a0);
if (guildBarNeighbors != null) {
const r18 = guildBarNeighbors.below == null ? null : guildBarNeighbors.below.isFolder ? null : guildBarNeighbors.below.node;
if (r18 != null) {
GuildActionCreators.moveById(a0, r18.id, true, false);
saveGuildFolders(SortedGuildStore.getCompatibleGuildFolders());
}
}
}
});
}
}
if (containingFolder != null) {
const id = containingFolder.id;
const folderName3 = containingFolder.name != null && containingFolder.name !== "" ? containingFolder.name : intl.string(t.ebAnWE);
r19.push({
name: `move-out-above-${id}`,
label: intl.formatToPlainString(t.vnfRJG, {
folderName: folderName3
}),
action: () => {
const guildBarNeighbors = getGuildBarNeighbors(a0);
if (guildBarNeighbors != null) {
const containingFolder = guildBarNeighbors.containingFolder;
if (containingFolder != null) {
GuildActionCreators.moveById(a0, containingFolder.id, false, false);
saveGuildFolders(SortedGuildStore.getCompatibleGuildFolders());
if (c21510_2 != null) {
AccessibilityAnnouncer.announce(c21510_2);
}
}
}
}
});
r19.push({
name: `move-out-below-${id}`,
label: intl.formatToPlainString(t.ejhw4S, {
folderName: folderName3
}),
action: () => {
const guildBarNeighbors = getGuildBarNeighbors(a0);
if (guildBarNeighbors != null) {
const containingFolder = guildBarNeighbors.containingFolder;
if (containingFolder != null) {
GuildActionCreators.moveById(a0, containingFolder.id, true, false);
saveGuildFolders(SortedGuildStore.getCompatibleGuildFolders());
if (c21510_2 != null) {
AccessibilityAnnouncer.announce(c21510_2);
}
}
}
}
});
}
return r19;
};
@@ -0,0 +1,88 @@
// Metro module 14943 (f14944).
import LurkingStore from "../../../lurker_mode/LurkingStore";
import GuildStore from "../../../../stores/GuildStore";
import UserGuildSettingsStore from "../../../../stores/UserGuildSettingsStore";
import { AnalyticsSections } from "../../../../Constants";
import { DoorExitIcon } from "../../../../design/components/Icon/native/redesign/generated/DoorExitIcon";
import { intl, t } from "../../../../intl/index.native";
import { trackLongPressLeaveClicked } from "../../../lurker_mode/LurkerPreviewAnalytics";
import { stopLurkingForGuild } from "../../../lurker_mode/LurkerActionCreators";
import * as _NotificationUtils from "../../../notifications/NotificationUtils";
import { EnvelopeIcon } from "../../../../design/components/Icon/native/redesign/generated/EnvelopeIcon";
import { BellIcon } from "../../../../design/components/Icon/native/redesign/generated/BellIcon";
import NotificationSettingsModalActionCreators from "../../../../actions/NotificationSettingsModalActionCreators";
import { SettingsIcon } from "../../../../design/components/Icon/native/redesign/generated/SettingsIcon";
import openGuildActionSheet from "../../../guild_action_sheet/native/openGuildActionSheet";
import Module11476 from "../../../../_bundle/Module11476";
import ActionSheetActionCreators from "../../../action_sheet/native/ActionSheetActionCreators";
import Module11477 from "../../../../_bundle/Module11477";
import { NotificationLabels } from "../../../../utils/NotificationSettingsUtils";
export default function getGuildsBarGuildMenuItems(a0) {
const guildId = a0;
if (LurkingStore.isLurking(a0)) {
return [{
IconComponent: DoorExitIcon,
label: intl.string(t["2vl7qn"]),
variant: "destructive",
action: () => {
trackLongPressLeaveClicked(guildId);
stopLurkingForGuild(guildId);
}
}];
}
const shouldShowUseNewNotificationSystem = _NotificationUtils.shouldShowUseNewNotificationSystem("GuildPopoutMenu");
const isMuted = UserGuildSettingsStore.isMuted(a0);
const r34 = [{
IconComponent: EnvelopeIcon,
label: intl.string(t.e6RscS),
action: async () => {
let c30809_0;
c30809_0 = void 0;
(0, (await import("../../../guild/markGuildsAsRead")).default)([guildId], AnalyticsSections.GUILD_LIST);
}
}, {
IconComponent: BellIcon,
label: intl.string(t.HcoRu0),
action: () => {
NotificationSettingsModalActionCreators.open(guildId);
}
}, {
IconComponent: SettingsIcon,
label: intl.string(t.PdRCRg),
action: () => {
const guild = GuildStore.getGuild(guildId);
if (guild != null) {
openGuildActionSheet(guild);
}
}
}];
if (shouldShowUseNewNotificationSystem) {
const r63 = {
iconSource: null,
label: null,
action: null
};
if (isMuted) {
r63.iconSource = Module11477;
r63.label = intl.string(t.De0BTC);
r63.action = () => {
if (guildId != null) {
NotificationSettingsModalActionCreators.updateGuildNotificationSettings(guildId, {
muted: false
}, NotificationLabels.Unmuted);
}
};
r34.splice(1, 0, r63);
} else {
r63.iconSource = Module11476;
r63.label = intl.string(t.vRzp7P);
r63.action = () => {
ActionSheetActionCreators.openLazy(import("../../../main_tabs_v2/native/sidebar/details/screens/MuteSettingsActionSheet"), `muteSettings${guildId}`, {
guildId
});
};
r34.splice(1, 0, r63);
}
}
return r34;
};
@@ -0,0 +1,4 @@
// Metro module 14987 (f14988).
export default function isGuildsBarGuildDataEqual(a0, a1) {
return a0.icon === a1.icon && a0.guildName === a1.guildName;
};
@@ -0,0 +1,4 @@
// Metro module 14962 (f14963).
export default function isGuildsBarGuildLabelEqual(a0, a1) {
return a0.count === a1.count && (a0.names.length === a1.names.length && a0.names.join("|") === a1.names.join("|"));
};
@@ -0,0 +1,69 @@
// Metro module 15019 (f15020).
import { setGetVisibleChannelIds, setGetVisibleGuildIds } from "../../../guild_sidebar/SidebarVisibilityMethodStore";
import GuildStore from "../../../../stores/GuildStore";
import SortedGuildStore, { GuildsNodeType } from "../../../../stores/SortedGuildStore";
export function registerGuildVisibilityMethod({ current }) {
if (current != null) {
setGetVisibleGuildIds(function() {
if (current == null) {
return [];
}
const items = current.getItems();
const scrollPosition = current.getScrollPosition();
const containerSize = current.containerSize;
const guilds = GuildStore.getGuilds();
const guildsTree = SortedGuildStore.getGuildsTree();
const set = new Set();
let c27886_4 = set;
items.forEach((item) => {
const node = guildsTree.getNode(item.recyclerKey);
if (node !== void 0) {
const layoutStart = item.layoutStart;
if (layoutStart + item.layoutSize >= scrollPosition && layoutStart <= scrollPosition + containerSize) {
(node.type === GuildsNodeType.FOLDER ? node.children : [node]).forEach((item) => {
if (item.type === GuildsNodeType.GUILD && item.id in guilds) {
c27886_4.add(item.id);
}
});
}
}
});
return Array.from(set);
});
}
}
export function registerFastListChannelVisibilityMethod({ current: current2 }, c21529_0) {
if (current2 != null) {
setGetVisibleChannelIds(function() {
if (current2 == null) {
return [];
}
const items = current2.getItems();
const scrollPosition2 = current2.getScrollPosition();
const containerSize2 = current2.containerSize;
const r9 = [];
let c27887_2 = r9;
items.forEach((item) => {
let r2 = void 0;
try {
try {
r2 = c21529_0.getChannelFromSectionRow(item.section, item.item)?.channel;
} catch ($e) {}
} catch (r28) {
if (r2 == null) {
return void 0;
}
throw r28;
}
if (r2 == null) {
return void 0;
}
const layoutStart = item.layoutStart;
if (layoutStart + item.layoutSize >= scrollPosition2 && layoutStart <= scrollPosition2 + containerSize2) {
c27887_2.push(r2.id);
}
});
return r9;
});
}
}
@@ -0,0 +1,39 @@
// Metro module 14967 (f14968).
import SelectedChannelStore from "../../../../stores/SelectedChannelStore";
import SelectedGuildStore from "../../../../stores/SelectedGuildStore";
import { ME } from "../../../../Constants";
import { getRootNavigationRef } from "../../../main_tabs_v2/RootNavigationRef.native";
import { coerceGuildsRoute } from "../../../main_tabs_v2/helpers/NavigationRouteUtils.native";
import { transitionToChannel } from "../../../routing/transitionToChannel";
import { transitionToGuild } from "../../../routing/transitionToGuild.native";
export default function transitionGuildsBarToGuildOrOpenSelectedChannel(a0) {
const rootNavigationRef = getRootNavigationRef();
const r14 = rootNavigationRef == null ? void 0 : rootNavigationRef.isReady();
let r17 = void 0;
if (r14 === true) {
const r21 = coerceGuildsRoute(rootNavigationRef.getCurrentRoute());
const r22 = r21 == null ? void 0 : r21.params?.drawerOpen;
r17 = void 0;
if (r22 !== true) {
const r26 = a0 !== ME ? a0 : null;
let r29 = SelectedGuildStore.getGuildId();
if (r29 == null) {
r29 = null;
}
let r30 = void 0;
if (r29 === r26) {
let r34 = SelectedChannelStore.getChannelId(a0, false);
if (r34 == null) {
r34 = void 0;
}
r30 = r34;
}
r17 = r30;
}
}
if (r17 != null) {
transitionToChannel(r17);
} else {
transitionToGuild(a0);
}
};