diff --git a/package.json b/package.json index 6cad8ece..b7347a4f 100644 --- a/package.json +++ b/package.json @@ -109,9 +109,9 @@ } ], "build": { - "electronVersion": "18.1.0", + "electronVersion": "18.2.0", "electronDownload": { - "version": "18.1.0+wvcus", + "version": "18.2.0+wvcus", "mirror": "https://github.com/castlabs/electron-releases/releases/download/v" }, "appId": "cider", diff --git a/src/main/base/app.ts b/src/main/base/app.ts index 3ab49a66..9ae6b6a9 100644 --- a/src/main/base/app.ts +++ b/src/main/base/app.ts @@ -212,7 +212,6 @@ export class AppEvents { * Handles the creation of a new instance of the app */ private InstanceHandler() { - // Detects of an existing instance is running (So if the lock has been achieved, no existing instance has been found) const gotTheLock = app.requestSingleInstanceLock() diff --git a/src/main/base/browserwindow.ts b/src/main/base/browserwindow.ts index 2089686c..2556d2d9 100644 --- a/src/main/base/browserwindow.ts +++ b/src/main/base/browserwindow.ts @@ -37,6 +37,7 @@ export class BrowserWindow { platform: process.platform, dev: app.isPackaged, osRelease: os.release(), + updatable: !process.windowsStore || !process.mas, components: [ "pages/podcasts", "pages/apple-account-settings", @@ -1214,16 +1215,27 @@ export class BrowserWindow { shell.openPath(app.getPath('userData')); }); + + //#region Cider Connect ipcMain.on('cc-auth', (_event) => { shell.openExternal(String(utils.getStoreValue('cc_authURL'))); }); - ipcMain.on('cc-logout', (_event) => { + ipcMain.on('cc-logout', (_event) => { //Make sure to update the default store utils.setStoreValue('connectUser', { - auth: null + "auth": null, + "sync": { + themes: false, + plugins: false, + settings: false, + } }); utils.getWindow().reload(); }); + + ipcMain.on('cc-push', (_event) => { + utils.pushStoreToConnect(); + }) /* ********************************************************************************************* * Window Events * **********************************************************************************************/ diff --git a/src/main/base/store.ts b/src/main/base/store.ts index 1ffbc502..6741395c 100644 --- a/src/main/base/store.ts +++ b/src/main/base/store.ts @@ -1,7 +1,7 @@ import * as ElectronStore from 'electron-store'; import * as electron from "electron"; import {app} from "electron"; - +import fetch from "electron-fetch"; export class Store { static cfg: ElectronStore; @@ -12,7 +12,7 @@ export class Store { }, "general": { "close_button_hide": false, - "discord_rpc": { + "discordrpc": { "enabled": false, "client": "Cider", "clear_on_pause": true, @@ -212,17 +212,22 @@ export class Store { }, "connectUser": { "auth": null, + "sync": { + themes: false, + plugins: false, + settings: false, + } }, } private migrations: any = { '>=1.4.3': (store: ElectronStore) => { - if (typeof store.get('general.discord_rpc') == 'number' || typeof store.get('general.discord_rpc') == 'string') { - store.delete('general.discord_rpc'); + if (typeof store.get('general.discordrpc') == 'number' || typeof store.get('general.discordrpc') == 'string') { + store.delete('general.discordrpc'); } }, } private schema: ElectronStore.Schema = { - "general.discord_rpc": { + "general.discordrpc": { type: 'object' }, } @@ -261,6 +266,7 @@ export class Store { return target } + /** * IPC Handler */ @@ -281,5 +287,43 @@ export class Store { Store.cfg.store = store }) } + + + static pushToCloud(): void { + if (Store.cfg.get('connectUser.auth') === null) return; + var syncData = Object(); + if (Store.cfg.get('connectUser.sync.themes')) { + syncData.push({ + themes: Store.cfg.store.themes + }) + } + if (Store.cfg.get('connectUser.sync.plugins')) { + syncData.push({ + plugins: Store.cfg.store.plugins + }) + } + + if (Store.cfg.get('connectUser.sync.settings')) { + syncData.push({ + general: Store.cfg.get('general'), + home: Store.cfg.get('home'), + libraryPrefs: Store.cfg.get('libraryPrefs'), + advanced: Store.cfg.get('advanced'), + }) + } + let postBody = { + id: Store.cfg.get('connectUser.id'), + app: electron.app.getName(), + version: electron.app.isPackaged ? electron.app.getVersion() : 'dev', + syncData: syncData + } + fetch('https://connect.cidercollective.dev/api/v1/setttings/set', { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify(postBody) + }) + } } diff --git a/src/main/base/utils.ts b/src/main/base/utils.ts index 9889c4ff..e010cfe0 100644 --- a/src/main/base/utils.ts +++ b/src/main/base/utils.ts @@ -80,6 +80,7 @@ export class utils { return Store.cfg.store } + /** * Get the store instance * @returns {Store} @@ -97,6 +98,18 @@ export class utils { Store.cfg.set(key, value) } + /** + * Pushes Store to Connect + * @return Function + */ + static pushStoreToConnect(): Function { + return Store.pushToCloud + } + + + + + /** * Gets the browser window */ @@ -198,4 +211,6 @@ export class utils { autoUpdater.logger = log await autoUpdater.checkForUpdatesAndNotify() } + + } diff --git a/src/main/plugins/discordrpc.ts b/src/main/plugins/discordrpc.ts index 740a79b6..92f613e3 100644 --- a/src/main/plugins/discordrpc.ts +++ b/src/main/plugins/discordrpc.ts @@ -53,10 +53,10 @@ export default class DiscordRPC { * @private */ private connect() { - if (!this._utils.getStoreValue("general.discord_rpc.enabled")) { + if (!this._utils.getStoreValue("general.discordrpc.enabled")) { return; } - const clientId = this._utils.getStoreValue("general.discord_rpc.client") === "Cider" ? '911790844204437504' : '886578863147192350'; + const clientId = this._utils.getStoreValue("general.discordrpc.client") === "Cider" ? '911790844204437504' : '886578863147192350'; // Apparently needed for ask to join, join, spectate etc. RPC.register(clientId) @@ -187,7 +187,7 @@ export default class DiscordRPC { activity = DiscordRPC.filterActivity(activity, this._attributes) // Set the activity - if (!this._attributes.status && this._utils.getStoreValue("general.discord_rpc.clear_on_pause")) { + if (!this._attributes.status && this._utils.getStoreValue("general.discordrpc.clear_on_pause")) { this._client.clearActivity() } else if (this._activity && this._activityCache !== this._activity && this._activity.details) { this._client.setActivity(activity) @@ -200,7 +200,7 @@ export default class DiscordRPC { * @param {object} attributes */ private updateActivity(attributes: any) { - if (!this._utils.getStoreValue("general.discord_rpc.enabled") || this._utils.getStoreValue("general.privateEnabled")) { + if (!this._utils.getStoreValue("general.discordrpc.enabled") || this._utils.getStoreValue("general.privateEnabled")) { return } else if (!this._client || !this._connection) { this.connect() @@ -208,15 +208,15 @@ export default class DiscordRPC { // Check if show buttons is (true) or (false) this._activity = { - details: this._utils.getStoreValue("general.discord_rpc.details_format"), - state: this._utils.getStoreValue("general.discord_rpc.state_format"), + details: this._utils.getStoreValue("general.discordrpc.details_format"), + state: this._utils.getStoreValue("general.discordrpc.state_format"), largeImageKey: attributes?.artwork?.url?.replace('{w}', '1024').replace('{h}', '1024'), largeImageText: attributes.albumName, instance: false // Whether the activity is in a game session } // Add the buttons if people want them - if (!this._utils.getStoreValue("general.discord_rpc.hide_buttons")) { + if (!this._utils.getStoreValue("general.discordrpc.hide_buttons")) { this._activity.buttons = [ {label: 'Listen on Cider', url: attributes.url.cider}, {label: 'View on Apple Music', url: attributes.url.appleMusic} @@ -230,7 +230,7 @@ export default class DiscordRPC { } // If the user wants to keep the activity when paused - if (!this._utils.getStoreValue("general.discord_rpc.clear_on_pause")) { + if (!this._utils.getStoreValue("general.discordrpc.clear_on_pause")) { this._activity.smallImageKey = attributes.status ? 'play' : 'pause'; this._activity.smallImageText = attributes.status ? 'Playing' : 'Paused'; } diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index 40e7439e..c0a32127 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -1013,18 +1013,18 @@
-
+
{{$root.getLz('settings.option.connectivity.discordRPC.clientName')}}
-
+
{{$root.getLz('settings.option.connectivity.discordRPC.clearOnPause')}}
-
+
{{$root.getLz('settings.option.connectivity.discordRPC.hideButtons')}}
-
+
{{$root.getLz('settings.option.connectivity.discordRPC.detailsFormat')}}
{{$root.getLz('term.variables')}}: {artist}, {composer}, {title}, {album}, @@ -1063,12 +1063,12 @@
-
+
{{$root.getLz('settings.option.connectivity.discordRPC.stateFormat')}} {{$root.getLz('term.variables')}}: {artist}, {composer}, {title}, {album}, @@ -1076,7 +1076,7 @@
diff --git a/winget.json b/winget.json index 351ef190..b184fd63 100644 --- a/winget.json +++ b/winget.json @@ -1,7 +1,7 @@ { - "electronVersion": "18.0.4", + "electronVersion": "18.2.0", "electronDownload": { - "version": "18.0.4+wvcus", + "version": "18.2.0+wvcus", "mirror": "https://github.com/castlabs/electron-releases/releases/download/v" }, "appId": "cider",