diff --git a/frontend/src/app/main/ui/dashboard/subscription.cljs b/frontend/src/app/main/ui/dashboard/subscription.cljs index 6e1b5555ba..bd33bfa998 100644 --- a/frontend/src/app/main/ui/dashboard/subscription.cljs +++ b/frontend/src/app/main/ui/dashboard/subscription.cljs @@ -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* diff --git a/frontend/src/app/main/ui/settings/subscription.cljs b/frontend/src/app/main/ui/settings/subscription.cljs index 52923640cb..86838c5790 100644 --- a/frontend/src/app/main/ui/settings/subscription.cljs +++ b/frontend/src/app/main/ui/settings/subscription.cljs @@ -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])]))