Update PayPal return URI handler for redirect landing page

Co-authored-by: ayumi-signal <143036029+ayumi-signal@users.noreply.github.com>
This commit is contained in:
automated-signal
2026-02-12 14:34:40 -06:00
committed by GitHub
parent 7b22a96ad6
commit 284d51e6e1

View File

@@ -57,12 +57,19 @@ type AllHostnamePatterns =
| 'start-call-lobby'
| 'show-window'
| 'cancel-presenting'
| 'donation-paypal-approved'
| 'donation-paypal-canceled'
| 'donation-validation-complete'
| 'paypal'
| ':captchaId(.+)'
| '';
/**
* Valid actions for sgnl://paypal
*/
enum PaypalAction {
Approve = 'approve',
Cancel = 'cancel',
}
/**
* Uses the `URLPattern` syntax to match URLs.
*/
@@ -600,13 +607,13 @@ export const donationValidationCompleteRoute = _route(
* donationPaypalApprovedRoute.toWebURL({
* returnToken: "123",
* })
* // URL { "sgnl://donation-paypal-approved?returnToken=123" }
* // URL { "sgnl://paypal?action=approve&returnToken=123" }
* ```
*/
export const donationPaypalApprovedRoute = _route('donationPaypalApproved', {
patterns: [
_pattern('sgnl:', 'donation-paypal-approved', '{/}?', {
search: ':params',
_pattern('sgnl:', 'paypal', '{/}?', {
search: `action=${PaypalAction.Approve}:params*`,
}),
],
schema: z.object({
@@ -616,6 +623,7 @@ export const donationPaypalApprovedRoute = _route('donationPaypalApproved', {
}),
parse(result) {
const params = new URLSearchParams(result.search.groups.params);
// additional params from PayPal
return {
payerId: params.get('PayerID'),
paymentToken: params.get('token'),
@@ -623,9 +631,13 @@ export const donationPaypalApprovedRoute = _route('donationPaypalApproved', {
};
},
toWebUrl(args) {
const params = new URLSearchParams({ returnToken: args.returnToken });
const params = new URLSearchParams({
action: PaypalAction.Approve,
returnToken: args.returnToken,
});
// Redirects to sgnl://paypal?{params}
return new URL(
`https://signaldonations.org/redirect/donation-paypal-approved?${params.toString()}`
`https://signaldonations.org/desktop/paypal?${params.toString()}`
);
},
});
@@ -637,13 +649,13 @@ export const donationPaypalApprovedRoute = _route('donationPaypalApproved', {
* donationPaypalCanceledRoute.toAppUrl({
* returnToken: "123",
* })
* // URL { "sgnl://donation-paypal-canceled?returnToken=123" }
* // URL { "sgnl://paypal?action=cancel&returnToken=123" }
* ```
*/
export const donationPaypalCanceledRoute = _route('donationPaypalCanceled', {
patterns: [
_pattern('sgnl:', 'donation-paypal-canceled', '{/}?', {
search: ':params',
_pattern('sgnl:', 'paypal', '{/}?', {
search: `action=${PaypalAction.Cancel}:params*`,
}),
],
schema: z.object({
@@ -656,9 +668,13 @@ export const donationPaypalCanceledRoute = _route('donationPaypalCanceled', {
};
},
toWebUrl(args) {
const params = new URLSearchParams({ returnToken: args.returnToken });
const params = new URLSearchParams({
action: PaypalAction.Cancel,
returnToken: args.returnToken,
});
// Redirects to sgnl://paypal?{params}
return new URL(
`https://signaldonations.org/redirect/donation-paypal-canceled?${params.toString()}`
`https://signaldonations.org/desktop/paypal?${params.toString()}`
);
},
});