From 4e27add5b74028606a1da1e4199df45b2f952f68 Mon Sep 17 00:00:00 2001 From: Domagoj Kriskovic Date: Wed, 2 Apr 2025 12:27:34 +0200 Subject: [PATCH] Add AI assist subscription check in WritefullManager (#24428) * Add AI assist subscription check when updating subscription in WritefullManager * move AI assist check in WritefullController GitOrigin-RevId: 0327e1c19e14e554fb707dc1d2840b7147bdf1d1 --- .../Features/Subscription/SubscriptionLocator.js | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/services/web/app/src/Features/Subscription/SubscriptionLocator.js b/services/web/app/src/Features/Subscription/SubscriptionLocator.js index ee64085d0f..a980399c29 100644 --- a/services/web/app/src/Features/Subscription/SubscriptionLocator.js +++ b/services/web/app/src/Features/Subscription/SubscriptionLocator.js @@ -2,6 +2,10 @@ const { callbackifyAll } = require('@overleaf/promise-utils') const { Subscription } = require('../../models/Subscription') const { DeletedSubscription } = require('../../models/DeletedSubscription') const logger = require('@overleaf/logger') +const { + AI_ADD_ON_CODE, + isStandaloneAiAddOnPlanCode, +} = require('./RecurlyEntities') require('./GroupPlansData') // make sure dynamic group plans are loaded const SubscriptionLocator = { @@ -114,6 +118,15 @@ const SubscriptionLocator = { }).exec() }, + async hasAiAssist(userOrId) { + const userId = SubscriptionLocator._getUserId(userOrId) + const subscription = await Subscription.findOne({ admin_id: userId }).exec() + return Boolean( + isStandaloneAiAddOnPlanCode(subscription?.planCode) || + subscription?.addOns?.some(addOn => addOn.code === AI_ADD_ON_CODE) + ) + }, + _getUserId(userOrId) { if (userOrId && userOrId._id) { return userOrId._id