clear lot of tickets
This commit is contained in:
@@ -89,6 +89,12 @@ const STAGE_CARD_CONTENT = [
|
||||
];
|
||||
|
||||
const CLUB_CARD_IMAGE = icons.clubIcon;
|
||||
const ACTIVE_SUBSCRIPTION_STATUSES = new Set([
|
||||
"trialing",
|
||||
"active",
|
||||
"past_due",
|
||||
"unpaid",
|
||||
]);
|
||||
|
||||
const Home = ({ navigation, route }) => {
|
||||
const {
|
||||
@@ -102,6 +108,43 @@ const Home = ({ navigation, route }) => {
|
||||
} = useUser();
|
||||
const { setTooltip } = useMinuit();
|
||||
|
||||
const hasActiveSubscription = useMemo(() => {
|
||||
if (!currentUserData) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const pickStatus = (value) => {
|
||||
if (typeof value !== "string") {
|
||||
return null;
|
||||
}
|
||||
const trimmed = value.trim();
|
||||
return trimmed ? trimmed.toLowerCase() : null;
|
||||
};
|
||||
|
||||
const statusCandidates = [
|
||||
pickStatus(currentUserData?.stripeSubscriptionStatus),
|
||||
pickStatus(currentUserData?.stripeSubscription?.status),
|
||||
pickStatus(
|
||||
currentUserData?.stripeSubscription?.stripeSubscriptionStatus,
|
||||
),
|
||||
pickStatus(currentUserData?.stripeSubscription?.metadata?.status),
|
||||
].filter(Boolean);
|
||||
|
||||
if (
|
||||
statusCandidates.some((status) =>
|
||||
ACTIVE_SUBSCRIPTION_STATUSES.has(status),
|
||||
)
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
const hasPremiumLevel =
|
||||
typeof currentUserData?.premiumLevel === "string" &&
|
||||
currentUserData.premiumLevel.trim().length > 0;
|
||||
|
||||
return hasPremiumLevel;
|
||||
}, [currentUserData]);
|
||||
|
||||
if (!currentUID) {
|
||||
return <LandingPage />;
|
||||
}
|
||||
@@ -386,9 +429,17 @@ const Home = ({ navigation, route }) => {
|
||||
|
||||
const handleStagePress = useCallback(
|
||||
(stageKey, isLocked) => {
|
||||
if (!hasActiveProject || isLocked) {
|
||||
if (isLocked) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!hasActiveProject || !currentProject) {
|
||||
if (stageKey === "songwriter") {
|
||||
handleStartNew();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
ensureProjectSelected();
|
||||
const action = getStageAction(stageKey, currentProject);
|
||||
if (!action?.route) {
|
||||
@@ -396,7 +447,12 @@ const Home = ({ navigation, route }) => {
|
||||
}
|
||||
navigate(action.route, action.params);
|
||||
},
|
||||
[currentProject, ensureProjectSelected, hasActiveProject],
|
||||
[
|
||||
currentProject,
|
||||
ensureProjectSelected,
|
||||
hasActiveProject,
|
||||
handleStartNew,
|
||||
],
|
||||
);
|
||||
|
||||
const handleClubPress = useCallback(() => {
|
||||
@@ -464,7 +520,11 @@ const Home = ({ navigation, route }) => {
|
||||
))}
|
||||
</View>
|
||||
|
||||
<ClubCard image={CLUB_CARD_IMAGE} onPress={handleClubPress} />
|
||||
<ClubCard
|
||||
image={CLUB_CARD_IMAGE}
|
||||
onPress={handleClubPress}
|
||||
hasActiveSubscription={hasActiveSubscription}
|
||||
/>
|
||||
</View>
|
||||
</Page>
|
||||
</View>
|
||||
|
||||
Reference in New Issue
Block a user