mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-22 06:07:59 +00:00
Merge pull request #22024 from overleaf/em-standalone-ai-add-on-is-not-premium
Do not hide upgrade buttons when on standalone AI add-on GitOrigin-RevId: ec5cf42c051745d5ca1dff57f7cd27a89c21a6a9
This commit is contained in:
parent
0bd8729cc1
commit
0769998dd7
11 changed files with 46 additions and 19 deletions
|
@ -45,6 +45,9 @@ const OnboardingDataCollectionManager = require('../OnboardingDataCollection/Onb
|
|||
const UserUpdater = require('../User/UserUpdater')
|
||||
const Modules = require('../../infrastructure/Modules')
|
||||
const UserGetter = require('../User/UserGetter')
|
||||
const {
|
||||
isStandaloneAiAddOnPlanCode,
|
||||
} = require('../Subscription/RecurlyEntities')
|
||||
|
||||
/**
|
||||
* @import { GetProjectsRequest, GetProjectsResponse, Project } from "./types"
|
||||
|
@ -612,12 +615,15 @@ const _ProjectController = {
|
|||
const userInNonIndividualSub =
|
||||
userIsMemberOfGroupSubscription || userHasInstitutionLicence
|
||||
|
||||
const userHasPremiumSub =
|
||||
subscription && !isStandaloneAiAddOnPlanCode(subscription.planCode)
|
||||
|
||||
// Persistent upgrade prompts
|
||||
// in header & in share project modal
|
||||
const showUpgradePrompt =
|
||||
Features.hasFeature('saas') &&
|
||||
userId &&
|
||||
!subscription &&
|
||||
!userHasPremiumSub &&
|
||||
!userInNonIndividualSub
|
||||
|
||||
let aiFeaturesAllowed = false
|
||||
|
|
|
@ -392,7 +392,10 @@ async function projectListPage(req, res, next) {
|
|||
let showLATAMBanner = false
|
||||
let recommendedCurrency
|
||||
|
||||
if (usersBestSubscription?.type === 'free') {
|
||||
if (
|
||||
usersBestSubscription?.type === 'free' ||
|
||||
usersBestSubscription?.type === 'standalone-ai-add-on'
|
||||
) {
|
||||
const latamGeoPricingAssignment =
|
||||
await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
const Settings = require('@overleaf/settings')
|
||||
const RecurlyWrapper = require('./RecurlyWrapper')
|
||||
const PlansLocator = require('./PlansLocator')
|
||||
const { isStandaloneAiAddOnPlanCode } = require('./RecurlyEntities')
|
||||
const SubscriptionFormatters = require('./SubscriptionFormatters')
|
||||
const SubscriptionLocator = require('./SubscriptionLocator')
|
||||
const SubscriptionUpdater = require('./SubscriptionUpdater')
|
||||
|
@ -419,16 +420,22 @@ async function getBestSubscription(user) {
|
|||
}
|
||||
}
|
||||
if (individualSubscription && !individualSubscription.groupPlan) {
|
||||
const plan = PlansLocator.findLocalPlanInSettings(
|
||||
individualSubscription.planCode
|
||||
)
|
||||
if (_isPlanEqualOrBetter(plan, bestSubscription.plan)) {
|
||||
const remainingTrialDays = _getRemainingTrialDays(individualSubscription)
|
||||
bestSubscription = {
|
||||
type: 'individual',
|
||||
subscription: individualSubscription,
|
||||
plan,
|
||||
remainingTrialDays,
|
||||
if (isStandaloneAiAddOnPlanCode(individualSubscription.planCode)) {
|
||||
bestSubscription = { type: 'standalone-ai-add-on' }
|
||||
} else {
|
||||
const plan = PlansLocator.findLocalPlanInSettings(
|
||||
individualSubscription.planCode
|
||||
)
|
||||
if (_isPlanEqualOrBetter(plan, bestSubscription.plan)) {
|
||||
const remainingTrialDays = _getRemainingTrialDays(
|
||||
individualSubscription
|
||||
)
|
||||
bestSubscription = {
|
||||
type: 'individual',
|
||||
subscription: individualSubscription,
|
||||
plan,
|
||||
remainingTrialDays,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ block append meta
|
|||
- const staffAccess = sessionUser?.staffAccess
|
||||
- const canDisplaySplitTestMenu = hasFeature('saas') && (canDisplayAdminMenu || staffAccess?.splitTestMetrics || staffAccess?.splitTestManagement)
|
||||
- const canDisplaySurveyMenu = hasFeature('saas') && canDisplayAdminMenu
|
||||
- const enableUpgradeButton = projectDashboardReact && usersBestSubscription && usersBestSubscription.type === 'free'
|
||||
- const enableUpgradeButton = projectDashboardReact && usersBestSubscription && (usersBestSubscription.type === 'free' || usersBestSubscription.type === 'standalone-ai-add-on')
|
||||
- const showSignUpLink = hasFeature('registration-page')
|
||||
|
||||
meta(name="ol-navbar" data-type="json" content={
|
||||
|
|
|
@ -12,7 +12,7 @@ nav.navbar.navbar-default.navbar-main.navbar-expand-lg(class={
|
|||
else
|
||||
a(href='/', aria-label=settings.appName).navbar-brand
|
||||
|
||||
- var enableUpgradeButton = projectDashboardReact && usersBestSubscription && usersBestSubscription.type === 'free'
|
||||
- var enableUpgradeButton = projectDashboardReact && usersBestSubscription && (usersBestSubscription.type === 'free' || usersBestSubscription.type === 'standalone-ai-add-on')
|
||||
if (enableUpgradeButton)
|
||||
a.btn.btn-primary.me-2.d-md-none(
|
||||
href="/user/subscription/plans"
|
||||
|
|
|
@ -9,7 +9,7 @@ nav.navbar.navbar-default.navbar-main
|
|||
aria-label="Toggle " + translate('navigation')
|
||||
)
|
||||
i.fa.fa-bars(aria-hidden="true")
|
||||
- var enableUpgradeButton = projectDashboardReact && usersBestSubscription && usersBestSubscription.type === 'free'
|
||||
- var enableUpgradeButton = projectDashboardReact && usersBestSubscription && (usersBestSubscription.type === 'free' || usersBestSubscription.type === 'standalone-ai-add-on')
|
||||
if (enableUpgradeButton)
|
||||
a.btn.btn-primary.pull-right.me-2.visible-xs(
|
||||
href="/user/subscription/plans"
|
||||
|
|
|
@ -9,7 +9,7 @@ nav.navbar.navbar-default.navbar-main.website-redesign-navbar
|
|||
aria-label="Toggle " + translate('navigation')
|
||||
)
|
||||
i.fa.fa-bars(aria-hidden="true")
|
||||
- var enableUpgradeButton = projectDashboardReact && usersBestSubscription && usersBestSubscription.type === 'free'
|
||||
- var enableUpgradeButton = projectDashboardReact && usersBestSubscription && (usersBestSubscription.type === 'free' || usersBestSubscription.type === 'standalone-ai-add-on')
|
||||
if (enableUpgradeButton)
|
||||
a.btn.btn-primary.pull-right.me-2.visible-xs(
|
||||
href="/user/subscription/plans"
|
||||
|
|
|
@ -12,7 +12,7 @@ function CurrentPlanWidget() {
|
|||
}
|
||||
|
||||
const { type } = usersBestSubscription
|
||||
const isFreePlan = type === 'free'
|
||||
const isFreePlan = type === 'free' || type === 'standalone-ai-add-on'
|
||||
const isIndividualPlan = type === 'individual'
|
||||
const isGroupPlan = type === 'group'
|
||||
const isCommonsPlan = type === 'commons'
|
||||
|
|
|
@ -61,7 +61,9 @@ function isOnFreeOrIndividualPlan() {
|
|||
return false
|
||||
}
|
||||
const { type } = subscription
|
||||
return type === 'free' || type === 'individual'
|
||||
return (
|
||||
type === 'free' || type === 'individual' || type === 'standalone-ai-add-on'
|
||||
)
|
||||
}
|
||||
|
||||
const showConfirmEmail = (userEmail: UserEmailData) => {
|
||||
|
|
|
@ -28,6 +28,8 @@ describe('ProjectController', function () {
|
|||
},
|
||||
siteUrl: 'https://overleaf.com',
|
||||
algolia: {},
|
||||
plans: [],
|
||||
features: {},
|
||||
}
|
||||
this.brandVariationDetails = {
|
||||
id: '12',
|
||||
|
|
|
@ -37,4 +37,11 @@ type PaidSubscription =
|
|||
| GroupPlanSubscription
|
||||
| CommonsPlanSubscription
|
||||
|
||||
export type Subscription = FreeSubscription | PaidSubscription
|
||||
export type StandaloneAiAddOnSubscription = {
|
||||
type: 'standalone-ai-add-on'
|
||||
}
|
||||
|
||||
export type Subscription =
|
||||
| FreeSubscription
|
||||
| PaidSubscription
|
||||
| StandaloneAiAddOnSubscription
|
||||
|
|
Loading…
Add table
Reference in a new issue