This commit is contained in:
janisslsm committed 2026-11-01 12:12:55 +02:00
1 parent 1781d25a15
commit 732c0ad767
33051 files changed
+2591613 -3019689

No files matched your search

@@ -0,0 +1,80 @@
// Metro module 15394 (f15395).
import { useRef, useState, useEffect } from "react";
import GuildMemberStore from "../../../../../stores/GuildMemberStore";
import GuildStore from "../../../../../stores/GuildStore";
import SelectedGuildStore from "../../../../../stores/SelectedGuildStore";
import UserGuildSettingsStore from "../../../../../stores/UserGuildSettingsStore";
import PushNotificationPermissionStore, { PermissionPromptType } from "../../../../../stores/native/PushNotificationPermissionStore";
import { EventActionLocation, NotificationNudgeSurface } from "./NotificationPermissionConstants";
import { UserNotificationSettings, ZERO_STRING_GUILD_ID } from "../../../../../Constants";
import { useStateFromStores } from "../../../../../_bundle/Module589";
import NotificationNudgeBottomSheet from "./NotificationNudgeBottomSheet";
import { intl, t } from "../../../../../intl/index.native";
import ContextualOptInNudgeHoldoutExperiment from "../../ContextualOptInNudgeHoldoutExperiment";
import { useCanSeePushNotificationNudge } from "../../NotificationPermissionUtil";
import { isBlockedByOnboarding } from "../../../../guild_onboarding/GuildOnboardingUtils";
import { isPseudoGuildId } from "../../../../routing/RouteUtils";
import { useSelectedTimeRecurringGuildDismissibleContent } from "../../../../dismissible_content/hooks/useSelectedDismissibleContent";
import { DismissibleContent } from "../../../../../_bundle/Module1358";
import { setPushPermissionReactivationSeen } from "../../../../../actions/native/PushNotificationActionCreators";
import ActionSheetActionCreators from "../../../../action_sheet/native/ActionSheetActionCreators";
let c10946_16 = "guild-open-notification-nudge-key";
let c10946_17 = {
cooldownDurationMs: 5184000000
};
export default function GuildOpenNotificationNudge(props) {
const { guildId, markAsDismissed: markAsDismissed2, onHide } = props;
return <NotificationNudgeBottomSheet title={intl.formatToPlainString(t.tyWHMY, {
guildName: useStateFromStores([GuildStore], () => {
let r8 = GuildStore.getGuild(guildId)?.name;
if (r8 == null) {
r8 = "";
}
return r8;
})
})} body={intl.string(t["ehJH+P"])} actionLocation={EventActionLocation.GUILD_OPEN} surface={NotificationNudgeSurface.GUILD_OPEN_BOTTOM_SHEET} markAsDismissed={markAsDismissed2} onHide={onHide} />;
};
export const GUILD_OPEN_NOTIFICATION_NUDGE_KEY = "guild-open-notification-nudge-key";
export function useGuildOpenNudge() {
let stateFromStores2, ref, c21955_4;
const stateFromStores = useStateFromStores([SelectedGuildStore], () => {
let r4 = SelectedGuildStore.getGuildId();
if (r4 == null) {
r4 = null;
}
return r4;
});
const inHoldout = ContextualOptInNudgeHoldoutExperiment.useConfig({
location: "useGuildOpenNudge"
}).inHoldout;
const canSeePushNotificationNudge = useCanSeePushNotificationNudge();
const stateFromStores3 = useStateFromStores([UserGuildSettingsStore], () => stateFromStores == null || UserGuildSettingsStore.isMuted(stateFromStores));
const stateFromStores4 = useStateFromStores([UserGuildSettingsStore], () => stateFromStores != null ? UserGuildSettingsStore.getMessageNotifications(stateFromStores) : UserNotificationSettings.NO_MESSAGES);
stateFromStores2 = useStateFromStores([GuildStore, GuildMemberStore], () => stateFromStores != null && isBlockedByOnboarding(GuildStore.getGuild(stateFromStores), GuildMemberStore.getSelfMember(stateFromStores)));
ref = useRef(stateFromStores);
const [state, setState] = useState(stateFromStores2);
useEffect(() => {
const current = ref.current;
ref.current = stateFromStores;
if (current !== stateFromStores) {
setState(stateFromStores2);
} else if (stateFromStores2) {
setState(true);
}
}, [stateFromStores, stateFromStores2]);
const stateFromStores5 = useStateFromStores([PushNotificationPermissionStore], () => {
const r6 = PushNotificationPermissionStore.getState().promptLastSeen[PermissionPromptType.GUILD_OPEN_BOTTOM_SHEET];
return r6 == null || Date.now() - new Date(r6).getTime() >= 604800000;
});
let [r85, markAsDismissed] = useSelectedTimeRecurringGuildDismissibleContent(stateFromStores != null && !isPseudoGuildId(stateFromStores) && !inHoldout && canSeePushNotificationNudge && !state && !stateFromStores3 && stateFromStores4 !== UserNotificationSettings.NO_MESSAGES && stateFromStores5 ? DismissibleContent.NOTIFICATION_NUDGE_GUILD_OPEN_PER_GUILD : null, stateFromStores == null ? ZERO_STRING_GUILD_ID : stateFromStores, c10946_17);
c21955_4 = r85;
useEffect(() => {
if (stateFromStores != null && c21955_4 != null) {
setPushPermissionReactivationSeen(PermissionPromptType.GUILD_OPEN_BOTTOM_SHEET);
ActionSheetActionCreators.openLazy(import("./GuildOpenNotificationNudge"), c10946_16, {
guildId: stateFromStores,
markAsDismissed
});
}
}, [stateFromStores, markAsDismissed, r85]);
}
@@ -0,0 +1,86 @@
// Metro module 15395 (f15396).
import { useEffect, useCallback } from "react";
import { View } from "react-native";
import { EventActionType, NotificationNudgeAnalyticsAction } from "./NotificationPermissionConstants";
import { AnalyticEvents } from "../../../../../Constants";
import { ContentDismissActionType } from "../../../../dismissible_content/DismissibleContentConstants";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../../_bundle/Module712";
import AnalyticsUtils from "../../../../../utils/AnalyticsUtils";
import ActionSheetActionCreators from "../../../../action_sheet/native/ActionSheetActionCreators";
import { requestPushNotificationPermission } from "../../NotificationPermissionUtil";
import { BottomSheet } from "../../../../../design/components/Sheet/native/BottomSheet.native";
import { BellSpotIllustration } from "../../../../../design/assets/native";
import { Text } from "../../../../../design/components/Text/native/Text";
import { ButtonGroup } from "../../../../../design/components/ButtonGroup/native/ButtonGroup.native";
import { Button } from "../../../../../design/components/Button/native/Button.native";
import { intl, t } from "../../../../../intl/index.native";
const useStyles = createStyles({
container: {
marginHorizontal: Module712.space.PX_24,
alignItems: "center"
},
illustration: {
marginVertical: Module712.space.PX_24
},
title: {
textAlign: "center"
},
body: {
textAlign: "center",
marginTop: Module712.space.PX_8
},
buttonsContainer: {
marginTop: Module712.space.PX_8,
width: "100%"
}
});
export default function NotificationNudgeBottomSheet(props) {
let callback;
const { title, body, actionLocation, surface, markAsDismissed, onHide } = props;
callback = void 0;
const styles = useStyles();
useEffect(() => {
AnalyticsUtils.track(AnalyticEvents.CONTEXTUAL_REMINDER_ACTION, {
action: NotificationNudgeAnalyticsAction.IMPRESSION,
prompt_type: surface
});
}, [surface]);
callback = useCallback(() => {
ActionSheetActionCreators.hideActionSheet();
if (onHide != null) {
onHide();
}
}, [onHide]);
const callback3 = useCallback(() => {
AnalyticsUtils.track(AnalyticEvents.CONTEXTUAL_REMINDER_ACTION, {
action: NotificationNudgeAnalyticsAction.ACCEPT,
prompt_type: surface
});
markAsDismissed(ContentDismissActionType.USER_DISMISS);
requestPushNotificationPermission(EventActionType.ALLOW_TO_REQUEST, actionLocation, callback);
}, [surface, actionLocation, callback, markAsDismissed]);
const callback2 = useCallback(() => {
AnalyticsUtils.track(AnalyticEvents.CONTEXTUAL_REMINDER_ACTION, {
action: NotificationNudgeAnalyticsAction.DISMISS,
prompt_type: surface
});
markAsDismissed(ContentDismissActionType.USER_DISMISS);
callback();
}, [surface, callback, markAsDismissed]);
return <BottomSheet>
<View style={styles.container}>
<View style={styles.illustration}>
<BellSpotIllustration scale={0.8} />
</View>
<Text style={styles.title} variant="heading-xl/bold" accessibilityRole="header">{title}</Text>
<Text style={styles.body} variant="text-sm/medium" color="text-default">{body}</Text>
<View style={styles.buttonsContainer}>
<ButtonGroup>
<Button text={intl.string(t["+7MDbQ"])} onPress={callback3} />
<Button text={intl.string(t.L5eIZ2)} onPress={callback2} variant="secondary" />
</ButtonGroup>
</View>
</View>
</BottomSheet>;
};
@@ -0,0 +1,46 @@
// Metro module 11505 (f11506).
const r11 = {
SKIP_STEP: "skip_step",
ALLOW_TO_REQUEST: "allow_to_request",
REQUEST: "request",
TO_SETTINGS: "to_settings",
REQUEST_PROVISIONAL: "request_provisional",
DISMISS: "dismiss"
};
const r17 = {
ALERT: "alert",
AUTO_PROMPT: "auto_prompt",
NAV: "nav",
FOOTER: "footer",
CTA: "cta",
DM_LIST: "dm_list",
MESSAGE_SENT: "message_sent",
USER_SETTING: "user_setting",
NOTIFICATION_SETTING: "notification_setting",
INVITE_ACCEPTED: "invite_accepted",
FRIEND_REQUEST_SENT: "friend_request_sent",
FRIEND_REQUEST_ACCEPTED: "friend_request_accepted",
NOTIFICATION_CENTER: "notification_center",
CHANNEL_BANNER: "channel_banner",
POST_REACTION: "post_reaction",
GUILD_OPEN: "guild_open",
CALL_DISCONNECT: "call_disconnect"
};
const r35 = {
CHANNEL_BANNER: "channel_banner",
NOTIFICATION_CENTER_BANNER: "notification_center_banner",
POST_REACTION_BANNER: "post_reaction_banner",
NOTIFICATION_SETTINGS_PERMISSION_HEADER: "notification_settings_permission_header",
GUILD_OPEN_BOTTOM_SHEET: "guild_open_bottom_sheet",
CALL_DISCONNECT_BOTTOM_SHEET: "call_disconnect_bottom_sheet"
};
const r41 = {
IMPRESSION: "impression",
DISMISS: "dismiss",
ACCEPT: "accept"
};
export { r11 as EventActionType };
export { r17 as EventActionLocation };
export const NOTIFICATION_REACTIVATION_ACTIONSHEET_KEY = "notification-reactivation-actionsheet-key";
export { r35 as NotificationNudgeSurface };
export { r41 as NotificationNudgeAnalyticsAction };
@@ -0,0 +1,68 @@
// Metro module 16282 (f16283).
import { useCallback } from "react";
import { Image as Image2, View } from "react-native";
import { EventActionType } from "./NotificationPermissionConstants";
import { AnalyticEvents } from "../../../../../Constants";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../../_bundle/Module712";
import AnalyticsUtils from "../../../../../utils/AnalyticsUtils";
import { requestPushNotificationPermission } from "../../NotificationPermissionUtil";
import ActionSheetActionCreators from "../../../../action_sheet/native/ActionSheetActionCreators";
import { BottomSheet } from "../../../../../design/components/Sheet/native/BottomSheet.native";
import Module16283 from "../../../../../_bundle/Module16283";
import { Text } from "../../../../../design/components/Text/native/Text";
import { intl, t } from "../../../../../intl/index.native";
import { ButtonGroup } from "../../../../../design/components/ButtonGroup/native/ButtonGroup.native";
import { Button } from "../../../../../design/components/Button/native/Button.native";
const useStyles = createStyles({
container: {
marginHorizontal: Module712.space.PX_24,
alignItems: "center"
},
image: {
marginVertical: Module712.space.PX_24,
height: 120
},
title: {
textAlign: "center"
},
subtitle: {
textAlign: "center",
marginTop: Module712.space.PX_8
},
buttons: {
marginTop: Module712.space.PX_8
}
});
export default function NotificationReactivationActionSheet(props) {
const location2 = props.location;
const styles = useStyles();
const callback = useCallback(() => {
requestPushNotificationPermission(EventActionType.ALLOW_TO_REQUEST, location2, () => {
ActionSheetActionCreators.hideActionSheet();
});
}, [location2]);
const callback2 = useCallback(() => {
AnalyticsUtils.track(AnalyticEvents.NOTIFICATION_PERMISSION_PREPROMPT_ACKED, {
action_type: EventActionType.SKIP_STEP,
action_location: location2,
permission_granted: void 0
});
ActionSheetActionCreators.hideActionSheet();
}, [location2]);
return <BottomSheet>
<View style={styles.container}>
<Image2 style={styles.image} source={Module16283} resizeMode="contain" />
<Text style={styles.title} variant="heading-xl/bold" accessibilityRole="header">
{intl.string(t.a4bgO0)}
</Text>
<Text style={styles.subtitle} variant="text-sm/medium" color="text-default">
{intl.string(t["rW5gw/"])}
</Text>
<ButtonGroup style={styles.buttons}>
<Button text={intl.string(t.a4bgO0)} onPress={callback} />
<Button text={intl.string(t["/L3kom"])} onPress={callback2} variant="secondary" />
</ButtonGroup>
</View>
</BottomSheet>;
};
@@ -0,0 +1,50 @@
// Metro module 15396 (f15397).
import { useRef, useState, useEffect } from "react";
import SelectedChannelStore from "../../../../../stores/SelectedChannelStore";
import VoiceStateStore from "../../../../../stores/VoiceStateStore";
import { PermissionPromptType } from "../../../../../stores/native/PushNotificationPermissionStore";
import { EventActionLocation, NotificationNudgeSurface } from "./NotificationPermissionConstants";
import NotificationNudgeBottomSheet from "./NotificationNudgeBottomSheet";
import { intl, t } from "../../../../../intl/index.native";
import ContextualOptInNudgeHoldoutExperiment from "../../ContextualOptInNudgeHoldoutExperiment";
import { useCanSeePushNotificationNudge } from "../../NotificationPermissionUtil";
import { useStateFromStores } from "../../../../../_bundle/Module589";
import { useSelectedTimeRecurringDismissibleContent } from "../../../../dismissible_content/hooks/useSelectedDismissibleContent";
import { DismissibleContent } from "../../../../../_bundle/Module1358";
import { setPushPermissionReactivationSeen } from "../../../../../actions/native/PushNotificationActionCreators";
import ActionSheetActionCreators from "../../../../action_sheet/native/ActionSheetActionCreators";
let c10948_11 = "post-call-disconnect-nudge-key";
let c10948_12 = {
cooldownDurationMs: 604800000
};
export default function PostCallDisconnectNudge(props) {
const { markAsDismissed: markAsDismissed2, onHide } = props;
return <NotificationNudgeBottomSheet title={intl.string(t.pJbYq1)} body={intl.string(t.vegtFT)} actionLocation={EventActionLocation.CALL_DISCONNECT} surface={NotificationNudgeSurface.CALL_DISCONNECT_BOTTOM_SHEET} markAsDismissed={markAsDismissed2} onHide={onHide} />;
};
export const POST_CALL_DISCONNECT_NUDGE_KEY = "post-call-disconnect-nudge-key";
export function usePostCallDisconnectNudge() {
let stateFromStores2, ref, c21957_4;
const inHoldout = ContextualOptInNudgeHoldoutExperiment.useConfig({
location: "usePostCallDisconnectNudge"
}).inHoldout;
const canSeePushNotificationNudge = useCanSeePushNotificationNudge();
const stateFromStores = useStateFromStores([VoiceStateStore], () => VoiceStateStore.getCurrentClientVoiceChannelId(null));
stateFromStores2 = useStateFromStores([SelectedChannelStore], () => SelectedChannelStore.getChannelId());
ref = useRef(stateFromStores);
const [state, setState] = useState(false);
useEffect(() => {
const current = ref.current;
ref.current = stateFromStores;
setState(current != null && stateFromStores == null && current === stateFromStores2);
}, [stateFromStores, stateFromStores2]);
let [r55, markAsDismissed] = useSelectedTimeRecurringDismissibleContent(state ? inHoldout ? null : canSeePushNotificationNudge ? DismissibleContent.NOTIFICATION_NUDGE_POST_CALL_DISCONNECT : null : null, c10948_12);
c21957_4 = r55;
useEffect(() => {
if (c21957_4 != null) {
setPushPermissionReactivationSeen(PermissionPromptType.CALL_DISCONNECT_BOTTOM_SHEET);
ActionSheetActionCreators.openLazy(import("./PostCallDisconnectNudge"), c10948_11, {
markAsDismissed
});
}
}, [r55, markAsDismissed]);
}
@@ -0,0 +1,57 @@
// Metro module 14913 (f14914).
import { useCallback } from "react";
import { Image as Image2, View } from "react-native";
import { PermissionStateType } from "../../../../../stores/native/PushNotificationPermissionStore";
import { EventActionLocation, EventActionType } from "./NotificationPermissionConstants";
import { AnalyticEvents } from "../../../../../Constants";
import { createStyles } from "../../../../../design/components/Styles/native/createStyles";
import Module712 from "../../../../../_bundle/Module712";
import { requestPushNotificationPermission, enableProvisionalPushNotification } from "../../NotificationPermissionUtil";
import AnalyticsUtils from "../../../../../utils/AnalyticsUtils";
import { setPushPermissionState } from "../../../../../actions/native/PushNotificationActionCreators";
import NewUserPermissionsOnboarding_android from "../NewUserPermissionsOnboarding.android";
import Module14914 from "../../../../../_bundle/Module14914";
import { intl, t } from "../../../../../intl/index.native";
let useStyles;
const RedesignNotificationModal = function RedesignNotificationModal(props) {
const onComplete = props.onComplete;
const styles = useStyles();
return <View style={styles.container}>
<NewUserPermissionsOnboarding_android onAllow={useCallback(() => {
requestPushNotificationPermission(EventActionType.ALLOW_TO_REQUEST, EventActionLocation.ALERT, () => {
if (onComplete != null) {
onComplete();
}
});
}, [onComplete])} onDontAllow={useCallback(() => {
AnalyticsUtils.track(AnalyticEvents.NOTIFICATION_PERMISSION_PREPROMPT_ACKED, {
action_type: EventActionType.SKIP_STEP,
action_location: EventActionLocation.ALERT
});
setPushPermissionState(PermissionStateType.PROMPT_SKIPPED);
enableProvisionalPushNotification();
if (onComplete != null) {
onComplete(true);
}
}, [onComplete])} header={<Image2 resizeMode="contain" style={styles.notificationHeaderImage} source={Module14914} />} title={intl.string(t["3nx0b5"])} subtitle={intl.string(t.Gf7U1T)} />
</View>;
};
useStyles = createStyles({
container: {
flex: 1,
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW,
marginTop: -Module712.space.PX_48
},
notificationHeaderImage: {
position: "absolute",
alignSelf: "center",
zIndex: 2,
top: -140,
height: 156,
width: 150
}
});
export default RedesignNotificationModal;
export function RedesignNotificationScreen(props) {
return <RedesignNotificationModal onComplete={props.route.params.onComplete} />;
}