[desktop] Fix payment redirect

Fixes: https://github.com/ente-io/ente/issues/1440

There were two issues:

- It was a backward incompatible change to change the scheme from ente:// to
  next://. Revert.

- We also need to setup a top level redirect when the user presses back without
  making any changes to their subscription.

**Tested by**

Running payments app and desktop app locally, and verifying that after
interactions with the payments endpoint we go back to the desktop app's actual
contents correctly.
This commit is contained in:
Manav Rathi 2024-04-15 10:45:45 +05:30
parent 5a3545e56e
commit 8d24a489f6
No known key found for this signature in database
3 changed files with 13 additions and 4 deletions

View file

@ -32,7 +32,7 @@ import { isDev } from "./main/util";
/**
* The URL where the renderer HTML is being served from.
*/
export const rendererURL = "next://app";
export const rendererURL = "ente://app";
/**
* We want to hide our window instead of closing it when the user presses the
@ -63,7 +63,7 @@ export const allowWindowClose = (): void => {
* production mode and `next dev` in development mode, whilst keeping the rest
* of our code the same.
*
* It uses protocol handlers to serve files from the "next://app" protocol
* It uses protocol handlers to serve files from the "ente://" protocol.
*
* - In development this is proxied to http://localhost:3000
* - In production it serves files from the `/out` directory

View file

@ -73,8 +73,9 @@ stripe:
key: stripe_dev_key
webhook-secret: stripe_dev_webhook_secret
whitelisted-redirect-urls:
- "http://localhost:3000/gallery"
- "http://192.168.1.2:3001/frameRedirect"
- http://localhost:3000/gallery
- http://localhost:3001/desktop-redirect
- http://192.168.1.2:3001/frameRedirect
path:
success: ?status=success&session_id={CHECKOUT_SESSION_ID}
cancel: ?status=fail&reason=canceled

View file

@ -9,6 +9,12 @@ import { loadStripe } from "@stripe/stripe-js";
* redirect to the client or to some fallback URL.
*/
export const parseAndHandleRequest = async () => {
// See: [Note: Intercept payments redirection to desktop app]
if (window.location.pathname == "/desktop-redirect") {
window.location.href = "ente://app";
return;
}
try {
const urlParams = new URLSearchParams(window.location.search);
const productID = urlParams.get("productID");
@ -291,6 +297,8 @@ const redirectToApp = (
status: RedirectStatus,
reason?: FailureReason,
) => {
// [Note: Intercept payments redirection to desktop app]
//
// The desktop app passes "<our-origin>/desktop-redirect" as `redirectURL`.
// This is just a placeholder, we want to intercept this and instead
// redirect to the ente:// scheme protocol handler that is internally being