Adapt subscription page to selfhost (#9466)

This commit is contained in:
Marina López 2026-05-18 07:39:18 +02:00 committed by GitHub
parent d620c86053
commit 83183e15c6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 53 additions and 21 deletions

View File

@ -99,14 +99,14 @@ export class BasePage {
}
}
static async mockConfigFlags(page, flags) {
static async mockConfigFlags(page, flags, extras = {}) {
const url = "**/js/config.js*";
const config = { penpotFlags: flags.join(" "), ...extras };
const body = Object.entries(config)
.map(([key, value]) => `var ${key} = ${JSON.stringify(value)};`)
.join("\n");
return await page.route(url, (route) =>
route.fulfill({
status: 200,
contentType: "application/javascript",
body: `var penpotFlags = "${flags.join(" ")}";`,
}),
route.fulfill({ status: 200, contentType: "application/javascript", body }),
);
}
@ -128,8 +128,8 @@ export class BasePage {
return BasePage.mockRPC(this.page, path, jsonFilename, options);
}
async mockConfigFlags(flags) {
return BasePage.mockConfigFlags(this.page, flags);
async mockConfigFlags(flags, extras = {}) {
return BasePage.mockConfigFlags(this.page, flags, extras);
}
async mockFileMediaAsset(

View File

@ -4,10 +4,11 @@ import SubscriptionProfilePage from "../pages/SubscriptionProfilePage";
test.beforeEach(async ({ page }) => {
await SubscriptionProfilePage.init(page);
await SubscriptionProfilePage.mockConfigFlags(page, [
"enable-subscriptions",
"disable-onboarding",
]);
await SubscriptionProfilePage.mockConfigFlags(
page,
["enable-subscriptions", "disable-onboarding"],
{ penpotIsSaas: true },
);
});
test.describe("Subscriptions: profile", () => {

View File

@ -156,6 +156,7 @@
(ts/asap #(.reload ^js location true))
true))))
(def saas? (obj/get global "penpotIsSaas" false))
(def terms-of-service-uri (obj/get global "penpotTermsOfServiceURI"))
(def oidc-name (obj/get global "penpotOIDCName"))
(def privacy-policy-uri (obj/get global "penpotPrivacyPolicyURI"))

View File

@ -588,9 +588,15 @@
(case subscription-type
"professional"
[:> plan-card* {:card-title (tr "subscription.settings.professional")
:benefits [(tr "subscription.settings.professional.storage-benefit"),
(tr "subscription.settings.professional.autosave-benefit"),
(tr "subscription.settings.professional.teams-editors-benefit")]}]
:benefits [(if cf/saas?
(tr "subscription.settings.professional.storage-benefit")
(tr "subscription.settings.professional.selfhost.control-over-data")),
(if cf/saas?
(tr "subscription.settings.professional.autosave-benefit")
(tr "subscription.settings.professional.selfhost.unlimited-users")),
(if cf/saas?
(tr "subscription.settings.professional.teams-editors-benefit")
(tr "subscription.settings.professional.selfhost.community-support"))]}]
"unlimited"
(if subscription-is-trial?
@ -660,19 +666,25 @@
[:> plan-card* {:card-title (tr "subscription.settings.professional")
:price-value "$0"
:price-period (tr "subscription.settings.price-editor-month")
:benefits [(tr "subscription.settings.professional.storage-benefit"),
(tr "subscription.settings.professional.autosave-benefit"),
(tr "subscription.settings.professional.teams-editors-benefit")]
:benefits [(if cf/saas?
(tr "subscription.settings.professional.storage-benefit")
(tr "subscription.settings.professional.selfhost.control-over-data")),
(if cf/saas?
(tr "subscription.settings.professional.autosave-benefit")
(tr "subscription.settings.professional.selfhost.unlimited-users")),
(if cf/saas?
(tr "subscription.settings.professional.teams-editors-benefit")
(tr "subscription.settings.professional.selfhost.community-support"))]
:cta-text (tr "subscription.settings.subscribe")
:cta-link (if (and (contains? cf/flags :nitrate) nitrate? (= subscription-type "nitrate"))
(if (:licenses connectivity)
(if (and (:licenses connectivity) (not (:manual nitrate-license)))
dnt/go-to-nitrate-billing
open-cancel-contact-sales-modal)
go-to-payments)
:cta-text-with-icon (tr "subscription.settings.more-information")
:cta-link-with-icon go-to-pricing-page}])
(when (not= subscription-type "unlimited")
(when (and (not= subscription-type "unlimited") cf/saas?)
[:> plan-card* {:card-title (tr "subscription.settings.unlimited")
:card-title-icon i/character-u
:price-value "$7"
@ -688,7 +700,7 @@
:recommended (= subscription-type "professional")
:show-button-cta (= subscription-type "professional")}])
(when (and (not= subscription-type "enterprise") (not (contains? cf/flags :nitrate)))
(when (and (not= subscription-type "enterprise") cf/saas? (not (contains? cf/flags :nitrate)))
[:> plan-card* {:card-title (tr "subscription.settings.enterprise")
:card-title-icon i/character-e
:price-value "$950"

View File

@ -5346,6 +5346,15 @@ msgstr "10GB of storage"
msgid "subscription.settings.professional.teams-editors-benefit"
msgstr "Unlimited teams. Up to 8 editors across your owned teams."
msgid "subscription.settings.professional.selfhost.control-over-data"
msgstr "Complete control over data and infrastructure."
msgid "subscription.settings.professional.selfhost.unlimited-users"
msgstr "Unlimited users, teams and files."
msgid "subscription.settings.professional.selfhost.community-support"
msgstr "All design and prototyping features Community support."
#: src/app/main/ui/settings/subscription.cljs:50
msgid "subscription.settings.recommended"
msgstr "Recommended"

View File

@ -5255,6 +5255,15 @@ msgstr "10 GB de almacenamiento"
msgid "subscription.settings.professional.teams-editors-benefit"
msgstr "Equipos ilimitados. Hasta 8 editores en todos tus equipos."
msgid "subscription.settings.professional.selfhost.control-over-data"
msgstr "Control total sobre los datos y la infraestructura."
msgid "subscription.settings.professional.selfhost.unlimited-users"
msgstr "Número ilimitado de usuarios, equipos y archivos."
msgid "subscription.settings.professional.selfhost.community-support"
msgstr "Todas las funciones de diseño y creación de prototipos. Asistencia de la comunidad."
#: src/app/main/ui/settings/subscription.cljs:50
msgid "subscription.settings.recommended"
msgstr "Recomendado"