From 48b2ea39aeceed7bbb5ba53b6930bf34b32e8e3c Mon Sep 17 00:00:00 2001 From: DIYgod Date: Fri, 31 Oct 2025 11:56:23 +0800 Subject: [PATCH] feat: useIsPaymentEnabled --- .../layer/renderer/src/atoms/server-configs.ts | 12 ++++++++++++ .../ui/ai-summary-card/AISummaryCardBase.tsx | 6 +++--- apps/desktop/layer/renderer/src/lib/error-parser.ts | 6 +++--- .../layer/renderer/src/modules/discover/FeedForm.tsx | 10 +++++----- .../layer/renderer/src/modules/settings/control.tsx | 6 +++--- .../renderer/src/modules/settings/tabs/general.tsx | 6 +++--- .../renderer/src/modules/settings/tabs/plan.tsx | 6 +++--- 7 files changed, 32 insertions(+), 20 deletions(-) diff --git a/apps/desktop/layer/renderer/src/atoms/server-configs.ts b/apps/desktop/layer/renderer/src/atoms/server-configs.ts index 8817d0835..96b342b52 100644 --- a/apps/desktop/layer/renderer/src/atoms/server-configs.ts +++ b/apps/desktop/layer/renderer/src/atoms/server-configs.ts @@ -37,3 +37,15 @@ export const getIsInMASReview = () => { serverConfigs?.MAS_IN_REVIEW_VERSION === PKG.version ) } + +export const useIsPaymentEnabled = () => { + const serverConfigs = useServerConfigs() + const isInMASReview = useIsInMASReview() + return !isInMASReview && serverConfigs?.PAYMENT_ENABLED +} + +export const getIsPaymentEnabled = () => { + const serverConfigs = getServerConfigs() + const isInMASReview = getIsInMASReview() + return !isInMASReview && serverConfigs?.PAYMENT_ENABLED +} diff --git a/apps/desktop/layer/renderer/src/components/ui/ai-summary-card/AISummaryCardBase.tsx b/apps/desktop/layer/renderer/src/components/ui/ai-summary-card/AISummaryCardBase.tsx index 12b7dd6c2..77739afbc 100644 --- a/apps/desktop/layer/renderer/src/components/ui/ai-summary-card/AISummaryCardBase.tsx +++ b/apps/desktop/layer/renderer/src/components/ui/ai-summary-card/AISummaryCardBase.tsx @@ -5,7 +5,7 @@ import { isNeedUpgradeError } from "@follow-app/client-sdk" import type { ReactNode } from "react" import { useTranslation } from "react-i18next" -import { useIsInMASReview } from "~/atoms/server-configs" +import { useIsPaymentEnabled } from "~/atoms/server-configs" import { CopyButton } from "~/components/ui/button/CopyButton" import { Markdown } from "~/components/ui/markdown/Markdown" import { useFeature } from "~/hooks/biz/useFeature" @@ -78,12 +78,12 @@ export const AISummaryCardBase: React.FC = ({ }) => { const { t } = useTranslation("app") const aiEnabled = useFeature("ai") - const isInMASReview = useIsInMASReview() + const isPaymentEnabled = useIsPaymentEnabled() const hasContent = !isLoading && content const normalizedErrorCode = typeof errorCode === "number" ? errorCode : undefined const shouldSuggestUpgrade = - normalizedErrorCode !== undefined && !isInMASReview && isNeedUpgradeError(normalizedErrorCode) + normalizedErrorCode !== undefined && isPaymentEnabled && isNeedUpgradeError(normalizedErrorCode) return (
export const PaidBadge = () => { const { t } = useTranslation("settings") const settingModalPresent = useSettingModal() - const isInMASReview = useIsInMASReview() + const isPaymentEnabled = useIsPaymentEnabled() const handleClick = useCallback( (e) => { @@ -71,7 +71,7 @@ export const PaidBadge = () => { [settingModalPresent], ) - if (isInMASReview) { + if (!isPaymentEnabled) { return null } @@ -336,8 +336,8 @@ const FeedInnerForm = ({ }, [feed.title, form]) const role = useUserRole() - const isInMASReview = useIsInMASReview() - const disabledForRole = role === UserRole.Free && !isInMASReview + const isPaymentEnabled = useIsPaymentEnabled() + const disabledForRole = role === UserRole.Free && isPaymentEnabled return (
diff --git a/apps/desktop/layer/renderer/src/modules/settings/control.tsx b/apps/desktop/layer/renderer/src/modules/settings/control.tsx index c446dd333..b3b2f4226 100644 --- a/apps/desktop/layer/renderer/src/modules/settings/control.tsx +++ b/apps/desktop/layer/renderer/src/modules/settings/control.tsx @@ -16,7 +16,7 @@ import { useCallback, useId, useState } from "react" import { useTranslation } from "react-i18next" import { titleCase } from "title-case" -import { useIsInMASReview } from "~/atoms/server-configs" +import { useIsPaymentEnabled } from "~/atoms/server-configs" import { SettingPaidLevels } from "./helper/setting-builder" import { useSetSettingTab } from "./modal/context" @@ -26,7 +26,7 @@ export const PaidBadge: Component<{ }> = ({ paidLevel }) => { const { t } = useTranslation("settings") const setTab = useSetSettingTab() - const isInMASReview = useIsInMASReview() + const isPaymentEnabled = useIsPaymentEnabled() const handleClick = useCallback( (e) => { @@ -36,7 +36,7 @@ export const PaidBadge: Component<{ [setTab], ) - if (isInMASReview) { + if (!isPaymentEnabled) { return null } diff --git a/apps/desktop/layer/renderer/src/modules/settings/tabs/general.tsx b/apps/desktop/layer/renderer/src/modules/settings/tabs/general.tsx index 33bf9ec61..2e1bf7938 100644 --- a/apps/desktop/layer/renderer/src/modules/settings/tabs/general.tsx +++ b/apps/desktop/layer/renderer/src/modules/settings/tabs/general.tsx @@ -14,7 +14,7 @@ import { useTranslation } from "react-i18next" import { currentSupportedLanguages } from "~/@types/constants" import { defaultResources } from "~/@types/default-resource" import { langLoadingLockMapAtom } from "~/atoms/lang" -import { useIsInMASReview } from "~/atoms/server-configs" +import { useIsPaymentEnabled } from "~/atoms/server-configs" import { DEFAULT_ACTION_LANGUAGE, setGeneralSetting, @@ -296,8 +296,8 @@ const TranslationModeSelector = () => { const { t } = useTranslation("settings") const translationMode = useGeneralSettingKey("translationMode") const role = useUserRole() - const isInMASReview = useIsInMASReview() - const disabledForRole = role === UserRole.Free && !isInMASReview + const isPaymentEnabled = useIsPaymentEnabled() + const disabledForRole = role === UserRole.Free && isPaymentEnabled return ( <> diff --git a/apps/desktop/layer/renderer/src/modules/settings/tabs/plan.tsx b/apps/desktop/layer/renderer/src/modules/settings/tabs/plan.tsx index 946b77e50..d90e6a52b 100644 --- a/apps/desktop/layer/renderer/src/modules/settings/tabs/plan.tsx +++ b/apps/desktop/layer/renderer/src/modules/settings/tabs/plan.tsx @@ -10,7 +10,7 @@ import { useTranslation } from "react-i18next" import { toast } from "sonner" import type { PaymentFeature, PaymentPlan } from "~/atoms/server-configs" -import { useIsInMASReview, useServerConfigs } from "~/atoms/server-configs" +import { useIsPaymentEnabled, useServerConfigs } from "~/atoms/server-configs" import { subscription } from "~/lib/auth" const formatFeatureValue = ( @@ -104,7 +104,7 @@ const useCancelPlan = () => { } export function SettingPlan() { - const isInMASReview = useIsInMASReview() + const isPaymentEnabled = useIsPaymentEnabled() const role = useUserRole() const roleEndDate = useRoleEndAt() const [billingPeriod, setBillingPeriod] = useState<"monthly" | "yearly">("yearly") @@ -129,7 +129,7 @@ export function SettingPlan() { return acc + savings }, 0) / plans.filter((plan) => plan.priceInDollars > 0).length, ) - if (isInMASReview) { + if (!isPaymentEnabled) { return null }