From e1f9b966daab6d74a5c27239a64c474e4a9ab2d0 Mon Sep 17 00:00:00 2001 From: vapormusic Date: Sat, 22 Jan 2022 10:28:37 +0700 Subject: [PATCH] qrcode --- package.json | 1 + src/main/base/win.ts | 30 ++++++++++++++++ src/renderer/index.js | 14 +++++--- src/renderer/style.less | 8 +++++ .../views/components/qrcode-modal.ejs | 34 +++++++++++++++++++ src/renderer/views/main.ejs | 15 +++++++- 6 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 src/renderer/views/components/qrcode-modal.ejs diff --git a/package.json b/package.json index 527ab5ab..f88fd44f 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "lastfmapi": "^0.1.1", "mpris-service": "^2.1.2", "music-metadata": "^7.11.4", + "qrcode": "^1.5.0", "qrcode-terminal": "^0.12.0", "react": "^17.0.2", "react-dom": "^17.0.2", diff --git a/src/main/base/win.ts b/src/main/base/win.ts index 7c3094ee..d3a31a68 100644 --- a/src/main/base/win.ts +++ b/src/main/base/win.ts @@ -8,6 +8,7 @@ import * as yt from "youtube-search-without-api-key"; import * as fs from "fs"; import { Stream } from "stream"; import * as qrcode from "qrcode-terminal"; +import * as qrcode2 from "qrcode"; import * as os from "os"; import {wsapi} from "./wsapi"; @@ -400,6 +401,35 @@ export class Win { this.win.setFullScreen(flag) }) + function getIp() { + let ip = false; + let alias = 0; + let ifaces = os.networkInterfaces(); + for (var dev in ifaces) { + ifaces[dev].forEach(details => { + if (details.family === 'IPv4') { + if (!/(loopback|vmware|internal|hamachi|vboxnet|virtualbox)/gi.test(dev + (alias ? ':' + alias : ''))) { + if (details.address.substring(0, 8) === '192.168.' || + details.address.substring(0, 7) === '172.16.' || + details.address.substring(0, 3) === '10.' + ) { + ip = details.address; + ++alias; + } + } + } + }); + } + return ip; + } + + //QR Code + electron.ipcMain.handle('setRemoteQR', async (event , _) => { + let url = await qrcode2.toDataURL(`http://${getIp()}:${this.remotePort}`) + console.log(url) + return url; + }) + /* ********************************************************************************************* * Window Events * **********************************************************************************************/ diff --git a/src/renderer/index.js b/src/renderer/index.js index ee23936f..de743f00 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -231,6 +231,7 @@ const app = new Vue({ loadingState: 0, // 0 loading, 1 loaded, 2 error id: "" }, + webremoteqr: "", mxmtoken: "", mkIsReady: false, playerReady: false, @@ -291,7 +292,8 @@ const app = new Vue({ musicBaseUrl: "https://api.music.apple.com/", modals: { addToPlaylist: false, - spatialProperties: false + spatialProperties: false, + qrcode: false }, socialBadges: { badgeMap: {}, @@ -3288,11 +3290,15 @@ const app = new Vue({ }, isElementOverflowing(selector) { try{ - let element = document.querySelector(selector); - var overflowX = element.offsetWidth < element.scrollWidth, - overflowY = element.offsetHeight < element.scrollHeight; + let element = document.querySelector(selector); + var overflowX = element.offsetWidth < element.scrollWidth, + overflowY = element.offsetHeight < element.scrollHeight; return (overflowX || overflowY); } catch (e) { return false} + }, + async showWebRemoteQR(){ + this.webremoteqr = await ipcRenderer.invoke('setRemoteQR','') + this.modals.qrcode = true; } } diff --git a/src/renderer/style.less b/src/renderer/style.less index 68372223..cc5860a2 100644 --- a/src/renderer/style.less +++ b/src/renderer/style.less @@ -5160,4 +5160,12 @@ body.no-gpu { } } +.qrimg { + width: -webkit-fill-available; + max-block-size: -webkit-fill-available; + object-fit: contain; + overflow-x: hidden; + overflow-y: hidden; +} + @import url("less/compact.less"); diff --git a/src/renderer/views/components/qrcode-modal.ejs b/src/renderer/views/components/qrcode-modal.ejs new file mode 100644 index 00000000..84d366fa --- /dev/null +++ b/src/renderer/views/components/qrcode-modal.ejs @@ -0,0 +1,34 @@ + + + \ No newline at end of file diff --git a/src/renderer/views/main.ejs b/src/renderer/views/main.ejs index 5f63f93d..40650bf1 100644 --- a/src/renderer/views/main.ejs +++ b/src/renderer/views/main.ejs @@ -231,6 +231,13 @@
+