mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-02-15 07:28:59 +00:00
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:
@@ -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()}`
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user