131 lines
5.7 KiB
TypeScript
131 lines
5.7 KiB
TypeScript
// Metro module 14963 (f14964).
|
|
import { useMemo } from "react";
|
|
import { View } from "react-native";
|
|
import GuildReadStateStore from "../../../stores/GuildReadStateStore";
|
|
import GuildStore from "../../../stores/GuildStore";
|
|
import SortedGuildStore from "../../../stores/SortedGuildStore";
|
|
import UserGuildSettingsStore from "../../../stores/UserGuildSettingsStore";
|
|
import VoiceStateStore from "../../../stores/VoiceStateStore";
|
|
import { NOOP } from "../../../Constants";
|
|
import { createStyles } from "../../../design/components/Styles/native/createStyles";
|
|
import { useStateFromStoresArray, useStateFromStores } from "../../../_bundle/Module589";
|
|
import { BellSlashIcon } from "../../../design/components/Icon/native/redesign/generated/BellSlashIcon";
|
|
import { Text } from "../../../design/components/Text/native/Text";
|
|
import { intl, t } from "../../../intl/index.native";
|
|
import { HomeDrawerSharedItem } from "./HomeDrawerShared";
|
|
import { MobileHomeDrawerExperiment } from "./HomeDrawerExperiment";
|
|
import useChatLayout from "../../chat/native/useChatLayout";
|
|
let useStyles;
|
|
const Wrapper = function Wrapper(props) {
|
|
let r83, r84;
|
|
let stateFromStoresArray, stateFromStoresArray2, stateFromStoresArray3, children, color;
|
|
const { folder, expanded } = props;
|
|
stateFromStoresArray = void 0;
|
|
stateFromStoresArray2 = void 0;
|
|
stateFromStoresArray3 = void 0;
|
|
children = void 0;
|
|
color = void 0;
|
|
const styles = useStyles();
|
|
const memo = useMemo(() => ({
|
|
isMuted: false
|
|
}), []);
|
|
stateFromStoresArray = useStateFromStoresArray([GuildReadStateStore, UserGuildSettingsStore], () => folder.guildIds.filter((guildId) => {
|
|
const isMuted = UserGuildSettingsStore.isMuted(guildId);
|
|
return isMuted ? !isMuted : GuildReadStateStore.getMentionCount(guildId) > 0;
|
|
}));
|
|
const stateFromStores3 = useStateFromStores([GuildStore], () => {
|
|
const r6 = stateFromStoresArray[0];
|
|
return r6 != null ? GuildStore.getGuild(r6)?.name : void 0;
|
|
});
|
|
stateFromStoresArray2 = useStateFromStoresArray([GuildReadStateStore, UserGuildSettingsStore], () => folder.guildIds.filter((guildId) => {
|
|
const isMuted = UserGuildSettingsStore.isMuted(guildId);
|
|
return isMuted ? !isMuted : GuildReadStateStore.hasUnread(guildId);
|
|
}));
|
|
const stateFromStores2 = useStateFromStores([GuildStore], () => {
|
|
const r6 = stateFromStoresArray2[0];
|
|
return r6 != null ? GuildStore.getGuild(r6)?.name : void 0;
|
|
});
|
|
stateFromStoresArray3 = useStateFromStoresArray([VoiceStateStore, GuildStore, UserGuildSettingsStore], () => folder.guildIds.filter((guildId) => {
|
|
if (UserGuildSettingsStore.isMuted(guildId)) {
|
|
return false;
|
|
}
|
|
const afkChannelId = GuildStore.getGuild(guildId)?.afkChannelId;
|
|
const set = new Set();
|
|
for (const item of Object.values(VoiceStateStore.getVoiceStates(guildId))) {
|
|
if (item.channelId != null && item.channelId !== afkChannelId) {
|
|
set.add(item.channelId);
|
|
}
|
|
}
|
|
return [...set].some((item) => {
|
|
const isCategoryMuted = UserGuildSettingsStore.isCategoryMuted(guildId, item);
|
|
return isCategoryMuted ? !isCategoryMuted : !UserGuildSettingsStore.isChannelMuted(guildId, item);
|
|
});
|
|
}));
|
|
const stateFromStores = useStateFromStores([GuildStore], () => {
|
|
const r6 = stateFromStoresArray3[0];
|
|
return r6 != null ? GuildStore.getGuild(r6)?.name : void 0;
|
|
});
|
|
const memo2 = useMemo(() => {
|
|
const r23 = [memo.isMuted ? <BellSlashIcon size="xs" /> : <NOOP size="xs" />, ,];
|
|
let folderName = folder.folderName;
|
|
if (folderName == null) {
|
|
folderName = intl.string(t["JQ/1n3"]);
|
|
}
|
|
r23[1] = <Text variant="text-md/medium" style={styles.titleText} lineClamp={1} color="text-default">{folderName}</Text>;
|
|
return <View style={styles.title}>{r23}</View>;
|
|
}, [folder.folderName, memo, styles.title, styles.titleText]);
|
|
children = intl.format(t.knOfkb, {
|
|
num: folder.guildIds.length
|
|
});
|
|
color = "text-muted";
|
|
if (stateFromStoresArray.length > 0 && stateFromStores3 != null) {
|
|
children = intl.format(t.UoFb3H, {
|
|
guildName: stateFromStores3,
|
|
count: stateFromStoresArray.length - 1
|
|
});
|
|
r83 = "text-muted";
|
|
r84 = children;
|
|
} else if (stateFromStoresArray3.length > 0 && stateFromStores != null) {
|
|
children = intl.format(t["0CRdJQ"], {
|
|
guildName: stateFromStores,
|
|
count: stateFromStoresArray3.length - 1
|
|
});
|
|
color = "text-voice-connected";
|
|
r83 = "text-voice-connected";
|
|
r84 = children;
|
|
} else {
|
|
const r82 = stateFromStoresArray2.length > 0 && stateFromStores2 != null;
|
|
r83 = "text-muted";
|
|
r84 = children;
|
|
if (r82) {
|
|
children = intl.format(t["3Pm7uY"], {
|
|
guildName: stateFromStores2,
|
|
count: stateFromStoresArray2.length - 1
|
|
});
|
|
r83 = "text-muted";
|
|
r84 = children;
|
|
}
|
|
}
|
|
const memo3 = useMemo(() => <Text variant="text-xs/medium" color={color} lineClamp={1}>{children}</Text>, [r84, r83]);
|
|
return <HomeDrawerSharedItem title={memo2} subtitle={expanded ? void 0 : memo3} />;
|
|
};
|
|
useStyles = createStyles({
|
|
title: {
|
|
flexDirection: "row",
|
|
alignItems: "center",
|
|
gap: 4
|
|
},
|
|
titleText: {
|
|
flexShrink: 1
|
|
}
|
|
});
|
|
export default function HomeDrawerFolderExpandedChildren(props) {
|
|
const { folderId, expanded } = props;
|
|
const stateFromStores = useStateFromStores([SortedGuildStore], () => folderId != null ? SortedGuildStore.getGuildFolderById(folderId) : null);
|
|
const enableHome = MobileHomeDrawerExperiment.useConfig({
|
|
location: "folder-expanded-children"
|
|
}).enableHome;
|
|
const isChatBesideChannelList = useChatLayout().isChatBesideChannelList;
|
|
return stateFromStores == null ? null : enableHome ? isChatBesideChannelList ? null : <Wrapper folder={stateFromStores} expanded={expanded} /> : null;
|
|
};
|