// Metro module 15288 (f15289). import _slicedToArray from "../../../_bundle/_slicedToArray"; import { useRef, memo, useCallback, useState, useEffect } from "react"; import { RefreshControl, View, StyleSheet } from "react-native"; import AccessibilityStore from "../../a11y/AccessibilityStore"; import ApplicationStore from "../../applications/ApplicationStore"; import ChannelStore from "../../../stores/ChannelStore"; import GuildStore from "../../../stores/GuildStore"; import UserStore from "../../../stores/UserStore"; import NotificationCenterStore from "../NotificationCenterStore"; import { AnalyticEvents, AnalyticsLocations, EMPTY_STRING_SNOWFLAKE_ID, MessageFlags, MessageTypes } from "../../../Constants"; import { NotificationTypes } from "../../push_notifications/PushNotificationConstants"; import { createStyles } from "../../../design/components/Styles/native/createStyles"; import { Text, TextStyleSheet } from "../../../design/components/Text/native/Text"; import Module712 from "../../../_bundle/Module712"; import { getParser, getNotifCenterV2MessagePreviewParser, getParserWithoutLinks } from "../../markup/CustomMarkup.native"; import { ForYouMentionPlaceholder } from "./ForYouMentionPlaceholder"; import { intl, t } from "../../../intl/index.native"; import * as _Module1384 from "../../../_bundle/Module1384"; import parsePollResultSystemMessageEmbed from "../../polls/parsePollResultSystemMessageEmbed"; import { formatPollResultNotificationCenterText } from "../../polls/PollsUtils"; import Module9872 from "../../../_bundle/Module9872"; import Module9656 from "../../../_bundle/Module9656"; import Module7676 from "../../../_bundle/Module7676"; import { useStateFromStores, useStateFromStoresArray } from "../../../_bundle/Module589"; import { renderMessageContentMarkup } from "../../messages/renderMessageMarkup"; import { Icon, IconSizes } from "../../../design/void/native"; import ApplicationIconAndName from "../../user_profile/native/ApplicationIconAndName"; import { useNotificationCenterItemAcked } from "../useNotificationCenterItemAcked"; import { useNavigation } from "../../../design/components/Navigator/native/useNavigation.native"; import parseURL from "../../../utils/native/parseURL"; import handleSupportedURL from "../../links/native/handleSupportedURL"; import { NotificationCenterLocalItems, NotificationCenterActionTypes, NotificationCenterItems } from "../NotificationCenterItemsTypes"; import AnalyticsUtils from "../../../utils/AnalyticsUtils"; import Module8011 from "../../../_bundle/Module8011"; import { LightbulbIcon } from "../../../design/components/Icon/native/redesign/generated/LightbulbIcon"; import { openGuildHighlightNotificationForPush } from "../../notifications/native/GuildHighlightsNotificationsActionCreators"; import ToastActionCreators from "../../toast/native/ToastActionCreators"; import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators"; import Module15292 from "../../../_bundle/Module15292"; import { TrashIcon } from "../../../design/components/Icon/native/redesign/generated/TrashIcon"; import { deleteNotificationCenterItem } from "../NotificationCenterItemsActions"; import { showSimpleActionSheet } from "../../action_sheet/native/showSimpleActionSheet"; import { useItemActionButtonPropsV2, ForYouItemActionButtons } from "./ForYouItemActionButtons"; import getNotificationCenterItemBody from "../getNotificationCenterItemBody"; import SnowflakeUtils from "../../../utils/SnowflakeUtils"; import { PressableHighlight } from "../../../design/void/Pressables/native/Pressables"; import { ForYouItemImage } from "./ForYouItemImage"; import { getRelativeTimestamp } from "../NotificationCenterUtils"; import FriendRequestNote from "../../people/native/FriendRequestNote"; import { useScrollToTop } from "../../../_bundle/Module1481"; import { NotificationCenterAckedBeforeId, ChannelListLayoutSetting } from "../../user_settings/UserSettings"; import { ChannelListLayoutTypes } from "../../main_tabs_v2/ChannelListLayoutTypes"; import { ForYouReadSectionHeader } from "./ForYouReadSectionHeader"; import { ForYouRecentActivitySectionHeader } from "./ForYouRecentActivitySectionHeader"; import { ForYouHoistedItemsHeader } from "./ForYouHoistedItemsHeader"; import ForYouSuggestedFriendsSectionHeader from "./ForYouSuggestedFriendsSectionHeader"; import ForYouSuggestedFriendRow from "./ForYouSuggestedFriendRow"; import { ForYouSuggestedFriendShowAllRow } from "./ForYouShowAllRow"; import { ErrorBoundary } from "../../../_bundle/Module810"; import { ForYouUnreadClearedState } from "./ForYouUnreadClearedState"; import { ForYouLoadMore } from "./ForYouLoadMore"; import { assertNever } from "../../../utils/GlobalUtils"; import { refreshNotifications } from "../NotificationCenterStoreActions"; import { FlashList } from "../../../_bundle/noop_6676"; import { ForYouEmptyState } from "./ForYouEmptyState"; import { HermesBuiltin } from "../../../_hermes/prelude"; let viewabilityConfig, useStyles, useStyles2, useStyles3, useStyles4, c10865_28, useStyles5, c10865_31, Callout, ForYouMessagePreviewV2, ApplicationName, Component, ScrollToTopRef, extractKey; const ForYouFooter = function ForYouFooter(props) { return props.loading ? : null; }; Callout = function Callout(props) { const { item: item3, acked, compactMode: compactMode2 } = props; const styles5 = useStyles5(); return {getParser(useStyles3())(item3.callout)} ; }; ForYouMessagePreviewV2 = function ForYouMessagePreviewV2(props) { let r74, content2; const { item, acked, compactMode: compactMode2, roleStyle } = props; const styles5 = useStyles5(); const notifCenterV2MessagePreviewParser = getNotifCenterV2MessagePreviewParser(useStyles4(), c10865_28, roleStyle); const r40 = intl.string(t.BOi07B); let r44 = item.message?.flags; if (r44 == null) { r44 = 0; } const hasFlag = _Module1384.hasFlag(r44, MessageFlags.IS_VOICE_MESSAGE); const type = item.message?.type; const POLL_RESULT = MessageTypes.POLL_RESULT; let r53 = item.message?.attachments; if (r53 == null) { r53 = []; } const length = r53.length; let r57 = item.message?.stickers; if (r57 == null) { r57 = []; } const length2 = r57.length; let r60 = item.message?.embeds; if (r60 == null) { r60 = []; } const length3 = r60.length; const r64 = item.message?.interaction != null; if (type === POLL_RESULT) { const message = item.message; const r119 = message == null; let r120 = void 0; if (!r119) { const embeds = message.embeds; r120 = embeds == null ? void 0 : embeds[0]; } const r126 = parsePollResultSystemMessageEmbed(r120); const r127 = r126 != null; content2 = r40; r74 = void 0; if (r127) { content2 = formatPollResultNotificationCenterText(r126); r74 = void 0; } } else if (length2 > 0) { content2 = intl.string(t["7K5Lma"]); r74 = c10865_31.STICKER; } else if (r64) { content2 = intl.string(t["2v7kfl"]); r74 = void 0; } else if (hasFlag) { content2 = intl.string(t["6bhHrc"]); r74 = c10865_31.VOICE_MESSAGE; } else { let r70 = item.message?.flags; if (r70 == null) { r70 = 0; } if (_Module1384.hasFlag(r70, MessageFlags.IS_COMPONENTS_V2)) { content2 = intl.string(t.Xxm5i3); r74 = void 0; } else { const r73 = length > 0 || length3 > 0; content2 = r40; r74 = void 0; if (r73) { content2 = intl.string(t.JAKsM8); r74 = c10865_31.ATTACHMENT; } } } const content = item.message?.content; const r134 = content != null && content !== ""; if (r134) { content2 = content; } const { guild_id, message_channel_id, message_id } = item; useStateFromStores([GuildStore], () => GuildStore.getGuild(guild_id)); useStateFromStores([ChannelStore], () => ChannelStore.getChannel(message_channel_id)); useStateFromStoresArray([UserStore], () => { const message = item.message; const r16 = [UserStore.getUser(message == null ? void 0 : message.author.id)]; const message2 = item.message; const r18 = message2 == null; let r19 = void 0; if (!r18) { const mentions = message2.mentions; r19 = mentions == null ? void 0 : mentions.map((mention) => UserStore.getUser(mention)); } if (r19 == null) { r19 = []; } HermesBuiltin.arraySpread(r16, r19, 1); return r16; }); const r167 = [, ,]; const style = [acked ? styles5.messagePreviewTextV2Acked : styles5.messagePreviewTextV2NotAcked, r134 ? void 0 : styles5.messagePreviewSystemTextV2]; const lineClamp = compactMode2 ? 3 : 10; const message2 = item.message; r167[1] = {renderMessageContentMarkup(notifCenterV2MessagePreviewParser, { content: content2, guildId: guild_id, channelId: message_channel_id, messageId: message_id, authorId: message2 == null ? void 0 : message2.author.id }, {})} {r74 != null && } ; return {r167}; }; ApplicationName = function ApplicationName(props) { const { applicationId, textVariant: textVariant2 } = props; const stateFromStores3 = useStateFromStores([ApplicationStore], () => ApplicationStore.getApplication(applicationId)); return stateFromStores3 == null ? : ; }; ScrollToTopRef = function ScrollToTopRef({ scrollRef }) { useScrollToTop(useRef({ scrollToTop: () => { const current = scrollRef.current; return current == null ? void 0 : current.scrollToTop(); } })); return null; }; extractKey = function extractKey(a0) { return a0.id; }; viewabilityConfig = { waitForInteraction: false, viewAreaCoveragePercentThreshold: 100, minimumViewTime: 1000 }; useStyles = createStyles({ strong: { ...TextStyleSheet["text-md/medium"], color: Module712.colors.MOBILE_TEXT_HEADING_PRIMARY } }); useStyles2 = createStyles({ strong: { ...TextStyleSheet["text-md/medium"], color: Module712.colors.TEXT_MUTED } }); useStyles3 = createStyles({ mention: { color: Module712.colors.MENTION_FOREGROUND, backgroundColor: Module712.colors.MENTION_BACKGROUND } }); useStyles4 = createStyles({ mention: { color: Module712.colors.MENTION_FOREGROUND, backgroundColor: "transparent" }, em: { fontStyle: "normal" } }); c10865_28 = { channelMentionText: "redesign/message-preview/medium" }; useStyles5 = createStyles({ container: { flex: 1 }, row: { marginHorizontal: 4, paddingHorizontal: 12, paddingVertical: 8, marginBottom: 4, borderRadius: Module712.radii.lg, flexDirection: "row", justifyContent: "space-between" }, rowCompact: { paddingVertical: 6 }, rowActive: { backgroundColor: Module712.colors.BACKGROUND_MOD_MUTED }, col: { flexDirection: "column", flex: 1 }, unreadIndicatorV2: { top: 28, backgroundColor: Module712.colors.BACKGROUND_BRAND, height: 8, width: 8, borderRadius: Module712.radii.xs, position: "absolute", left: 4 }, unreadIndicatorCompactV2: { top: 18 }, rowText: { flex: 1 }, rowTextV2: { flexDirection: "row", justifyContent: "space-between" }, rowBody: { lineHeight: 20 }, rowBodyV2: { marginRight: 30 }, rowBodyAcked: { color: Module712.colors.TEXT_MUTED }, rowTime: { lineHeight: 20 }, rowTimeV2: { marginLeft: -24 }, itemV2: { alignItems: "flex-start", marginRight: 4, marginLeft: 8 }, calloutContainer: { marginTop: 4, flexDirection: "row", marginRight: 16 }, calloutTextAcked: { color: Module712.colors.TEXT_MUTED }, calloutTextNotAcked: { color: Module712.colors.TEXT_DEFAULT }, messagePreviewContainerV2: { marginTop: 4, flexDirection: "row", marginRight: 16 }, messagePreviewBarV2: { marginRight: 8, borderLeftColor: Module712.colors.BORDER_SUBTLE, borderLeftWidth: 3, borderRadius: 2, height: "auto" }, messagePreviewIconV2Container: { paddingTop: 4 }, messagePreviewIconV2: { marginLeft: 4, tintColor: Module712.colors.TEXT_SUBTLE }, messagePreviewTextV2Acked: { color: Module712.colors.TEXT_MUTED }, messagePreviewTextV2NotAcked: { color: Module712.colors.TEXT_DEFAULT }, messagePreviewSystemTextV2: { fontStyle: "italic", fontWeight: "normal" }, refreshSpinner: { color: Module712.colors.INTERACTIVE_TEXT_DEFAULT }, forYouDivider: { borderTopWidth: StyleSheet.hairlineWidth, borderTopColor: Module712.colors.BORDER_SUBTLE, marginTop: Module712.space.PX_12, marginBottom: Module712.space.PX_8 }, friendRequestNoteContainer: { marginTop: 4, backgroundColor: Module712.colors.BACKGROUND_MOD_SUBTLE } }); c10865_31 = { STICKER: "sticker", VOICE_MESSAGE: "voice_message", ATTACHMENT: "attachment" }; Component = memo(function(a0) { let textVariant; const { item: item2, ackedBeforeId, rowIndex } = a0; let isSoftAcked2 = a0.isSoftAcked; const { onSoftAckItem, forceHoistItem: forceHoistItem2, isForceHoisted: isForceHoisted2, compactMode: compactMode2, roleStyle } = a0; textVariant = void 0; const styles5 = useStyles5(); let r45 = useNotificationCenterItemAcked(item2, ackedBeforeId); const notificationCenterItemAcked = r45; if (!isSoftAcked2) { isSoftAcked2 = notificationCenterItemAcked; } const navigation = useNavigation(); const callback = useCallback(() => { if (item2.deeplink != null) { handleSupportedURL({ payload: parseURL(item2.deeplink).payload, safe: true, navigationReplace: false }); } }, [item2]); const callback3 = useCallback(() => { if (!notificationCenterItemAcked) { onSoftAckItem(item2); } if (item2.type === NotificationCenterLocalItems.FRIEND_REQUESTS_GROUPED && navigation != null) { navigation.navigate("friends", { screen: "requests" }); } callback(); AnalyticsUtils.track(AnalyticEvents.NOTIFICATION_CENTER_ACTION, { action_type: NotificationCenterActionTypes.CLICKED, notification_center_id: item2.id, item_type: item2.type, acked: notificationCenterItemAcked, item_index: rowIndex, deeplink: item2.deeplink }); }, [notificationCenterItemAcked, item2, callback, rowIndex, onSoftAckItem, navigation]); const callback4 = useCallback(() => { const options = []; if (item2.type === NotificationCenterItems.TRENDING_CONTENT) { options.push({ label: intl.string(t["gSMz/x"]), icon: Module8011, IconComponent: LightbulbIcon, onPress: () => { try { let deeplink = item2.deeplink; if (deeplink == null) { deeplink = ""; } const r17 = deeplink.match(/channels\/(\d*)\/(\d*)\/(\d*)\?summaryId=(\d*)/); if (r17 == null) { throw new Error(`Invalid deeplink: ${item2.deeplink}`); } const r23 = _slicedToArray(r17, 5); r23[0]; openGuildHighlightNotificationForPush(r23[1], { id: r23[3], channel_id: r23[2] }, NotificationTypes.TRENDING_CONTENT_PUSH, AnalyticsLocations.NOTIFICATION_CENTER, { summary_id: r23[4] }); } catch ($e) { ToastActionCreators.open({ key: "USER_SURVEY_ERROR", content: intl.string(t.HO9Lf2) }); } } }); } else { options.push({ label: intl.string(t["08rqg5"]), icon: Module8011, IconComponent: LightbulbIcon, onPress: () => { try { ActionSheetActionCreators.openLazy(import("../../notifications/native/NotificationSurveyActionSheet"), "NotificationSurvey", { notificationType: item2.type, location: AnalyticsLocations.NOTIFICATION_CENTER }); } catch ($e) { ToastActionCreators.open({ key: "USER_SURVEY_ERROR", content: intl.string(t.HO9Lf2) }); } } }); } if (item2.local_id == null) { const r65 = { label: intl.string(t.D8z9ju), icon: Module15292, IconComponent: TrashIcon, onPress: null }; let c27987_0 = async () => { let c30862_3 = 0; L10: { try { c30862_3 = 1; await deleteNotificationCenterItem(item2); c30862_3 = 0; } catch ($e) { let r7 = $e; if (c30862_3 !== 0) { while (true) { try { c30862_3 = 0; ToastActionCreators.open({ key: "REMOVE_NOTIFICATION_ERROR", content: intl.string(t.WDxhvB) }); break L10; } catch ($e) { r7 = $e; if (c30862_3 === 0) { break; } } } } throw r7; } } }; r65.onPress = function() { return c27987_0.apply(this, arguments); }; options.unshift(r65); } showSimpleActionSheet({ key: "ForYouItemLongPress", options, hasIcons: true }); }, [item2]); const r61 = _slicedToArray(useState(void 0), 2); let r30 = r61[0]; const itemActionButtonPropsV2 = useItemActionButtonPropsV2(item2, callback, navigation, forceHoistItem2, isForceHoisted2, onSoftAckItem, r61[1], compactMode2); const { actionButtons, actionsNode, accessibilityActions, onAccessibilityAction } = itemActionButtonPropsV2; const parserWithoutLinks2 = getParserWithoutLinks(useStyles2()); const parserWithoutLinks = getParserWithoutLinks(useStyles()); const r2 = item2.type === NotificationCenterItems.FRIEND_REQUEST_ACCEPTED || item2.type === NotificationCenterItems.GAME_FRIEND_REQUEST_ACCEPTED; if (notificationCenterItemAcked) { r45 = !r2; } const r91 = r45 ? null : ; textVariant = isSoftAcked2 ? "text-md/medium" : "text-md/semibold"; if (r30 == null) { r30 = getNotificationCenterItemBody({ item: item2, renderApplication: (a0) => }); } const r29 = SnowflakeUtils.extractTimestamp(item2.id); const style = [styles5.row, !!compactMode2 && styles5.rowCompact]; const r127 = [item2.enableBadge ? isSoftAcked2 ? null : : null, , ,]; const style2 = [styles5.rowBody, styles5.rowBodyV2, !!isSoftAcked2 && styles5.rowBodyAcked]; let r154 = r30; if (typeof r154 === "string") { r154 = isSoftAcked2 ? parserWithoutLinks2(r30) : parserWithoutLinks(r30); } const r178 = [ {r154} {getRelativeTimestamp(r29)} , , , , ,]; let r184 = item2.type === NotificationCenterLocalItems.INCOMING_FRIEND_REQUESTS; if (r184) { let userId = item2.other_user?.id; if (userId == null) { userId = EMPTY_STRING_SNOWFLAKE_ID; } r184 = ; } r178[1] = r184; r178[2] = item2.message?.content != null ? : null; r178[3] = item2.callout != null ? : null; r178[4] = {r91}; r127[2] = {r178} ; return {r127}; }); const r223 = memo(function({ items, onScroll, loadMore, loadingMore, nestedInLaunchPad, shouldScrollToTop, isSoftAcked, onSoftAckItem: onSoftAckItem2, forceHoistItem, isForceHoisted, suggestedFriendAdded, onAddSuggestionAnimationFinish, panelVariant: panelVariant2 = false }) { let stateFromStores2, compactMode, callback2, ref, setState; const panelVariant = panelVariant2; stateFromStores2 = void 0; compactMode = void 0; callback2 = void 0; ref = void 0; setState = void 0; const styles = useStyles5(); const setting = NotificationCenterAckedBeforeId.useSetting(); const stateFromStores = useStateFromStores([AccessibilityStore], () => AccessibilityStore.roleStyle); stateFromStores2 = useStateFromStores([NotificationCenterStore], () => NotificationCenterStore.isRefreshing()); compactMode = ChannelListLayoutSetting.useSetting() === ChannelListLayoutTypes.COMPACT; callback2 = useCallback(() => { loadMore(true); }, [loadMore]); const callback3 = useCallback(({ item: item3, index }) => { switch (item3.kind) { case "read-section-header": return ; case "recent-activity-section-header": return ; case "hoisted-items-header": return ; case "suggested-friends-header": return ; case "suggested-friends-row": return ; case "suggested-friends-show-all-row": return ; case "for-you-divider": return ; case "notification-center-item": return ; case "mentions-placeholder": return ; case "unread-cleared-placeholder": return ; case "load-more": return ; default: assertNever(item3); return void 0; } }, [styles.forYouDivider, suggestedFriendAdded, onAddSuggestionAnimationFinish, stateFromStores, setting, isSoftAcked, onSoftAckItem2, forceHoistItem, isForceHoisted, compactMode, callback2, panelVariant]); ref = useRef(null); useEffect(() => { if (shouldScrollToTop) { const current = ref.current; if (current != null) { current.scrollToOffset({ animated: false, offset: 0 }); } } }, [shouldScrollToTop]); const callback4 = useCallback(() => { if (!stateFromStores2) { refreshNotifications(); } }, [stateFromStores2]); let height; [height, setState] = useState(0); return setState(event.nativeEvent.layout.height)}> {nestedInLaunchPad ? !nestedInLaunchPad : } } onScroll={onScroll} refreshControl={} keyExtractor={extractKey} renderItem={callback3} extraData={setting} onEndReached={loadMore} onEndReachedThreshold={0.8} ListFooterComponent={} viewabilityConfig={viewabilityConfig} /> ; }); export { r223 as ForYouItems };