Improve nitrate manual renew banner

This commit is contained in:
Marina López 2026-06-15 09:24:47 +02:00
parent 92cf0cda7b
commit 98e04bc5f0
2 changed files with 47 additions and 31 deletions

View File

@ -7,7 +7,9 @@
[app.common.time :as ct]
[app.config :as cf]
[app.main.data.event :as ev]
[app.main.data.modal :as modal]
[app.main.data.nitrate :as dnt]
[app.main.refs :as refs]
[app.main.router :as rt]
[app.main.store :as st]
[app.main.ui.components.dropdown-menu :refer [dropdown-menu-item*]]
@ -119,24 +121,39 @@
(mf/defc nitrate-sidebar*
[{:keys [profile teams]}]
(let [nitrate? (dnt/is-valid-license? profile)
nitrate-license (:subscription profile)
manual-license? (:manual nitrate-license)
(let [nitrate? (dnt/is-valid-license? profile)
nitrate-license (:subscription profile)
manual-license? (:manual nitrate-license)
subscription-warning* (mf/use-state nil)
subscription-warning (deref subscription-warning*)
days-until-expiry (or (:days-until-expiry subscription-warning)
(:daysUntilExpiry subscription-warning)
(:days-from-expiry subscription-warning)
(:daysFromExpiry subscription-warning))
expiration-date (or (:expiration-date subscription-warning)
(:expirationDate subscription-warning))
expiration-date-text (when expiration-date
(ct/format-inst expiration-date "MMMM d"))
show-subscription-warning? (and manual-license?
(some? days-until-expiry)
(some? expiration-date-text))
subscription-type (if nitrate? (:type nitrate-license) (get-subscription-type (-> profile :props :subscription)))
subscription-warning (deref subscription-warning*)
route (mf/deref refs/route)
route-name (get-in route [:data :name])
days-until-expiry
(or (:days-until-expiry subscription-warning)
(:daysUntilExpiry subscription-warning)
(:days-from-expiry subscription-warning)
(:daysFromExpiry subscription-warning))
expiration-date
(or (:expiration-date subscription-warning)
(:expirationDate subscription-warning))
expiration-date-text
(when expiration-date
(ct/format-inst expiration-date "MMMM d"))
show-subscription-warning?
(and nitrate?
manual-license?
(not= route-name :settings-subscription)
(some? days-until-expiry)
(some? expiration-date-text))
subscription-type
(if nitrate? (:type nitrate-license) (get-subscription-type (-> profile :props :subscription)))
teams-loaded? (seq teams)
no-orgs-created? (mf/with-memo [teams]
(and (seq teams)
(->> teams
@ -154,8 +171,8 @@
handle-go-to-cc
(mf/use-fn dnt/go-to-nitrate-ac-create-org)
handle-go-to-subscription
(mf/use-fn #(st/emit! (rt/nav :settings-subscription)))]
handle-open-renew-modal
(mf/use-fn #(st/emit! (modal/show :nitrate-code-activation {:renew? true})))]
(mf/with-effect [manual-license?]
(if manual-license?
@ -208,7 +225,7 @@
[:> button* {:variant "primary"
:type "button"
:class (stl/css :nitrate-bottom-button)
:on-click handle-go-to-subscription}
:on-click handle-open-renew-modal}
(tr "subscription.dashboard.banner.renew")]]])]))
(mf/defc nitrate-current-plan*

View File

@ -91,18 +91,17 @@
:bottom-link (not (or has-trial? code-action)))
:on-click cta-link} cta-text])
(when code-action
[:button {:class (stl/css-case :cta-button true
:activate-by-code (= code-action :activate)
:renew-by-code (= code-action :renovate)
:bottom-link (= code-action :renovate))
:on-click (cond
(= code-action :activate)
#(st/emit! (modal/show {:type :nitrate-code-activation}))
(= code-action :renovate)
#(st/emit! (modal/show :nitrate-code-activation {:renew? true})))}
(if (= code-action :activate)
(tr "subscription.settings.activate-by-code")
(tr "nitrate.subscription.settings.renew-with-code"))])
(if (= code-action :activate)
[:button {:class (stl/css :cta-button :activate-by-code)
:on-click #(st/emit! (modal/show {:type :nitrate-code-activation}))}
(tr "subscription.settings.activate-by-code")]
[:> button* {:variant "primary"
:type "button"
:class (stl/css :renew-by-code :bottom-link)
:on-click #(st/emit! (modal/show :nitrate-code-activation {:renew? true}))}
(tr "nitrate.subscription.settings.renew-with-code")]))
(when inline-error
[:p {:class (stl/css :inline-error)} inline-error])]))