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 @@
+
+
+
+