// Metro module 15768 (f15769).
import { useCallback } from "react";
import { View } from "react-native";
import ApplicationStore from "../../applications/ApplicationStore";
import ConnectedAccountsStore from "../../../stores/ConnectedAccountsStore";
import { ContentDismissActionType } from "../../dismissible_content/DismissibleContentConstants";
import { createStyles } from "../../../design/components/Styles/native/createStyles";
import Module712 from "../../../_bundle/Module712";
import { useThemeContext } from "../../../_bundle/Module3901";
import useSafeAreaInsets_native from "../../safe_area/useSafeAreaInsets.native";
import { useStateFromStores, useStateFromStoresObject } from "../../../_bundle/Module589";
import Platforms from "../../../lib/Platforms";
import useStartAuthorize from "./useStartAuthorize";
import useAnalyticsLocations from "../../app_analytics/useAnalyticsLocations";
import AnalyticsLocation from "../../app_analytics/AnalyticsLocation";
import { claimIncentivizedAccountLinkingReward } from "../AccountLinkManager";
import ActionSheetActionCreators from "../../action_sheet/native/ActionSheetActionCreators";
import { BottomSheetTitleHeader } from "../../../design/components/Sheet/native/BottomSheetTitleHeader.native";
import { BottomSheet } from "../../../design/components/Sheet/native/BottomSheet.native";
import { Stack } from "../../../design/components/Stack/native/Stack.native";
import { UnionIcon } from "../../local_app_detection/native/RobloxConnectionCoachmark";
import { Text } from "../../../design/components/Text/native/Text";
import { intl, t } from "../../../intl/index.native";
import ApplicationAccountLinking_messages from "../ApplicationAccountLinking.messages";
import { OrbsIcon } from "../../../design/components/Icon/native/redesign/generated/OrbsIcon";
import { Button } from "../../../design/components/Button/native/Button.native";
import { WindowLaunchIcon } from "../../../design/components/Icon/native/redesign/generated/WindowLaunchIcon";
import * as _themes from "../../../design/utils/shared/themes";
import { makeSource } from "../../../utils/AvatarUtils";
import Icon, { IconSizes } from "../../../design/void/Icon/native/Icon";
import GameIcon, { GameIconSizes } from "../../game_detection/native/GameIcon";
import { useGetOrFetchApplication } from "../../applications/useGetOrFetchApplications";
let useStyles, ApplicationIcon;
const ConnectionIcon = function ConnectionIcon(props) {
const { platform: platform2, theme } = props;
const styles = useStyles();
const isThemeDark = _themes.isThemeDark(theme);
const icon = platform2.icon;
return
;
};
ApplicationIcon = function ApplicationIcon(props) {
const application = props.application;
return
{application != null ? : null}
;
};
useStyles = createStyles({
iconContainer: {
width: 56,
height: 56,
alignItems: "center",
justifyContent: "center"
},
content: {
paddingHorizontal: Module712.space.PX_16
},
text: {
textAlign: "center"
},
connectionIcon: {
height: 48,
width: 48
}
});
export default function ConnectionDeprecationBottomSheet(props) {
let replacedBy, startAuthorization, analyticsLocations, callback;
const platformTypes = props.platformTypes;
let applicationName = props.applicationName;
const markAsDismissed = props.markAsDismissed;
replacedBy = void 0;
startAuthorization = void 0;
analyticsLocations = void 0;
callback = void 0;
const styles = useStyles();
const theme = useThemeContext().theme;
const bottom = useSafeAreaInsets_native().bottom;
const stateFromStores2 = useStateFromStores([ConnectedAccountsStore], () => ConnectedAccountsStore.getAccounts().find((item) => platformTypes.includes(item.type))?.type);
const platform2 = stateFromStores2 != null ? Platforms.get(stateFromStores2) : null;
replacedBy = platform2 == null ? void 0 : platform2.migrationData?.replacedBy;
const stateFromStores = useStateFromStores([ApplicationStore], () => ApplicationStore.getApplication(replacedBy));
startAuthorization = useStartAuthorize(stateFromStores).startAuthorization;
analyticsLocations = useAnalyticsLocations(AnalyticsLocation.ACTION_SHEET).analyticsLocations;
callback = useCallback(() => {
claimIncentivizedAccountLinkingReward({
applicationId: replacedBy,
onSuccess: () => {
ActionSheetActionCreators.openLazy(import("./IncentivizedAccountLinkConfirmationBottomSheet"), "IncentivizedAccountLinkConfirmationBottomSheet");
}
});
}, [replacedBy]);
const callback2 = useCallback(() => {
ActionSheetActionCreators.hideActionSheet();
if (markAsDismissed != null) {
markAsDismissed(ContentDismissActionType.PRIMARY);
}
startAuthorization({
analyticsLocations,
onSuccess: callback
});
}, [analyticsLocations, startAuthorization, markAsDismissed, callback]);
if (platform2 != null && stateFromStores != null) {
if (applicationName == null) {
applicationName = stateFromStores.name;
}
return } onDismiss={() => markAsDismissed(ContentDismissActionType.DISMISS)}>
{intl.string(ApplicationAccountLinking_messages.vycLU2)}
{intl.format(ApplicationAccountLinking_messages.DfSSdL, {
connectionName: platform2.name,
applicationName,
orbCount: 200,
orbsIconHook: () =>
})}
} iconPosition="end" size="lg" onPress={callback2} />
;
}
return false;
};
export function useShouldShowConnectionDeprecationBottomSheet({ deprecatedPlatformTypes }) {
const stateFromStoresObject = useStateFromStoresObject([ConnectedAccountsStore], () => ({
fetchingConnections: ConnectedAccountsStore.isFetching(),
matchingPlatform: ConnectedAccountsStore.getAccounts().map((item) => Platforms.get(item.type)).find((item) => {
const migrationData = item.migrationData;
return (migrationData == null ? void 0 : migrationData.getMigrationExperimentEnabled("ConnectionDeprecationBottomSheet")) && deprecatedPlatformTypes.includes(item.type);
})
}));
let fetchingConnections = stateFromStoresObject.fetchingConnections;
const matchingPlatform = stateFromStoresObject.matchingPlatform;
const getOrFetchApplication = useGetOrFetchApplication(matchingPlatform == null ? void 0 : matchingPlatform.migrationData?.replacedBy);
const startAuthorize = useStartAuthorize(getOrFetchApplication);
const { hasAlreadyLinked, canStartAuthorization, fetched } = startAuthorize;
if (!fetchingConnections) {
fetchingConnections = !fetched;
}
if (!fetchingConnections) {
fetchingConnections = !canStartAuthorization;
}
if (!fetchingConnections) {
fetchingConnections = getOrFetchApplication == null;
}
return fetchingConnections ? !fetchingConnections : !hasAlreadyLinked;
}