// Metro module 14973 (f14974).
import { useMemo, useEffect } from "react";
import { View } from "react-native";
import JoinedThreadsStore from "../../threads/JoinedThreadsStore";
import { isThread } from "../../../records/ChannelRecord";
import ChannelStore from "../../../stores/ChannelStore";
import GuildChannelStore from "../../../stores/GuildChannelStore";
import GuildReadStateStore from "../../../stores/GuildReadStateStore";
import GuildStore from "../../../stores/GuildStore";
import ReadStateStore from "../../../stores/ReadStateStore";
import RelationshipStore from "../../../stores/RelationshipStore";
import UserGuildSettingsStore from "../../../stores/UserGuildSettingsStore";
import UserStore from "../../../stores/UserStore";
import { EMPTY_STRING_SNOWFLAKE_ID, NOOP } from "../../../Constants";
import { UnreadSetting } from "../../read_states/ReadStateConstants";
import { jsx } from "react/jsx-runtime";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import { useStateFromStores, useStateFromStoresObject } from "../../../_bundle/Module589";
import { MobileHomeDrawerExperiment } from "./HomeDrawerExperiment";
import useChatLayout from "../../chat/native/useChatLayout";
import { BellZIcon } from "../../../design/components/Icon/native/redesign/generated/BellZIcon";
import { BellSlashIcon } from "../../../design/components/Icon/native/redesign/generated/BellSlashIcon";
import { Text } from "../../../design/components/Text/native/Text";
import { useIsHomeDrawerChannelMuted } from "./isHomeDrawerChannelMuted";
import { useIsHomeDrawerChannelInChannelList } from "./isHomeDrawerChannelInChannelList";
import { computeChannelName } from "../../channel/useChannelName";
import SnowflakeUtils from "../../../utils/SnowflakeUtils";
import { useVoiceUsers, GuildVoiceState } from "./HomeDrawerGuildVoiceState";
import { useHomeDrawerGuildTyping } from "./useHomeDrawerGuildTyping";
import useTypingText from "../../chat/useTypingText";
import StreamingSubtitle from "./subtitles/StreamingSubtitle";
import VoiceSubtitle from "./subtitles/VoiceSubtitle";
import MentionSubtitle from "./subtitles/MentionSubtitle";
import TypingSubtitle from "./subtitles/TypingSubtitle";
import UnreadSubtitle from "./subtitles/UnreadSubtitle";
import { HomeDrawerSharedItem } from "./HomeDrawerShared";
let c10595_20, useStyles;
const GuildRowWrapper = function GuildRowWrapper(props) {
let stateFromStores2, memo, isHomeDrawerChannelMuted, isHomeDrawerChannelInChannelList, unreadChannel, unreadChannelName, unreadChannelCount, mentionChannel, mentionChannelName, mentionChannelCount, voiceUsers, streamingUser, typingChannelId, typingChannelName, stateFromStores3, text, c21495_21, memo2;
const { guild, disableSubtitle, onActiveHookChange } = props;
stateFromStores2 = void 0;
memo = void 0;
isHomeDrawerChannelMuted = void 0;
isHomeDrawerChannelInChannelList = void 0;
unreadChannel = void 0;
unreadChannelName = void 0;
unreadChannelCount = void 0;
mentionChannel = void 0;
mentionChannelName = void 0;
mentionChannelCount = void 0;
voiceUsers = void 0;
streamingUser = void 0;
typingChannelId = void 0;
typingChannelName = void 0;
stateFromStores3 = void 0;
text = void 0;
c21495_21 = void 0;
memo2 = void 0;
const styles = useStyles();
const stateFromStores = useStateFromStores([GuildReadStateStore], () => GuildReadStateStore.hasUnread(guild.id));
stateFromStores2 = useStateFromStores([UserGuildSettingsStore], () => UserGuildSettingsStore.getMuteConfig(guild.id));
memo = useMemo(() => stateFromStores2 == null ? {
isMuted: false,
isTemporary: false
} : {
isMuted: stateFromStores2.end_time == null || new Date(stateFromStores2.end_time) > new Date(),
isTemporary: stateFromStores2.end_time != null
}, [stateFromStores2]);
const memo3 = useMemo(() =>
{guild.name}
{jsx(memo.isMuted ? memo.isTemporary ? BellZIcon : BellSlashIcon : NOOP, {
size: "xs",
color: "icon-muted"
})}
, [guild, memo, styles.guildName, styles.guildNameText]);
isHomeDrawerChannelMuted = useIsHomeDrawerChannelMuted();
isHomeDrawerChannelInChannelList = useIsHomeDrawerChannelInChannelList();
const stateFromStoresObject = useStateFromStoresObject([GuildChannelStore, ChannelStore, UserStore, RelationshipStore, ReadStateStore, UserGuildSettingsStore, JoinedThreadsStore], () => {
const r15 = GuildChannelStore.getSelectableChannelIds(guild.id).filter((item) => {
const basicChannel = ChannelStore.getBasicChannel(item);
let r11 = basicChannel != null;
if (r11) {
const isHomeDrawerChannelMuted3 = isHomeDrawerChannelMuted(basicChannel);
let r14 = !isHomeDrawerChannelMuted3;
if (!isHomeDrawerChannelMuted3) {
const r16 = isThread(basicChannel.type) && !JoinedThreadsStore.hasJoined(item);
r14 = r16 ? !r16 : !!isHomeDrawerChannelInChannelList(basicChannel) && (ReadStateStore.hasUnread(item) && UserGuildSettingsStore.resolveUnreadSetting(basicChannel) === UnreadSetting.ALL_MESSAGES);
}
r11 = r14;
}
return r11;
});
const unreadChannel2 = r15.length > 0 ? ChannelStore.getChannel(r15[0]) : void 0;
return {
unreadChannel: unreadChannel2,
unreadChannelName: unreadChannel2 != null ? computeChannelName(unreadChannel2, UserStore, RelationshipStore) : void 0,
unreadChannelCount: r15.length
};
}, [guild.id, isHomeDrawerChannelMuted, isHomeDrawerChannelInChannelList]);
unreadChannel = stateFromStoresObject.unreadChannel;
unreadChannelName = stateFromStoresObject.unreadChannelName;
unreadChannelCount = stateFromStoresObject.unreadChannelCount;
const stateFromStoresObject2 = useStateFromStoresObject([GuildReadStateStore, ChannelStore, UserStore, RelationshipStore, JoinedThreadsStore], () => {
const r16 = GuildReadStateStore.getMutableGuildStates()[guild.id];
let c27879_0 = r16;
if (r16 == null) {
return {
mentionChannel: void 0,
mentionChannelName: void 0,
mentionChannelCount: 0
};
}
const r24 = SnowflakeUtils.keys(r16.mentionCounts).filter((item) => {
if (c27879_0.mentionCounts[item].count <= 0) {
return false;
}
const basicChannel = ChannelStore.getBasicChannel(item);
let r14 = basicChannel != null;
if (r14) {
const r17 = isThread(basicChannel.type) && !JoinedThreadsStore.hasJoined(item);
r14 = r17 ? !r17 : isHomeDrawerChannelInChannelList(basicChannel);
}
return r14;
});
const mentionChannel2 = r24.length > 0 ? ChannelStore.getChannel(r24[0]) : void 0;
return {
mentionChannel: mentionChannel2,
mentionChannelName: mentionChannel2 != null ? computeChannelName(mentionChannel2, UserStore, RelationshipStore) : void 0,
mentionChannelCount: r24.length
};
}, [guild.id, isHomeDrawerChannelInChannelList]);
mentionChannel = stateFromStoresObject2.mentionChannel;
mentionChannelName = stateFromStoresObject2.mentionChannelName;
mentionChannelCount = stateFromStoresObject2.mentionChannelCount;
const voiceUsers2 = useVoiceUsers(guild);
voiceUsers = voiceUsers2.voiceUsers;
streamingUser = voiceUsers2.streamingUser;
const streamingChannelId = voiceUsers2.streamingChannelId;
const homeDrawerGuildTyping = useHomeDrawerGuildTyping(guild.id);
typingChannelId = homeDrawerGuildTyping.typingChannelId;
typingChannelName = homeDrawerGuildTyping.typingChannelName;
const typingUserIds = homeDrawerGuildTyping.typingUserIds;
stateFromStores3 = useStateFromStores([ChannelStore], () => ChannelStore.getChannel(typingChannelId), [typingChannelId]);
text = useTypingText({
channelId: typingChannelId == null ? EMPTY_STRING_SNOWFLAKE_ID : typingChannelId,
guildId: guild.id,
typingUserIds
});
const r3 = !(memo.isMuted || disableSubtitle || voiceUsers.length === 0);
c21495_21 = r3;
memo2 = useMemo(() => {
let r15;
L23: {
if (c21495_21) {
r15 = streamingUser != null ? c10595_20.STREAMING : c10595_20.VOICE;
} else if (disableSubtitle) {
r15 = c10595_20.NONE;
} else {
if (mentionChannelName != null && mentionChannelCount > 0) {
r15 = c10595_20.MENTION;
break L23;
}
if (typingChannelId != null && text != null && !memo.isMuted) {
r15 = c10595_20.TYPING;
break L23;
}
r15 = stateFromStores && (unreadChannelName != null && unreadChannelCount > 0) ? c10595_20.UNREAD : c10595_20.NONE;
}
}
return r15;
}, [r3, streamingUser, disableSubtitle, mentionChannelName, mentionChannelCount, typingChannelId, text, memo.isMuted, stateFromStores, unreadChannelName, unreadChannelCount]);
useEffect(() => {
if (onActiveHookChange != null) {
onActiveHookChange(memo2);
}
}, [memo2, onActiveHookChange]);
return {
if (c10595_20.STREAMING === memo2) {
return ;
}
if (c10595_20.VOICE === memo2) {
return ;
}
if (c10595_20.MENTION === memo2) {
return mentionChannelName != null ? : null;
}
if (c10595_20.TYPING === memo2) {
return ;
}
if (c10595_20.UNREAD === memo2) {
return unreadChannelName != null ? : null;
}
if (c10595_20.NONE === memo2) {
return null;
}
}, [memo2, guild, streamingUser, voiceUsers, mentionChannel, mentionChannelName, mentionChannelCount, stateFromStores3, typingChannelName, text, unreadChannel, unreadChannelName, unreadChannelCount])} right={memo.isMuted ? null : disableSubtitle ? null : voiceUsers.length !== 0 ? : null} />;
};
c10595_20 = {
STREAMING: "streaming",
VOICE: "voice",
MENTION: "mention",
TYPING: "typing",
UNREAD: "unread",
NONE: "none"
};
useStyles = createStyles({
guildName: {
flexDirection: "row",
alignItems: "center",
gap: 4
},
guildNameText: {
flexShrink: 1
}
});
export default function HomeDrawerGuildRow(props) {
const { guildId, disableSubtitle: disableSubtitle2, onActiveHookChange: onActiveHookChange2 } = props;
const stateFromStores4 = useStateFromStores([GuildStore], () => GuildStore.getGuild(guildId));
const enableHome = MobileHomeDrawerExperiment.useConfig({
location: "guild-row"
}).enableHome;
const isChatBesideChannelList = useChatLayout().isChatBesideChannelList;
return stateFromStores4 == null ? null : enableHome ? isChatBesideChannelList ? null : : null;
};
export { c10595_20 as HomeDrawerActiveHook };