// Metro module 10334 (f10335). import { useMemo, useCallback, useEffect } from "react"; import { MIN_SWIPE_VELOCITY, STARTED_SWIPE_THRESHOLD, NOTIFICATION_MAX_WIDTH } from "./InAppNotificationConstants"; import { AnalyticEvents } from "../../../Constants"; import { createStyles } from "../../../design/components/Styles/native/createStyles"; import Module712 from "../../../_bundle/Module712"; import { extractMetadataFromNotification } from "./InAppNotificationUtils"; import { useInAppNotificationContext } from "./InAppNotificationContext"; import * as _ReanimatedRexport from "../../reanimated/ReanimatedRexport"; import ReanimatedRexport, { useSharedValue, useAnimatedStyle, cancelAnimation } from "../../reanimated/ReanimatedRexport"; import * as _spring from "../../../design/animation/reanimated/spring/spring"; import { useCanExpandInAppNotification } from "./InAppNotificationExpandExperiment"; import * as _timing from "../../../design/animation/reanimated/timing/timing"; import AppAnalyticsUtils from "../../app_analytics/AppAnalyticsUtils"; import { PressableHighlight } from "../../../design/void/Pressables/native/Pressables"; import NotificationContent from "./NotificationContent"; import NotificationProgress from "./NotificationProgress"; const useStyles = createStyles({ shadow: { ...Module712.shadows.SHADOW_HIGH, backgroundColor: Module712.colors.MOBILE_ALERT_BACKGROUND_DEFAULT, borderRadius: Module712.radii.lg, maxWidth: NOTIFICATION_MAX_WIDTH, width: "100%", alignSelf: "center", borderWidth: 1, borderColor: Module712.colors.BORDER_SUBTLE }, container: { borderRadius: Module712.radii.lg, overflow: "hidden" } }); const ON_PRESS_SPRING_CONFIG = { mass: 1, overshootClamping: true, damping: 27, stiffness: 300 }; const __initData = { code: "function NotificationTsx1(){const{withSpring,scale,ON_PRESS_SPRING_CONFIG}=this.__closure;return{transform:[{scale:withSpring(scale.get(),ON_PRESS_SPRING_CONFIG)}]};}" }; const __initData2 = { code: "function NotificationTsx2(finished){const{runOnJS,handleDismissNotification}=this.__closure;if(finished){runOnJS(handleDismissNotification)('timeout');}}" }; const __initData3 = { code: "function NotificationTsx3(){const{withTiming,expandedSV,tokens,Easing}=this.__closure;return{borderRadius:withTiming(expandedSV.get()?tokens.radii.xl:tokens.radii.lg,{duration:220,easing:Easing.bezier(0.16,1,0.3,1)})};}" }; export function NotificationPressable(props) { let guildId, channelId, messageId, type, notificationGestureY, velocityY, autoDismissing, isExpanded, expandedSV, setExpanded, handleDismissNotification, initialized, panning, isExpandableNotification, sharedValue, sharedValue2, c17881_19, callback, callback2; const { notification, expandableContent, icon, children, accessoryLabelNode, rightAccessory, header, showDragHandle = false, onAccessibilityExpand, bodyStyle, expandedContentVisible = false, onPress, onSettingsPress, ...props2 } = props; guildId = void 0; channelId = void 0; messageId = void 0; type = void 0; notificationGestureY = void 0; velocityY = void 0; autoDismissing = void 0; isExpanded = void 0; expandedSV = void 0; setExpanded = void 0; handleDismissNotification = void 0; initialized = void 0; panning = void 0; isExpandableNotification = void 0; sharedValue = void 0; sharedValue2 = void 0; c17881_19 = void 0; callback = void 0; callback2 = void 0; const styles = useStyles(); const memo = useMemo(() => ({ type: notification.type, ...extractMetadataFromNotification(notification) }), [notification]); guildId = memo.guildId; channelId = memo.channelId; messageId = memo.messageId; type = memo.type; const inAppNotificationContext = useInAppNotificationContext(); notificationGestureY = inAppNotificationContext.notificationGestureY; velocityY = inAppNotificationContext.velocityY; autoDismissing = inAppNotificationContext.autoDismissing; isExpanded = inAppNotificationContext.isExpanded; expandedSV = inAppNotificationContext.expandedSV; setExpanded = inAppNotificationContext.setExpanded; handleDismissNotification = inAppNotificationContext.handleDismissNotification; initialized = inAppNotificationContext.initialized; panning = inAppNotificationContext.panning; isExpandableNotification = inAppNotificationContext.isExpandableNotification; sharedValue = useSharedValue(1); const callback3 = useCallback(() => sharedValue.set(0.95), [sharedValue]); const callback4 = useCallback(() => sharedValue.set(1), [sharedValue]); const R = function R() { return { transform: [{ scale: _spring.withSpring(sharedValue.get(), ON_PRESS_SPRING_CONFIG) }] }; }; R.__closure = { withSpring: _spring.withSpring, scale: sharedValue, ON_PRESS_SPRING_CONFIG }; R.__workletHash = 5485274967370; R.__initData = __initData; let r74 = useAnimatedStyle(R); const canExpand = useCanExpandInAppNotification("NotificationPressable").canExpand; const memo2 = useMemo(() => ({ foreground: true }), []); sharedValue2 = useSharedValue(100); const r2 = notification.duration !== Infinity; c17881_19 = r2; useEffect(() => { const duration = notification.duration; if (initialized && !panning && c17881_19 && !isExpanded && !autoDismissing) { const r31 = { duration: sharedValue2.get() / 100 * duration, easing: _ReanimatedRexport.Easing.linear }; const r32 = function(a0) { if (a0) { _ReanimatedRexport.runOnJS(handleDismissNotification)("timeout"); } }; r32.__closure = { runOnJS: _ReanimatedRexport.runOnJS, handleDismissNotification }; r32.__workletHash = 5704836747866; r32.__initData = __initData2; sharedValue2.set(_timing.withTiming(0, r31, "animate-always", r32)); return () => { cancelAnimation(sharedValue2); }; } }, [initialized, panning, notification, sharedValue2, handleDismissNotification, isExpanded, autoDismissing, r2]); callback = useCallback(() => Math.abs(velocityY.get()) >= MIN_SWIPE_VELOCITY || Math.abs(notificationGestureY.get()) >= STARTED_SWIPE_THRESHOLD, [velocityY, notificationGestureY]); callback2 = useCallback((a0, a1) => { const r4 = callback(); if ((r4 ? isExpanded : !r4) || autoDismissing) { AppAnalyticsUtils.trackWithMetadata(a0, { type, notif_guild_id: guildId, notif_channel_id: channelId, message_id: messageId, in_app_notification_id: notification.inAppNotificationId, percent: c17881_19 ? Math.floor(typeof sharedValue2 !== "number" ? sharedValue2.get() : sharedValue2) : void 0 }); if (a1 != null) { a1(); } } }, [callback, autoDismissing, type, notification.inAppNotificationId, guildId, channelId, messageId, sharedValue2, isExpanded, r2]); const callback5 = useCallback(() => callback2(AnalyticEvents.IN_APP_NOTIFICATION_CLICKED, onPress), [callback2, onPress]); const callback6 = useCallback(() => { if (isExpandableNotification) { setExpanded(true, "long_press"); } else { callback2(AnalyticEvents.IN_APP_NOTIFICATION_LONG_PRESSED, onSettingsPress); } }, [callback2, isExpandableNotification, onSettingsPress, setExpanded]); const ai = function ai() { return { borderRadius: _timing.withTiming(expandedSV.get() ? Module712.radii.xl : Module712.radii.lg, { duration: 220, easing: _ReanimatedRexport.Easing.bezier(0.16, 1, 0.3, 1) }) }; }; ai.__closure = { withTiming: _timing.withTiming, expandedSV, tokens: Module712, Easing: _ReanimatedRexport.Easing }; ai.__workletHash = 15276203537259; ai.__initData = __initData3; const animatedStyle = useAnimatedStyle(ai); const style = [styles.shadow, ,]; if (isExpandableNotification) { r74 = animatedStyle; } style[1] = r74; return handleDismissNotification("accessibility_escape")} style={styles.container} androidRippleConfig={memo2} onPress={callback5} onPressIn={callback3} onPressOut={callback4} onLongPress={callback6} accessibilityRole="button"> {children} {r2 ? : null} {expandableContent} ; }