diff --git a/packages/desktop/package.json b/packages/desktop/package.json index ca592ca..f50271f 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -20,7 +20,14 @@ "config": { "forge": { "packagerConfig": { - "icon": "./src/assets/1024x1024" + "icon": "./src/assets/1024x1024", + "protocols": [ + { + "protocol": "nirvana-desktop", + "name": "nirvana-desktop", + "schemes": "nirvana-desktop" + } + ] }, "makers": [ { diff --git a/packages/desktop/src/index.ts b/packages/desktop/src/index.ts index 48e5e54..fc1e38c 100644 --- a/packages/desktop/src/index.ts +++ b/packages/desktop/src/index.ts @@ -1,4 +1,4 @@ -import { BrowserWindow, app, ipcMain } from "electron"; +import { BrowserWindow, app, dialog, ipcMain } from "electron"; import Channels, { Dimensions } from "./electron/constants"; import { handleLogin } from "./electron/handleLogin"; @@ -88,3 +88,21 @@ app.on("activate", () => { // In this file you can include the rest of your app's specific main process // code. You can also put them in separate files and import them here. + +// open deep links from nirvana web app +if (process.defaultApp) { + if (process.argv.length >= 2) { + app.setAsDefaultProtocolClient("nirvana-desktop", process.execPath, [ + path.resolve(process.argv[1]), + ]); + } +} else { + app.setAsDefaultProtocolClient("nirvana-desktop"); +} + +// Handle the protocol. In this case, we choose to show an Error Box. +app.on("open-url", (event, url) => { + console.log("welcome back, you arrived from: ", url); + + browserWindow.focus(); +}); diff --git a/packages/web/pages/auth/success.tsx b/packages/web/pages/auth/success.tsx index f450fea..2ecc80a 100644 --- a/packages/web/pages/auth/success.tsx +++ b/packages/web/pages/auth/success.tsx @@ -1,8 +1,13 @@ import { FcGoogle } from "react-icons/fc"; import Footer from "../../components/footer"; import Header from "../../components/header"; +import { useEffect } from "react"; export default function AuthSuccess() { + useEffect(() => { + window.open("nirvana-desktop://login", "_self"); + }, []); + return ( <>