81 lines
4.9 KiB
TypeScript
81 lines
4.9 KiB
TypeScript
// 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]);
|
|
}
|