Files
discord-decomp/modules/guilds_bar/native/GuildsBarPendingGuild.tsx
T
2026-11-01 12:12:55 +02:00

107 lines
6.0 KiB
TypeScript

// 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;