feat(core): open desktop directly in subscription landing page (#6661)

This commit is contained in:
CatsJuice
2024-04-22 14:21:58 +00:00
parent 71a5be5385
commit 6ec97b27c4
6 changed files with 50 additions and 7 deletions

View File

@@ -1,6 +1,5 @@
import type {
CreateCheckoutSessionInput,
SubscriptionPlan,
SubscriptionRecurring,
} from '@affine/graphql';
import {
@@ -8,6 +7,7 @@ import {
createCheckoutSessionMutation,
pricesQuery,
resumeSubscriptionMutation,
SubscriptionPlan,
subscriptionQuery,
updateSubscriptionMutation,
} from '@affine/graphql';
@@ -15,10 +15,24 @@ import type { GlobalCacheService } from '@toeverything/infra';
import { Store } from '@toeverything/infra';
import type { SubscriptionType } from '../entities/subscription';
import { getAffineCloudBaseUrl } from '../services/fetch';
import type { GraphQLService } from '../services/graphql';
const SUBSCRIPTION_CACHE_KEY = 'subscription:';
const getDefaultSubscriptionSuccessCallbackLink = (
plan: SubscriptionPlan | null
) => {
const path =
plan === SubscriptionPlan.AI ? '/ai-upgrade-success' : '/upgrade-success';
const urlString = getAffineCloudBaseUrl() + path;
const url = new URL(urlString);
if (environment.isDesktop) {
url.searchParams.set('schema', window.appInfo.schema);
}
return url.toString();
};
export class SubscriptionStore extends Store {
constructor(
private readonly gqlService: GraphQLService,
@@ -112,7 +126,14 @@ export class SubscriptionStore extends Store {
async createCheckoutSession(input: CreateCheckoutSessionInput) {
const data = await this.gqlService.gql({
query: createCheckoutSessionMutation,
variables: { input },
variables: {
input: {
...input,
successCallbackLink:
input.successCallbackLink ||
getDefaultSubscriptionSuccessCallbackLink(input.plan),
},
},
});
return data.createCheckoutSession;
}