diff --git a/packages/core/src/api/index.ts b/packages/core/src/api/index.ts index 40070c8eb..4a1da7f50 100644 --- a/packages/core/src/api/index.ts +++ b/packages/core/src/api/index.ts @@ -191,7 +191,7 @@ class Database { tokenManager = new TokenManager(this.kv); mfa = new MFAManager(this.tokenManager); - subscriptions = new Subscriptions(this.tokenManager); + subscriptions = new Subscriptions(this); offers = Offers; debug = new Debug(); pricing = Pricing; diff --git a/packages/core/src/api/subscriptions.ts b/packages/core/src/api/subscriptions.ts index 25f794328..aaf395d01 100644 --- a/packages/core/src/api/subscriptions.ts +++ b/packages/core/src/api/subscriptions.ts @@ -17,9 +17,11 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . */ +import { planToId, SubscriptionPlan } from "../types.js"; import hosts from "../utils/constants.js"; import http from "../utils/http.js"; -import TokenManager from "./token-manager.js"; +import Database from "./index.js"; +import { Period } from "./pricing.js"; export type TransactionStatus = | "completed" @@ -56,10 +58,10 @@ export interface Totals { } export default class Subscriptions { - constructor(private readonly tokenManager: TokenManager) {} + constructor(private readonly db: Database) {} async cancel() { - const token = await this.tokenManager.getAccessToken(); + const token = await this.db.tokenManager.getAccessToken(); if (!token) return; await http.post( `${hosts.SUBSCRIPTIONS_HOST}/subscriptions/v2/cancel`, @@ -69,7 +71,7 @@ export default class Subscriptions { } async pause() { - const token = await this.tokenManager.getAccessToken(); + const token = await this.db.tokenManager.getAccessToken(); if (!token) return; await http.post( `${hosts.SUBSCRIPTIONS_HOST}/subscriptions/v2/pause`, @@ -79,7 +81,7 @@ export default class Subscriptions { } async resume() { - const token = await this.tokenManager.getAccessToken(); + const token = await this.db.tokenManager.getAccessToken(); if (!token) return; await http.post( `${hosts.SUBSCRIPTIONS_HOST}/subscriptions/v2/resume`, @@ -89,7 +91,7 @@ export default class Subscriptions { } async refund() { - const token = await this.tokenManager.getAccessToken(); + const token = await this.db.tokenManager.getAccessToken(); if (!token) return; await http.post( `${hosts.SUBSCRIPTIONS_HOST}/subscriptions/v2/refund`, @@ -99,7 +101,7 @@ export default class Subscriptions { } async transactions(): Promise { - const token = await this.tokenManager.getAccessToken(); + const token = await this.db.tokenManager.getAccessToken(); if (!token) return; return await http.get( `${hosts.SUBSCRIPTIONS_HOST}/subscriptions/v2/transactions`, @@ -108,7 +110,7 @@ export default class Subscriptions { } async invoice(transactionId: string): Promise { - const token = await this.tokenManager.getAccessToken(); + const token = await this.db.tokenManager.getAccessToken(); if (!token) return; const response = await http.get( `${hosts.SUBSCRIPTIONS_HOST}/subscriptions/v2/invoice?transactionId=${transactionId}`, @@ -120,7 +122,7 @@ export default class Subscriptions { async urls(): Promise< { update_payment_method: string; cancel: string } | undefined > { - const token = await this.tokenManager.getAccessToken(); + const token = await this.db.tokenManager.getAccessToken(); if (!token) return; return await http.get( `${hosts.SUBSCRIPTIONS_HOST}/subscriptions/v2/urls`, @@ -129,7 +131,7 @@ export default class Subscriptions { } async redeemCode(code: string) { - const token = await this.tokenManager.getAccessToken(); + const token = await this.db.tokenManager.getAccessToken(); if (!token) return; return http.post.json( `${hosts.SUBSCRIPTIONS_HOST}/subscriptions/redeem`, @@ -139,4 +141,12 @@ export default class Subscriptions { token ); } + + async checkoutUrl(plan: SubscriptionPlan, period: Period) { + const user = await this.db.user.getUser(); + if (!user) return; + return `https://notesnook.com/api/v2/checkout?userId=${user.id}&email=${ + user.email + }&plan=${planToId(plan)}&period=${period}`; + } }