From 320778b9b7b405594ea7f5783de409c69c1ac1f8 Mon Sep 17 00:00:00 2001 From: child_duckling <19170969+quacksire@users.noreply.github.com> Date: Sat, 16 Apr 2022 01:23:09 -0700 Subject: [PATCH] [connect] Initial Implementation --- src/main/base/app.ts | 3 +++ src/main/base/browserwindow.ts | 15 ++++++++++----- src/renderer/views/pages/connect-linked.ejs | 18 ++++++++++++++++++ src/renderer/views/pages/settings.ejs | 12 ++++++++++++ 4 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 src/renderer/views/pages/connect-linked.ejs diff --git a/src/main/base/app.ts b/src/main/base/app.ts index c24ed6e5..b036d95d 100644 --- a/src/main/base/app.ts +++ b/src/main/base/app.ts @@ -167,6 +167,9 @@ export class AppEvents { utils.getWindow().webContents.send('LastfmAuthenticated', authKey); this.plugin.callPlugin('lastfm', 'authenticate', authKey); } + } else if (arg.includes("callback/discord?oauth=")){ // Discord OAuth [Connect] + utils.setStoreValue('connectUser', JSON.parse(arg.split("callback/discord?oauth=")[1])); + utils.getWindow().webContents.executeJavaScript("$root.appRoute('connect-linked')") } // Play else if (arg.includes('/play/')) { //Steer away from protocol:// specific conditionals diff --git a/src/main/base/browserwindow.ts b/src/main/base/browserwindow.ts index cc04aa15..38bb0eae 100644 --- a/src/main/base/browserwindow.ts +++ b/src/main/base/browserwindow.ts @@ -413,7 +413,7 @@ export class BrowserWindow { console.error('Req not defined') return } - if (req.url.includes("api") || req.url.includes("audio.wav") || (req.headers.host.includes("localhost") && (this.devMode || req.headers["user-agent"].includes("Electron")))) { + if (req.url.includes("api") || req.url.includes("audio.wav") || (req.headers.host.includes("localhost") && (this.devMode || req.headers["user-agent"].includes("Electron")) || req.url.includes("/connect"))) { next(); } else { res.redirect("https://discord.gg/applemusic"); @@ -526,6 +526,10 @@ export class BrowserWindow { console.log(ex); } }); + + app.get("/connect/get-user", (req, res) => { + res.send(utils.getStoreValue('connectUser')); // [Connect] Session redirect for webview + }); //app.use(express.static()) app.listen(this.clientPort, () => { @@ -1088,12 +1092,13 @@ export class BrowserWindow { }); //QR Code - ipcMain.handle('showQR', async (_event, _) => { + ipcMain.handle('showQR', async (_event, _) => { //macOS let url = `http://${BrowserWindow.getIP()}:${this.remotePort}`; - shell.openExternal(`https://cider.sh/remote/pair?url=${Buffer.from(encodeURI(url)).toString('base64')}`).catch(console.error); + BrowserWindow.win.webContents.send('send-remote-pair-url', (`https://cider.sh/remote/pair?url=${Buffer.from(encodeURI(url)).toString('base64')}`).toString()); + }); - ipcMain.on('get-remote-pair-url', (_event, _) => { + ipcMain.on('get-remote-pair-url', (_event, _) => { // Linux and Windows let url = `http://${BrowserWindow.getIP()}:${this.remotePort}`; //if (app.isPackaged) { BrowserWindow.win.webContents.send('send-remote-pair-url', (`https://cider.sh/remote/pair?url=${Buffer.from(encodeURI(url)).toString('base64')}`).toString()); @@ -1102,7 +1107,7 @@ export class BrowserWindow { //} }); - if (process.platform === "darwin") { + if (process.platform === "darwin") { //macOS app.setUserActivity('com.CiderCollective.remote.pair', { ip: `${BrowserWindow.getIP()}` }, `http://${BrowserWindow.getIP()}:${this.remotePort}`); diff --git a/src/renderer/views/pages/connect-linked.ejs b/src/renderer/views/pages/connect-linked.ejs new file mode 100644 index 00000000..306e11d6 --- /dev/null +++ b/src/renderer/views/pages/connect-linked.ejs @@ -0,0 +1,18 @@ + + \ No newline at end of file diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index 97ff6405..846382bf 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -976,6 +976,18 @@ + +
+ +
+ {{$root.getLz('settings.header.connect')}} +
+
+ +
+
+ +