diff --git a/apps/web/actions/api/server/subscriptions.ts b/apps/web/actions/api/server/subscriptions.ts index 8c8c077..e9d218d 100644 --- a/apps/web/actions/api/server/subscriptions.ts +++ b/apps/web/actions/api/server/subscriptions.ts @@ -51,6 +51,14 @@ export async function getSubscriptionPrices( return wrapServerAction(() => service.getSubscriptionPrices(...variables)); } +export async function getSubscriptions( + ...variables: Parameters +) { + const service = await getService(); + + return wrapServerAction(() => service.getSubscriptions(...variables)); +} + export async function getSubscriptionSettings( ...variables: Parameters ) { diff --git a/apps/web/actions/api/subscriptions.ts b/apps/web/actions/api/subscriptions.ts index 25ad537..eabd168 100644 --- a/apps/web/actions/api/subscriptions.ts +++ b/apps/web/actions/api/subscriptions.ts @@ -2,6 +2,7 @@ import * as subscriptions from './server/subscriptions'; import { wrapClientAction } from '@/utils/actions'; export const getSubscription = wrapClientAction(subscriptions.getSubscription); +export const getSubscriptions = wrapClientAction(subscriptions.getSubscriptions); export const getSubscriptionSettings = wrapClientAction(subscriptions.getSubscriptionSettings); export const getSubscriptionPrices = wrapClientAction(subscriptions.getSubscriptionPrices); export const getSubscriptionHistory = wrapClientAction(subscriptions.getSubscriptionHistory); diff --git a/apps/web/app/(main)/pro/page.tsx b/apps/web/app/(main)/pro/page.tsx index 66ebcc7..e5bad74 100644 --- a/apps/web/app/(main)/pro/page.tsx +++ b/apps/web/app/(main)/pro/page.tsx @@ -1,4 +1,8 @@ -import { getSubscription, getSubscriptionPrices } from '@/actions/api/subscriptions'; +import { + getSubscription, + getSubscriptionPrices, + getSubscriptions, +} from '@/actions/api/subscriptions'; import { getSessionUser } from '@/actions/session'; import { TryFreeButton } from '@/components/subscription'; import { env } from '@/config/env'; @@ -10,11 +14,15 @@ import Link from 'next/link'; export default async function ProPage() { const { telegramId } = await getSessionUser(); - const { hasActiveSubscription, usedTrialSubscription } = await getSubscription({ + const { hasActiveSubscription } = await getSubscription({ telegramId, }); - const canUseTrial = !usedTrialSubscription; + const { subscriptions } = await getSubscriptions({ + filters: { customer: { telegramId: { eq: telegramId } } }, + }); + + const canUseTrial = !subscriptions?.length; const { subscriptionPrices = [] } = await getSubscriptionPrices({ filters: { diff --git a/packages/graphql/api/subscriptions.ts b/packages/graphql/api/subscriptions.ts index b86df32..8d8a7f3 100644 --- a/packages/graphql/api/subscriptions.ts +++ b/packages/graphql/api/subscriptions.ts @@ -122,8 +122,8 @@ export class SubscriptionsService extends BaseService { const { customer } = await this.checkIsBanned(); // Проверяем, не использовал ли пользователь уже пробный период - const hasUserTrial = await this.usedTrialSubscription(); - if (hasUserTrial) throw new Error(ERRORS.TRIAL_PERIOD_ALREADY_USED); + const hasTrial = await this.hasTrialSubscription(); + if (hasTrial) throw new Error(ERRORS.TRIAL_PERIOD_ALREADY_USED); // Получаем цены подписки для определения длительности пробного периода const { subscriptionPrices } = await this.getSubscriptionPrices({ @@ -199,15 +199,12 @@ export class SubscriptionsService extends BaseService { const { maxOrdersPerMonth, remainingOrdersCount } = await this.getRemainingOrdersCount(); - const usedTrialSubscription = await this.usedTrialSubscription(); - return { hasActiveSubscription, maxOrdersPerMonth, remainingDays, remainingOrdersCount, subscription, - usedTrialSubscription, }; } @@ -296,7 +293,7 @@ export class SubscriptionsService extends BaseService { return mutationResult.data; } - async usedTrialSubscription() { + async hasTrialSubscription() { const { customer } = await this._getUser(); const { subscriptionHistories } = await this.getSubscriptionHistory({