148 lines
6.9 KiB
TypeScript
148 lines
6.9 KiB
TypeScript
// Metro module 11572 (f11573).
|
|
import { useRef, useEffect, useCallback } from "react";
|
|
import { ScrollView, View } from "react-native";
|
|
import { BoostInfoType, GuildPowerupType } from "../constants/GuildPowerupsConstants";
|
|
import { createStyles } from "../../../../design/components/Styles/native/createStyles";
|
|
import Module712 from "../../../../_bundle/Module712";
|
|
import { useGameServerEnabled } from "../../game_server/GameServerExperiment";
|
|
import useLoadGuildPowerups from "../hooks/useLoadGuildPowerups";
|
|
import { useAutoDismissGuildPowerupsNotifications } from "../hooks/useGuildPowerupsNotifications";
|
|
import useShowGuildPowerupRollbackSheet from "./hooks/useShowGuildPowerupRollbackSheet";
|
|
import useSafeAreaInsets_native from "../../../safe_area/useSafeAreaInsets.native";
|
|
import useAnalyticsLocations, { AnalyticsLocationProvider } from "../../../app_analytics/useAnalyticsLocations";
|
|
import { useBuildGuildPowerupsSections } from "../utils/powerupListing";
|
|
import openGuildPowerupsBottomSheet from "./utils/openGuildPowerupsBottomSheet";
|
|
import openGuildPowerupsMultiPerkBottomSheet from "./utils/openGuildPowerupsMultiPerkBottomSheet";
|
|
import ModalActionCreators from "../../../../actions/ModalActionCreators";
|
|
import useGuildPowerupsBoostCount from "../hooks/useGuildPowerupsBoostCount";
|
|
import { Header } from "../../../../_bundle/Module5150";
|
|
import { intl } from "../../../../intl/index.native";
|
|
import GuildPowerups_messages from "../GuildPowerups.messages";
|
|
import { GenericHeaderTitle } from "../../../main_tabs_v2/native/shared_components/HeaderShared";
|
|
import { getHeaderCloseButton } from "../../../../design/components/Navigator/native/NavigatorHeader.native";
|
|
import GuildPowerupsBoostInfo from "./GuildPowerupsBoostInfo";
|
|
import GuildPowerupsNotificationContainer from "./GuildPowerupsNotificationContainer";
|
|
import GuildPowerupsLevelsSection from "./GuildPowerupsLevelsSection";
|
|
import GuildPowerupsPerksSection from "./GuildPowerupsPerksSection";
|
|
import GuildPowerupsRecentActivitySection from "./GuildPowerupsRecentActivitySection";
|
|
import { GuildPowerupsBoostButton } from "./GuildPowerupsBoostButton";
|
|
const useStyles = createStyles({
|
|
container: {
|
|
flex: 1,
|
|
backgroundColor: Module712.colors.BACKGROUND_BASE_LOW
|
|
},
|
|
headerContainer: {
|
|
paddingHorizontal: Module712.space.PX_16,
|
|
paddingTop: Module712.space.PX_8
|
|
},
|
|
boostInfoContainer: {
|
|
flexDirection: "row",
|
|
justifyContent: "space-between",
|
|
borderWidth: 1,
|
|
borderStyle: "solid",
|
|
borderColor: Module712.colors.BORDER_SUBTLE,
|
|
marginBottom: Module712.space.PX_16
|
|
},
|
|
boostInfoSeparator: {
|
|
width: 1,
|
|
height: "100%",
|
|
backgroundColor: Module712.colors.BORDER_SUBTLE
|
|
},
|
|
scrollView: {
|
|
paddingBottom: Module712.space.PX_96
|
|
},
|
|
boostButtonContainer: {
|
|
paddingHorizontal: Module712.space.PX_16,
|
|
position: "absolute",
|
|
bottom: 0,
|
|
left: 0,
|
|
right: 0
|
|
}
|
|
});
|
|
export default function GuildPowerupsModal(props) {
|
|
const { guildId, analyticsLocation, autoOpenPerkId, autoOpenRequestId } = props;
|
|
const gameServerEnabled = useGameServerEnabled(guildId, "GuildPowerupsModal");
|
|
useLoadGuildPowerups(guildId);
|
|
useAutoDismissGuildPowerupsNotifications(guildId);
|
|
useShowGuildPowerupRollbackSheet(guildId, "GuildPowerupsModal", autoOpenPerkId != null);
|
|
const bottom = useSafeAreaInsets_native().bottom;
|
|
const styles = useStyles();
|
|
const analyticsLocations = useAnalyticsLocations.apply(void 0, [...analyticsLocation != null ? [analyticsLocation] : []]).analyticsLocations;
|
|
const buildGuildPowerupsSections = useBuildGuildPowerupsSections(guildId, gameServerEnabled);
|
|
const ref = useRef(void 0);
|
|
useEffect(() => {
|
|
if (autoOpenPerkId != null && autoOpenRequestId != null && ref.current !== autoOpenRequestId) {
|
|
for (const buildGuildPowerupsSection of buildGuildPowerupsSections) {
|
|
L15: {
|
|
done38: {
|
|
for (const listing of buildGuildPowerupsSection.listings) {
|
|
if (!(listing.type === "singlePerk" && listing.powerup.skuId === autoOpenPerkId)) {
|
|
if (listing.type !== "multiPerk") {
|
|
continue;
|
|
}
|
|
if (listing.group !== autoOpenPerkId && !listing.powerups.some((powerup) => powerup.skuId === autoOpenPerkId)) {
|
|
continue;
|
|
}
|
|
ref.current = autoOpenRequestId;
|
|
openGuildPowerupsMultiPerkBottomSheet({
|
|
guildId,
|
|
listing,
|
|
onDismiss: () => ModalActionCreators.pop()
|
|
});
|
|
break L15;
|
|
}
|
|
ref.current = autoOpenRequestId;
|
|
openGuildPowerupsBottomSheet({
|
|
guildId,
|
|
powerup: listing.powerup
|
|
});
|
|
break done38;
|
|
}
|
|
continue;
|
|
}
|
|
return void 0;
|
|
}
|
|
return void 0;
|
|
}
|
|
}
|
|
}, [autoOpenPerkId, autoOpenRequestId, guildId, buildGuildPowerupsSections]);
|
|
const callback = useCallback(() => {
|
|
ModalActionCreators.pop();
|
|
}, []);
|
|
const guildPowerupsBoostCount = useGuildPowerupsBoostCount(guildId);
|
|
const { available, spent, total } = guildPowerupsBoostCount;
|
|
return <AnalyticsLocationProvider value={analyticsLocations}>
|
|
<View style={styles.container}>
|
|
<View style={styles.headerContainer}>
|
|
<Header title={intl.string(GuildPowerups_messages.hjvcLO)} headerTitle={() => <GenericHeaderTitle title={intl.string(GuildPowerups_messages.hjvcLO)} />} headerTitleAlign="center" headerLeft={getHeaderCloseButton(callback)} />
|
|
</View>
|
|
<ScrollView contentContainerStyle={styles.scrollView}>
|
|
<View style={styles.boostInfoContainer}>
|
|
<GuildPowerupsBoostInfo count={available} type={BoostInfoType.AVAILABLE} />
|
|
<View style={styles.boostInfoSeparator} />
|
|
<GuildPowerupsBoostInfo count={spent} type={BoostInfoType.SPENT} />
|
|
<View style={styles.boostInfoSeparator} />
|
|
<GuildPowerupsBoostInfo count={total} type={BoostInfoType.TOTAL} />
|
|
</View>
|
|
<GuildPowerupsNotificationContainer guildId={guildId} />
|
|
{buildGuildPowerupsSections.map((buildGuildPowerupsSection) => {
|
|
const type = buildGuildPowerupsSection.type;
|
|
if (GuildPowerupType.LEVEL === type) {
|
|
return <GuildPowerupsLevelsSection key={buildGuildPowerupsSection.type} guildId={guildId} listings={buildGuildPowerupsSection.listings} />;
|
|
}
|
|
if (GuildPowerupType.PERK === type) {
|
|
return <GuildPowerupsPerksSection key={buildGuildPowerupsSection.type} guildId={guildId} listings={buildGuildPowerupsSection.listings} />;
|
|
}
|
|
return null;
|
|
})}
|
|
<GuildPowerupsRecentActivitySection guildId={guildId} />
|
|
</ScrollView>
|
|
<View style={[styles.boostButtonContainer, {
|
|
paddingBottom: bottom
|
|
}]}>
|
|
<GuildPowerupsBoostButton guildId={guildId} />
|
|
</View>
|
|
</View>
|
|
</AnalyticsLocationProvider>;
|
|
};
|