🐛 Fix wrong behaviour for unpaid or canceled subscriptions (#6932)

This commit is contained in:
Marina López 2025-07-22 12:31:45 +02:00 committed by GitHub
parent 4f0d3660de
commit f768ffbdad
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 67 additions and 65 deletions

View file

@ -61,7 +61,7 @@
[:> cta-power-up*
{:top-title (tr "subscription.dashboard.power-up.your-subscription")
:top-description (tr "subscription.dashboard.power-up.professional.top-title")
:bottom-description (tr "subscription.dashboard.power-up.professional.bottom-description", subscription-href)
:bottom-description (tr "subscription.dashboard.power-up.professional.bottom", subscription-href)
:has-dropdown true}]
"unlimited"
@ -75,7 +75,7 @@
[:> cta-power-up*
{:top-title (tr "subscription.dashboard.power-up.your-subscription")
:top-description (tr "subscription.dashboard.power-up.unlimited-plan")
:bottom-description (tr "subscription.dashboard.power-up.unlimited.bottom-description", subscription-href)
:bottom-description (tr "subscription.dashboard.power-up.unlimited.bottom", subscription-href)
:has-dropdown true}])
"enterprise"

View file

@ -62,7 +62,7 @@
(mf/defc subscribe-management-dialog
{::mf/register modal/components
::mf/register-as :management-dialog}
[{:keys [subscription-type teams subscribe-to-trial]}]
[{:keys [subscription-type current-subscription teams subscribe-to-trial]}]
(let [subscription-name (if subscribe-to-trial
(if (= subscription-type "unlimited")
@ -127,12 +127,15 @@
(tr "subscription.settings.management.dialog.no-teams")])
(when (and
(or (= subscription-type "professional") (= subscription-type "unlimited"))
(or (and (= subscription-type "professional") (contains? #{"unlimited" "enterprise"} (:type current-subscription)))
(and (= subscription-type "unlimited") (= (:type current-subscription) "enterprise")))
(not (contains? #{"unpaid" "canceled"} (:status current-subscription)))
(not subscribe-to-trial))
[:div {:class (stl/css :modal-text)}
(tr "subscription.settings.management.dialog.downgrade")])
(if (and (= subscription-type "unlimited") subscribe-to-trial)
(if (and (= subscription-type "unlimited")
(or subscribe-to-trial (contains? #{"unpaid" "canceled"} (:status current-subscription))))
[:& fm/form {:on-submit subscribe-to-unlimited
:class (stl/css :seats-form)
:form form}
@ -161,7 +164,7 @@
:on-click handle-close-dialog}]
[:> fm/submit-button*
{:label (tr "subscription.settings.start-trial")
{:label (if subscribe-to-trial (tr "subscription.settings.start-trial") (tr "labels.continue"))
:class (stl/css :primary-button)}]]]]
[:div {:class (stl/css :modal-footer)}
@ -232,6 +235,9 @@
(or (= params-subscription "subscribed-to-penpot-unlimited")
(= params-subscription "subscribed-to-penpot-enterprise"))
success-modal-is-trial?
(-> route :params :query :trial)
subscription
(-> profile :props :subscription)
@ -269,12 +275,13 @@
open-subscription-modal
(mf/use-fn
(mf/deps teams)
(fn [subscription-type]
(fn [subscription-type current-subscription]
(st/emit! (ev/event {::ev/name "open-subscription-modal"
::ev/origin "settings:in-app"}))
(st/emit!
(modal/show :management-dialog
{:subscription-type subscription-type
:current-subscription current-subscription
:teams teams :subscribe-to-trial (not subscription)}))))]
(mf/with-effect []
@ -285,7 +292,7 @@
(mf/with-effect []
(dom/set-html-title (tr "subscription.labels")))
(mf/with-effect [authenticated? show-subscription-success-modal? show-trial-subscription-modal? subscription]
(mf/with-effect [authenticated? show-subscription-success-modal? show-trial-subscription-modal? success-modal-is-trial? subscription]
(when ^boolean authenticated?
(cond
^boolean show-trial-subscription-modal?
@ -297,6 +304,7 @@
{:subscription-type (if (= params-subscription "subscription-to-penpot-unlimited")
"unlimited"
"enterprise")
:current-subscription subscription
:teams teams
:subscribe-to-trial (not subscription)})
(rt/nav :settings-subscription {} {::rt/replace true}))
@ -305,8 +313,12 @@
(st/emit!
(modal/show :subscription-success
{:subscription-name (if (= params-subscription "subscribed-to-penpot-unlimited")
(tr "subscription.settings.unlimited-trial")
(tr "subscription.settings.enterprise-trial"))})
(if (= success-modal-is-trial? "true")
(tr "subscription.settings.unlimited-trial")
(tr "subscription.settings.unlimited"))
(if (= success-modal-is-trial? "true")
(tr "subscription.settings.enterprise-trial")
(tr "subscription.settings.enterprise")))})
(du/update-profile-props {:subscription
(-> subscription
(assoc :type (if (= params-subscription "subscribed-to-penpot-unlimited")
@ -327,7 +339,7 @@
[:> plan-card* {:card-title (tr "subscription.settings.professional")
:benefits [(tr "subscription.settings.professional.projects-files"),
(tr "subscription.settings.professional.teams-editors"),
(tr "subscription.settings.professional.storage")]}]
(tr "subscription.settings.professional.storage-autosave")]}]
"unlimited"
(if subscription-is-trial?
@ -336,7 +348,7 @@
:benefits-title (tr "subscription.settings.benefits.all-professional-benefits")
:benefits [(tr "subscription.settings.unlimited.teams"),
(tr "subscription.settings.unlimited.bill"),
(tr "subscription.settings.unlimited.storage")]
(tr "subscription.settings.unlimited.storage-autosave")]
:cta-text (tr "subscription.settings.manage-your-subscription")
:cta-link go-to-payments
:cta-text-trial (tr "subscription.settings.add-payment-to-continue")
@ -348,7 +360,7 @@
:benefits-title (tr "subscription.settings.benefits.all-unlimited-benefits")
:benefits [(tr "subscription.settings.unlimited.teams"),
(tr "subscription.settings.unlimited.bill"),
(tr "subscription.settings.unlimited.storage")]
(tr "subscription.settings.unlimited.storage-autosave")]
:cta-text (tr "subscription.settings.manage-your-subscription")
:cta-link go-to-payments
:editors (-> profile :props :subscription :quantity)}])
@ -358,22 +370,22 @@
[:> plan-card* {:card-title (tr "subscription.settings.enterprise-trial")
:card-title-icon i/character-e
:benefits-title (tr "subscription.settings.benefits.all-professional-benefits")
:benefits [(tr "subscription.settings.enterprise.support"),
(tr "subscription.settings.enterprise.security"),
(tr "subscription.settings.enterprise.logs")]
:benefits [(tr "subscription.settings.enterprise.security"),
(tr "subscription.settings.enterprise.capped-bill"),
(tr "subscription.settings.enterprise.unlimited-storage")]
:cta-text (tr "subscription.settings.manage-your-subscription")
:cta-link go-to-payments}]
[:> plan-card* {:card-title (tr "subscription.settings.enterprise")
:card-title-icon i/character-e
:benefits-title (tr "subscription.settings.benefits.all-professional-benefits")
:benefits [(tr "subscription.settings.enterprise.support"),
(tr "subscription.settings.enterprise.security"),
(tr "subscription.settings.enterprise.logs")]
:benefits [(tr "subscription.settings.enterprise.security"),
(tr "subscription.settings.enterprise.capped-bill"),
(tr "subscription.settings.enterprise.unlimited-storage")]
:cta-text (tr "subscription.settings.manage-your-subscription")
:cta-link go-to-payments}]))
[:div {:class (stl/css :membership-container)}
(when subscribed-since
(when (and subscribed-since (not= subscription-type "professional"))
[:div {:class (stl/css :membership)}
[:span {:class (stl/css :subscription-member)} i/crown]
[:span {:class (stl/css :membership-date)}
@ -392,7 +404,7 @@
:price-period (tr "subscription.settings.price-editor-month")
:benefits [(tr "subscription.settings.professional.projects-files"),
(tr "subscription.settings.professional.teams-editors"),
(tr "subscription.settings.professional.storage")]
(tr "subscription.settings.professional.storage-autosave")]
:cta-text (tr "subscription.settings.subscribe")
:cta-link #(open-subscription-modal "professional")
:cta-text-with-icon (tr "subscription.settings.more-information")
@ -406,9 +418,9 @@
:benefits-title (tr "subscription.settings.benefits.all-professional-benefits")
:benefits [(tr "subscription.settings.unlimited.teams"),
(tr "subscription.settings.unlimited.bill"),
(tr "subscription.settings.unlimited.storage")]
(tr "subscription.settings.unlimited.storage-autosave")]
:cta-text (if subscription (tr "subscription.settings.subscribe") (tr "subscription.settings.try-it-free"))
:cta-link #(open-subscription-modal "unlimited")
:cta-link #(open-subscription-modal "unlimited" subscription-type)
:cta-text-with-icon (tr "subscription.settings.more-information")
:cta-link-with-icon go-to-pricing-page}])
@ -417,10 +429,10 @@
:card-title-icon i/character-e
:price-value "$950"
:price-period (tr "subscription.settings.price-organization-month")
:benefits-title (tr "subscription.settings.benefits.all-professional-benefits")
:benefits [(tr "subscription.settings.enterprise.support"),
(tr "subscription.settings.enterprise.security"),
(tr "subscription.settings.enterprise.logs")]
:benefits-title (tr "subscription.settings.benefits.all-unlimited-benefits")
:benefits [(tr "subscription.settings.enterprise.security"),
(tr "subscription.settings.enterprise.capped-bill"),
(tr "subscription.settings.enterprise.unlimited-storage")]
:cta-text (if subscription (tr "subscription.settings.subscribe") (tr "subscription.settings.try-it-free"))
:cta-link #(open-subscription-modal "enterprise")
:cta-text-with-icon (tr "subscription.settings.more-information")

View file

@ -4320,10 +4320,10 @@ msgstr "Advanced security, activity logs, dedicated support and more."
#: src/app/main/ui/dashboard/subscription.cljs:60
#, markdown
msgid "subscription.dashboard.power-up.professional.bottom-description"
msgid "subscription.dashboard.power-up.professional.bottom"
msgstr ""
"Get extra editors and storage, file backup and more with the Unlimited "
"plan[Power up|target:self](%s)"
"Get extra editors and storage, file recovery and more with the Unlimited "
"plan. [Power up|target:self](%s)"
#: src/app/main/ui/dashboard/subscription.cljs:59
msgid "subscription.dashboard.power-up.professional.top-title"
@ -4357,10 +4357,10 @@ msgstr "Enterprise plan (trial)"
#: src/app/main/ui/dashboard/subscription.cljs:74
#, markdown
msgid "subscription.dashboard.power-up.unlimited.bottom-description"
msgid "subscription.dashboard.power-up.unlimited.bottom"
msgstr ""
"Get advanced security, activity logs, dedicated support and more. Take a "
"look to the[Enterprise plan.|target:self](%s)"
"Get extra editors, more storage and backup, advanced security and more. "
"[Take a look to the Enterprise plan.|target:self](%s)"
#: src/app/main/ui/dashboard/subscription.cljs:70
#, unused
@ -4414,16 +4414,16 @@ msgid "subscription.settings.enterprise-trial"
msgstr "Enterprise (trial)"
#: src/app/main/ui/settings/subscription.cljs:271, src/app/main/ui/settings/subscription.cljs:320
msgid "subscription.settings.enterprise.logs"
msgstr "Activity logs"
msgid "subscription.settings.enterprise.unlimited-storage"
msgstr "Unlimited storage and 90-day autosave versions and file recovery"
#: src/app/main/ui/settings/subscription.cljs:270, src/app/main/ui/settings/subscription.cljs:319
msgid "subscription.settings.enterprise.security"
msgstr "Advanced security"
#: src/app/main/ui/settings/subscription.cljs:269, src/app/main/ui/settings/subscription.cljs:318
msgid "subscription.settings.enterprise.support"
msgstr "Dedicated support"
msgid "subscription.settings.enterprise.capped-bill"
msgstr "Capped monthly bill"
#: src/app/main/ui/dashboard/subscription.cljs:114, src/app/main/ui/settings/subscription.cljs:251, src/app/main/ui/settings/subscription.cljs:262, src/app/main/ui/settings/subscription.cljs:272
msgid "subscription.settings.manage-your-subscription"
@ -4492,8 +4492,8 @@ msgid "subscription.settings.professional.projects-files"
msgstr "Unlimited projects, files and drafts"
#: src/app/main/ui/settings/subscription.cljs:241, src/app/main/ui/settings/subscription.cljs:292
msgid "subscription.settings.professional.storage"
msgstr "10GB of storage and 7-day autosave versions"
msgid "subscription.settings.professional.storage-autosave"
msgstr "10GB of storage and 7-day autosave versions and file recovery"
#: src/app/main/ui/settings/subscription.cljs:240, src/app/main/ui/settings/subscription.cljs:291
msgid "subscription.settings.professional.teams-editors"
@ -4537,11 +4537,6 @@ msgstr "You've been supporting us with this plan since: %s"
msgid "subscription.settings.try-it-free"
msgstr "Try it free for 14 days"
#: src/app/main/ui/settings/subscription.cljs:119
#, unused
msgid "subscription.settings.ulimited.try-it-free"
msgstr "Try it free for 14 days"
#: src/app/main/ui/dashboard/subscription.cljs:108, src/app/main/ui/settings/subscription.cljs:56, src/app/main/ui/settings/subscription.cljs:256, src/app/main/ui/settings/subscription.cljs:299
msgid "subscription.settings.unlimited"
msgstr "Unlimited"
@ -4555,8 +4550,8 @@ msgid "subscription.settings.unlimited.bill"
msgstr "Capped monthly bill"
#: src/app/main/ui/settings/subscription.cljs:250, src/app/main/ui/settings/subscription.cljs:261, src/app/main/ui/settings/subscription.cljs:306
msgid "subscription.settings.unlimited.storage"
msgstr "25GB of storage and 30-day autosave versions and file backup"
msgid "subscription.settings.unlimited.storage-autosave"
msgstr "25GB of storage and 30-day autosave versions and file recovery"
#: src/app/main/ui/settings/subscription.cljs:248, src/app/main/ui/settings/subscription.cljs:259, src/app/main/ui/settings/subscription.cljs:304
msgid "subscription.settings.unlimited.teams"

View file

@ -4347,9 +4347,9 @@ msgstr "Seguridad avanzada, registros de actividad, asistencia dedicada y mucho
#: src/app/main/ui/dashboard/subscription.cljs:60
#, markdown
msgid "subscription.dashboard.power-up.professional.bottom-description"
msgid "subscription.dashboard.power-up.professional.bottom"
msgstr ""
"Consigue editores y almacenamiento adicionales, copias de seguridad de "
"Consigue editores y almacenamiento adicionales, recuperación de "
"archivos y mucho más con el Plan Unlimited[Mejóralo|target:self](%s)"
#: src/app/main/ui/dashboard/subscription.cljs:59
@ -4388,10 +4388,10 @@ msgstr "Plan Unlimited"
#: src/app/main/ui/dashboard/subscription.cljs:74
#, markdown
msgid "subscription.dashboard.power-up.unlimited.bottom-description"
msgid "subscription.dashboard.power-up.unlimited.bottom"
msgstr ""
"Obtenga seguridad avanzada, registros de actividad, asistencia dedicada y "
"mucho más. Echa un ojo al[Plan Enterprise|target:self](%s)"
"Consigue editores adicionales, más almacenamiento y copias de seguridad, seguridad avanzada y mucho más. "
"[Echa un ojo al Plan Enterprise|target:self](%s)"
#: src/app/main/ui/dashboard/subscription.cljs:70
#, unused
@ -4442,16 +4442,16 @@ msgid "subscription.settings.enterprise-trial"
msgstr "Enterprise (prueba)"
#: src/app/main/ui/settings/subscription.cljs:271, src/app/main/ui/settings/subscription.cljs:320
msgid "subscription.settings.enterprise.logs"
msgstr "Registros de actividad"
msgid "subscription.settings.enterprise.unlimited-storage"
msgstr "Almacenamiento ilimitado y versiones de autoguardado de 90 días y recuperación de archivos"
#: src/app/main/ui/settings/subscription.cljs:270, src/app/main/ui/settings/subscription.cljs:319
msgid "subscription.settings.enterprise.security"
msgstr "Seguridad avanzada"
#: src/app/main/ui/settings/subscription.cljs:269, src/app/main/ui/settings/subscription.cljs:318
msgid "subscription.settings.enterprise.support"
msgstr "Apoyo específico"
msgid "subscription.settings.enterprise.capped-bill"
msgstr "Factura mensual limitada"
#: src/app/main/ui/dashboard/subscription.cljs:114, src/app/main/ui/settings/subscription.cljs:251, src/app/main/ui/settings/subscription.cljs:262, src/app/main/ui/settings/subscription.cljs:272
msgid "subscription.settings.manage-your-subscription"
@ -4516,8 +4516,8 @@ msgid "subscription.settings.professional.projects-files"
msgstr "Proyectos, archivos y borradores ilimitados"
#: src/app/main/ui/settings/subscription.cljs:241, src/app/main/ui/settings/subscription.cljs:292
msgid "subscription.settings.professional.storage"
msgstr "10 GB de almacenamiento y versiones de autoguardado de 7 días"
msgid "subscription.settings.professional.storage-autosave"
msgstr "10 GB de almacenamiento y versiones de autoguardado de 7 días y recuperación de archivos"
#: src/app/main/ui/settings/subscription.cljs:240, src/app/main/ui/settings/subscription.cljs:291
msgid "subscription.settings.professional.teams-editors"
@ -4560,11 +4560,6 @@ msgstr "Nos has estado apoyando con este plan desde: %s"
msgid "subscription.settings.try-it-free"
msgstr "Pruébalo gratis durante 14 días"
#: src/app/main/ui/settings/subscription.cljs:119
#, unused
msgid "subscription.settings.ulimited.try-it-free"
msgstr "Pruébalo gratis durante 14 días"
#: src/app/main/ui/dashboard/subscription.cljs:108, src/app/main/ui/settings/subscription.cljs:56, src/app/main/ui/settings/subscription.cljs:256, src/app/main/ui/settings/subscription.cljs:299
msgid "subscription.settings.unlimited"
msgstr "Unlimited"
@ -4578,10 +4573,10 @@ msgid "subscription.settings.unlimited.bill"
msgstr "Factura mensual limitada"
#: src/app/main/ui/settings/subscription.cljs:250, src/app/main/ui/settings/subscription.cljs:261, src/app/main/ui/settings/subscription.cljs:306
msgid "subscription.settings.unlimited.storage"
msgid "subscription.settings.unlimited.storage-autosave"
msgstr ""
"25 GB de almacenamiento y 30 días de autoguardado de versiones y copias de "
"seguridad de archivos"
"25 GB de almacenamiento y 30 días de autoguardado de versiones y recuperación "
"de archivos"
#: src/app/main/ui/settings/subscription.cljs:248, src/app/main/ui/settings/subscription.cljs:259, src/app/main/ui/settings/subscription.cljs:304
msgid "subscription.settings.unlimited.teams"