mirror of
https://github.com/penpot/penpot.git
synced 2026-07-31 10:26:18 +00:00
🐛 Fix bad error callback on nitrate checkout (#10886)
This commit is contained in:
parent
31ccfa546f
commit
370e91c3e3
@ -112,20 +112,20 @@
|
||||
(def nitrate-checkout-cancelled-token "nitrate-checkout-cancelled")
|
||||
|
||||
(defn build-nitrate-callback-urls
|
||||
"Build the success/error/cancel callback URLs from a base URL by appending
|
||||
a `subscription` query param identifying the outcome."
|
||||
[base-url]
|
||||
(let [build (fn [token]
|
||||
(dom/append-query-param base-url :subscription token))]
|
||||
{:success-callback (build "subscribed-to-penpot-nitrate")
|
||||
:error-callback (build nitrate-checkout-error-token)
|
||||
:finish-error-callback (build nitrate-checkout-finish-error-token)
|
||||
:cancel-callback (build nitrate-checkout-cancelled-token)}))
|
||||
"Build checkout callback URLs from base URLs by appending a `subscription`
|
||||
query param identifying the outcome."
|
||||
[base-url base-error-url]
|
||||
(let [build (fn [url token]
|
||||
(dom/append-query-param url :subscription token))]
|
||||
{:success-callback (build base-url "subscribed-to-penpot-nitrate")
|
||||
:error-callback (build base-error-url nitrate-checkout-error-token)
|
||||
:finish-error-callback (build base-error-url nitrate-checkout-finish-error-token)
|
||||
:cancel-callback (build base-url nitrate-checkout-cancelled-token)}))
|
||||
|
||||
(defn go-to-buy-nitrate-license
|
||||
[subscription base-url event-origin subscription-mode subscription-start-origin]
|
||||
[subscription base-url base-error-url event-origin subscription-mode subscription-start-origin]
|
||||
(let [{:keys [success-callback error-callback finish-error-callback cancel-callback]}
|
||||
(build-nitrate-callback-urls base-url)
|
||||
(build-nitrate-callback-urls base-url base-error-url)
|
||||
params {:subscription subscription
|
||||
:callback success-callback
|
||||
:error_callback error-callback
|
||||
|
||||
@ -35,6 +35,7 @@
|
||||
(dnt/go-to-buy-nitrate-license
|
||||
"monthly"
|
||||
dnt/go-to-ac-url
|
||||
dnt/go-to-subscription-url
|
||||
"dashboard:plan-confirmation-modal"
|
||||
(if (:subscription profile) "paid" "trial")
|
||||
subscription-start-origin)))
|
||||
|
||||
@ -807,6 +807,7 @@
|
||||
(dnt/go-to-buy-nitrate-license
|
||||
"monthly"
|
||||
(rt/get-current-href)
|
||||
dnt/go-to-subscription-url
|
||||
event-origin
|
||||
(if nitrate-license "paid" "trial")
|
||||
subscription-start-origin)))]
|
||||
|
||||
@ -165,8 +165,8 @@
|
||||
|
||||
(t/deftest build-nitrate-callback-urls-preserves-hash-query
|
||||
(t/testing "appends subscription to an existing query inside the hash route"
|
||||
(let [callbacks (dnt/build-nitrate-callback-urls
|
||||
"https://localhost:3449/#/dashboard/recent?team-id=e6666530-0216-81c8-8007-f17d6087b74f")]
|
||||
(let [base-url "https://localhost:3449/#/dashboard/recent?team-id=e6666530-0216-81c8-8007-f17d6087b74f"
|
||||
callbacks (dnt/build-nitrate-callback-urls base-url base-url)]
|
||||
(t/is (= "https://localhost:3449/#/dashboard/recent?team-id=e6666530-0216-81c8-8007-f17d6087b74f&subscription=subscribed-to-penpot-nitrate"
|
||||
(:success-callback callbacks)))
|
||||
(t/is (= "https://localhost:3449/#/dashboard/recent?team-id=e6666530-0216-81c8-8007-f17d6087b74f&subscription=nitrate-checkout-error"
|
||||
@ -178,25 +178,39 @@
|
||||
|
||||
(t/deftest build-nitrate-callback-urls-adds-hash-query-when-missing
|
||||
(t/testing "adds a hash query when the route has no query string yet"
|
||||
(let [callbacks (dnt/build-nitrate-callback-urls
|
||||
"https://localhost:3449/#/settings/subscriptions")]
|
||||
(let [base-url "https://localhost:3449/#/settings/subscriptions"
|
||||
callbacks (dnt/build-nitrate-callback-urls base-url base-url)]
|
||||
(t/is (= "https://localhost:3449/#/settings/subscriptions?subscription=subscribed-to-penpot-nitrate"
|
||||
(:success-callback callbacks))))))
|
||||
|
||||
(t/deftest build-nitrate-callback-urls-adds-regular-query-without-hash
|
||||
(t/testing "falls back to the regular URL query when there is no hash route"
|
||||
(let [callbacks (dnt/build-nitrate-callback-urls
|
||||
"https://localhost:3449/admin-console/licenses/billing?foo=bar")]
|
||||
(let [base-url "https://localhost:3449/admin-console/licenses/billing?foo=bar"
|
||||
callbacks (dnt/build-nitrate-callback-urls base-url base-url)]
|
||||
(t/is (= "https://localhost:3449/admin-console/licenses/billing?foo=bar&subscription=subscribed-to-penpot-nitrate"
|
||||
(:success-callback callbacks))))))
|
||||
|
||||
(t/deftest build-nitrate-callback-urls-accepts-uri-object
|
||||
(t/testing "accepts a URI object as base url (used by the nitrate-form modal)"
|
||||
(let [callbacks (dnt/build-nitrate-callback-urls
|
||||
(u/uri "https://localhost:3449/#/settings/subscriptions"))]
|
||||
(let [base-url (u/uri "https://localhost:3449/#/settings/subscriptions")
|
||||
callbacks (dnt/build-nitrate-callback-urls base-url base-url)]
|
||||
(t/is (= "https://localhost:3449/#/settings/subscriptions?subscription=nitrate-checkout-error"
|
||||
(:error-callback callbacks))))))
|
||||
|
||||
(t/deftest build-nitrate-callback-urls-uses-separate-error-base
|
||||
(t/testing "error callbacks use base-error-url while success/cancel use base-url"
|
||||
(let [callbacks (dnt/build-nitrate-callback-urls
|
||||
"https://localhost:3449/#/dashboard/recent"
|
||||
"https://localhost:3449/#/settings/subscriptions")]
|
||||
(t/is (= "https://localhost:3449/#/dashboard/recent?subscription=subscribed-to-penpot-nitrate"
|
||||
(:success-callback callbacks)))
|
||||
(t/is (= "https://localhost:3449/#/settings/subscriptions?subscription=nitrate-checkout-error"
|
||||
(:error-callback callbacks)))
|
||||
(t/is (= "https://localhost:3449/#/settings/subscriptions?subscription=nitrate-checkout-finish-error"
|
||||
(:finish-error-callback callbacks)))
|
||||
(t/is (= "https://localhost:3449/#/dashboard/recent?subscription=nitrate-checkout-cancelled"
|
||||
(:cancel-callback callbacks))))))
|
||||
|
||||
(t/deftest go-to-subscription-url-is-a-string
|
||||
(t/testing "must be a string so licenses/billing?callback=... survives query encoding"
|
||||
(t/is (string? dnt/go-to-subscription-url))
|
||||
|
||||
@ -6026,8 +6026,8 @@ msgstr "Payment was not completed. Try again whenever you're ready."
|
||||
#: src/app/main/ui/settings/subscription.cljs:427
|
||||
msgid "subscription.error.nitrate.checkout-failed"
|
||||
msgstr ""
|
||||
"We couldn't start the checkout. Please try again. If the problem persists, "
|
||||
"contact us: support@penpot.app."
|
||||
"The payment was not completed. Please try again. "
|
||||
"If the problem persists, contact us: support@penpot.app."
|
||||
|
||||
#: src/app/main/ui/settings/subscription.cljs:407
|
||||
msgid "subscription.error.nitrate.checkout-finish-failed"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user