From c2dc1c479ebfa3aa3fd8a4029970d450e5a1526d Mon Sep 17 00:00:00 2001 From: Maikiwi Date: Mon, 14 Feb 2022 21:51:11 -0800 Subject: [PATCH 01/10] test --- src/renderer/audio/audio.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/renderer/audio/audio.js b/src/renderer/audio/audio.js index 8dbaccac..407c32c5 100644 --- a/src/renderer/audio/audio.js +++ b/src/renderer/audio/audio.js @@ -114,12 +114,13 @@ var CiderAudio = { } }, llpw_h2_2: function (status, hierarchy){ - if (status === true) { + if (status === true) { // 23 Band Adjustment let LLPW_Q = [5, 1, 3.536, 1.25, 8.409, 1.25, 14.14, 7.071, 5, 0.625, 16.82, 20, 20, 20, 28.28, 28.28, 28.28, 20, 33.64, 33.64, 10, 28.28, 7.071, 3.856]; let LLPW_GAIN = [0.38, -1.81, -0.23, -0.51, 0.4, 0.84, 0.36, -0.34, 0.27, -1.2, -0.42, -0.67, 0.81, 1.31, -0.71, 0.68, -1.04, 0.79, -0.73, -1.33, 1.17, 0.57, 0.35, 6.33]; let LLPW_FREQUENCIES = [16.452, 24.636, 37.134, 74.483, 159.54, 308.18, 670.21, 915.81, 1200.7, 2766.4, 2930.6, 4050.6, 4409.1, 5395.2, 5901.6, 6455.5, 7164.1, 7724.1, 8449, 10573, 12368, 14198, 17910, 18916]; CiderAudio.audioNodes.llpw = [] + for (i = 0; i < LLPW_FREQUENCIES.length; i++) { CiderAudio.audioNodes.llpw[i] = CiderAudio.context.createBiquadFilter(); CiderAudio.audioNodes.llpw[i].type = 'peaking'; // 'peaking'; From 453ebc25192dfe202159148024f457d4660e8b6b Mon Sep 17 00:00:00 2001 From: Maikiwi Date: Tue, 15 Feb 2022 18:32:51 -0800 Subject: [PATCH 02/10] sync (#461) * Added update check if using MSS or MAS builds. need help implementing * fix locale / allow pl to show before list loading is fully done * oops * Also copy blockmap for partial download `[2022-02-15 17:28:30.126] [error] Cannot download differentially, fallback to full download: Error: Cannot download "https://478-429851205-gh.circle-artifacts.com/0/%7E/Cider/dist/artifacts/Cider-Setup-1.1.428.exe.blockmap", status 404: Not Found at ClientRequest. (C:\Program Files\Cider\resources\app.asar\node_modules\builder-util-runtime\src\httpExecutor.ts:288:11) at ClientRequest.emit (node:events:394:28) at ClientRequest.emit (node:domain:475:12) at SimpleURLLoaderWrapper. (node:electron/js2c/browser_init:105:6829) at SimpleURLLoaderWrapper.emit (node:events:394:28) at SimpleURLLoaderWrapper.emit (node:domain:475:12)` * more lang fix * fix #459 Co-authored-by: child_duckling <19170969+quacksire@users.noreply.github.com> Co-authored-by: vapormusic Co-authored-by: JYW0803 <74043061+JYW0803@users.noreply.github.com> --- .circleci/config.yml | 3 ++- src/main/base/browserwindow.ts | 9 +++++++++ src/renderer/index.js | 19 ++++++++++++------- .../views/components/listitem-horizontal.ejs | 15 +++++++++++++++ .../views/components/sidebar-playlist.ejs | 2 +- src/renderer/views/pages/settings.ejs | 13 +++++++++++-- 6 files changed, 50 insertions(+), 11 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 35ac334d..40c944a1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -65,6 +65,7 @@ jobs: mv ~/Cider/dist/*.AppImage ~/Cider/dist/artifacts mv ~/Cider/dist/*.snap ~/Cider/dist/artifacts mv ~/Cider/dist/*.yml ~/Cider/dist/artifacts + mv ~/Cider/dist/*.blockmap ~/Cider/dist/artifacts - store_artifacts: path: ~/Cider/dist/artifacts - \ No newline at end of file + diff --git a/src/main/base/browserwindow.ts b/src/main/base/browserwindow.ts index 0cd560ee..cbe6547d 100644 --- a/src/main/base/browserwindow.ts +++ b/src/main/base/browserwindow.ts @@ -672,6 +672,15 @@ export class BrowserWindow { await win_autoUpdater.checkForUpdatesAndNotify() await linux_autoUpdater.checkForUpdatesAndNotify() }); + ipcMain.on('disable-update', (event) => { + // Check if using app store builds so people don't get pissy wen button go bonk + if (app.isPackaged && !process.mas || !process.windowsStore) { + event.returnValue = false + } else { + event.returnValue = true + } + }) + ipcMain.on('share-menu', async (_event, url) => { if (process.platform != 'darwin') return; diff --git a/src/renderer/index.js b/src/renderer/index.js index 4c77fe4f..6ac0715b 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -555,7 +555,7 @@ const app = new Vue({ } ).then(() => { if (this.page == 'playlist_' + this.showingPlaylist.id) { - this.getPlaylistFromID(this.showingPlaylist.id) + this.getPlaylistFromID(this.showingPlaylist.id, true) } }) }, @@ -997,7 +997,7 @@ const app = new Vue({ console.log(res) self.appRoute(`playlist_` + res.id); self.showingPlaylist = []; - self.getPlaylistFromID(app.page.substring(9)) + self.getPlaylistFromID(app.page.substring(9), true) self.playlists.listing.push({ id: res.id, attributes: { @@ -1092,7 +1092,7 @@ const app = new Vue({ response = response.data.data[0] let self = this let playlistId = response.id - if (!transient) this.playlists.loadingState = 0 + this.playlists.loadingState = (!transient) ? 0 : 1 this.showingPlaylist = response if (!response.relationships.tracks.next) { this.playlists.loadingState = 1 @@ -1572,14 +1572,14 @@ const app = new Vue({ if (kind == "appleCurator") { app.appleCurator = a.data.data[0] } else { - this.getPlaylistContinuous(a) + this.getPlaylistContinuous(a, true) } } } finally { if (kind == "appleCurator") { app.appleCurator = a.data.data[0] } else { - this.getPlaylistContinuous(a) + this.getPlaylistContinuous(a, true) } } ; @@ -3694,9 +3694,9 @@ const app = new Vue({ let u = this.cfg.general.language; // use MusicKit.getInstance or crash try { - item = await MusicKit.getInstance().api.v3.music(`v1/storefronts/${app.mk.storefrontId}`) + let item = await MusicKit.getInstance().api.v3.music(`v1/storefronts/${app.mk.storefrontId}`) let langcodes = item.data.data[0].attributes.supportedLanguageTags; - if (langcodes) langcodes = langcodes.map(function (u) { return u.toLowerCase() }) + if (langcodes) langcodes = langcodes.map(function (u) { return u.replace(/-Han[s|t]/i, "").toLowerCase() }) console.log(langcodes) let sellang = "" if (u && langcodes.includes(u.toLowerCase().replace('_', "-"))) { @@ -3705,6 +3705,11 @@ const app = new Vue({ sellang = ((u.toLowerCase()).replace('_', "-")).split("-")[0] } if (sellang == "") sellang = (item.data.data[0].attributes.defaultLanguageTag).toLowerCase() + + // Fix weird locales: + if (sellang == "iw") sellang = "iw-il" + sellang = sellang.replace(/-Han[s|t]/i, "").toLowerCase() + console.log(sellang) return await sellang } diff --git a/src/renderer/views/components/listitem-horizontal.ejs b/src/renderer/views/components/listitem-horizontal.ejs index a159f362..a8df81f4 100644 --- a/src/renderer/views/components/listitem-horizontal.ejs +++ b/src/renderer/views/components/listitem-horizontal.ejs @@ -41,6 +41,21 @@ catch (e){} }, + watch: { + items: function (items) { + // give every item an id + this.items.forEach(function (item, index) { + item.id = index; + }); + // split items into pages + this.itemPages = app.arrayToChunk(this.items, 4); + try{ + this.simplifiedParent = JSON.stringify(this.items.map ( function(x){return x.attributes.playParams})); + console.log("simplifiedParent: " + this.simplifiedParent); + } + catch (e){} + } + }, methods: { sayHello: function () { alert('Hello world!'); diff --git a/src/renderer/views/components/sidebar-playlist.ejs b/src/renderer/views/components/sidebar-playlist.ejs index 83df7072..bfe0edf6 100644 --- a/src/renderer/views/components/sidebar-playlist.ejs +++ b/src/renderer/views/components/sidebar-playlist.ejs @@ -189,7 +189,7 @@ openPlaylist(item) { this.$root.appRoute(`playlist_` + item.id); this.$root.showingPlaylist = []; - this.$root.getPlaylistFromID(this.$root.page.substring(9)) + this.$root.getPlaylistFromID(this.$root.page.substring(9), true) }, getPlaylistChildren(item) { let self = this diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index ae4101b5..23292ff0 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -656,7 +656,7 @@ -
+
{{$root.getLz('settings.option.general.updateCider')}}
@@ -666,7 +666,7 @@
-
+
{{$root.getLz('settings.option.general.updateCider.branch')}}
({{$root.getLz('settings.option.general.updateCider.branch.description')}}) @@ -852,6 +852,15 @@ ipcRenderer.invoke('setStoreValue', 'general.close_behavior', app.cfg.general.close_behavior); // setStoreValue does not change plugin store values somehow ipcRenderer.invoke('update-store-mtt', app.cfg.general.close_behavior); + }, + checkIfUpdateDisabled() { + if (ipcRenderer.sendSync('disable-update')) { + let updateFields = document.getElementsByClassName('update-check'); + for (var i=0; i < updateFields.length; i++) { + updateFields[i].style = "opacity: 0.5; pointer-events: none;"; + updateFields[i].title = "Not available on this type of build"; + } + } } } }) From 509a425f416a4e87c7a30ffc588803c9452fa3b8 Mon Sep 17 00:00:00 2001 From: Maikiwi Date: Wed, 16 Feb 2022 18:44:34 -0800 Subject: [PATCH 03/10] sync again (#465) * Added update check if using MSS or MAS builds. need help implementing * fix locale / allow pl to show before list loading is fully done * oops * Also copy blockmap for partial download `[2022-02-15 17:28:30.126] [error] Cannot download differentially, fallback to full download: Error: Cannot download "https://478-429851205-gh.circle-artifacts.com/0/%7E/Cider/dist/artifacts/Cider-Setup-1.1.428.exe.blockmap", status 404: Not Found at ClientRequest. (C:\Program Files\Cider\resources\app.asar\node_modules\builder-util-runtime\src\httpExecutor.ts:288:11) at ClientRequest.emit (node:events:394:28) at ClientRequest.emit (node:domain:475:12) at SimpleURLLoaderWrapper. (node:electron/js2c/browser_init:105:6829) at SimpleURLLoaderWrapper.emit (node:events:394:28) at SimpleURLLoaderWrapper.emit (node:domain:475:12)` * more lang fix * Removed Discord clear on pause * Linux frame * fix #459 * Fix * exposed --songProgressColor and --songProgressBackground * revert * Revert "revert" This reverts commit 24313b53cf5b6fb37e8454175d91074c0f644cee. * ok? * Revert "ok?" This reverts commit 9218ccc88731b607f228ac712e3987d7baab668e. * ok * fix adding/remove mvs from library * Created audio controls menu * Added start-renderer command for easier testing * shitty floats shitty shitty * LastFM can be unique and have its own call * Revert "LastFM can be unique and have its own call" This reverts commit d36e1b19f65259743d07001db4942fe3932608de. * Revert "Merge branch 'develop' into develop" This reverts commit 5fa345e6c8107a5256649c6e15450add001afb56, reversing changes made to a02b633f49b94b05a925d65fb2bda0f267c0096a. * Revert "Revert "LastFM can be unique and have its own call"" This reverts commit f156083d48f866fcd69d590794a33e0b25c8d95d. * lastfm changes Co-authored-by: child_duckling <19170969+quacksire@users.noreply.github.com> Co-authored-by: vapormusic Co-authored-by: JYW0803 <74043061+JYW0803@users.noreply.github.com> Co-authored-by: Core <64542347+coredev-uk@users.noreply.github.com> Co-authored-by: booploops <49113086+booploops@users.noreply.github.com> --- package.json | 4 + src/i18n/README.md | 6 ++ src/i18n/en_US.jsonc | 4 + src/main/base/browserwindow.ts | 1 + src/main/index.ts | 4 + src/main/plugins/lastfm.ts | 12 +-- src/preload/cider-preload.js | 4 +- src/renderer/index.js | 13 +-- src/renderer/style.less | 22 +++++ src/renderer/views/app/panels.ejs | 3 + src/renderer/views/app/sidebar.ejs | 2 +- .../views/components/audio-controls.ejs | 87 +++++++++++++++++++ .../views/components/audio-settings.ejs | 9 ++ src/renderer/views/components/fullscreen.ejs | 2 +- .../views/components/mediaitem-square.ejs | 33 +++---- src/renderer/views/pages/library-videos.ejs | 11 ++- src/renderer/views/pages/settings.ejs | 10 +++ 17 files changed, 195 insertions(+), 32 deletions(-) create mode 100644 src/renderer/views/components/audio-controls.ejs diff --git a/package.json b/package.json index f2eaa78d..06b287ac 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,10 @@ "start:win32": "yarn build && set ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers", "start:linux": "yarn build && ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers", "start:darwin": "yarn build && ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers", + "start-renderer": "run-script-os", + "start-renderer:win32": "set ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers", + "start-renderer:linux": "ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers", + "start-renderer:darwin": "ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers", "pack": "electron-builder --dir", "dist": "yarn build && electron-builder", "dist:macarm": "yarn build && electron-builder --mac --arm64", diff --git a/src/i18n/README.md b/src/i18n/README.md index f474d134..6552894c 100644 --- a/src/i18n/README.md +++ b/src/i18n/README.md @@ -116,3 +116,9 @@ Update 12/02/2022 12:00 UTC * `settings.notyf.visual.theme.install.error`: Added for `en_US`. * `term.defaultPresets`: Added for `en_US`. * `term.userPresets`: Added for `en_US`. + +Update 16/02/2022 21:45 UTC + +* `term.audioControls`: Added for `en_US`. +* `settings.option.audio.volumeStep`: Added for `en_US`. +* `settings.option.audio.maxVolume`: Added for `en_US`.` \ No newline at end of file diff --git a/src/i18n/en_US.jsonc b/src/i18n/en_US.jsonc index 9b4e1652..037cbe9c 100644 --- a/src/i18n/en_US.jsonc +++ b/src/i18n/en_US.jsonc @@ -109,6 +109,7 @@ "term.fullscreenView": "Fullscreen View", "term.defaultView": "Default View", "term.audioSettings": "Audio Settings", + "term.audioControls": "Audio Controls", "term.clearAll": "Clear All", "term.recentStations": "Recent Stations", "term.language": "Language", @@ -154,6 +155,7 @@ "term.videoExtras": "Video Extras", "term.top": "Top", "term.version": "Version", + "term.noVideos": "No videos found.", // Home "home.title": "Home", @@ -250,6 +252,8 @@ // Settings - Audio "settings.header.audio": "Audio", "settings.header.audio.description": "Adjust the audio settings for Cider.", + "settings.option.audio.volumeStep": "Volume Step", + "settings.option.audio.maxVolume": "Max Volume", "settings.option.audio.quality": "Audio Quality", // Dropdown "settings.header.audio.quality.hireslossless": "Hi-Res Lossless", "settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz", diff --git a/src/main/base/browserwindow.ts b/src/main/base/browserwindow.ts index cbe6547d..a586b662 100644 --- a/src/main/base/browserwindow.ts +++ b/src/main/base/browserwindow.ts @@ -53,6 +53,7 @@ export class BrowserWindow { "components/sidebar-playlist", "components/spatial-properties", "components/audio-settings", + "components/audio-controls", "components/qrcode-modal", "components/equalizer", "components/add-to-playlist", diff --git a/src/main/index.ts b/src/main/index.ts index 7038f483..9e0d53d9 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -69,6 +69,10 @@ ipcMain.on('nowPlayingItemDidChange', (_event, attributes) => { CiderPlug.callPlugins('onNowPlayingItemDidChange', attributes); }); +ipcMain.on('lfmItemChange', (_event, attributes) => { + CiderPlug.callPlugins('lfmItemChange', attributes); +}); + app.on('before-quit', () => { CiderPlug.callPlugins('onBeforeQuit'); console.warn(`${app.getName()} exited.`); diff --git a/src/main/plugins/lastfm.ts b/src/main/plugins/lastfm.ts index 6110ad31..fbeb2b40 100644 --- a/src/main/plugins/lastfm.ts +++ b/src/main/plugins/lastfm.ts @@ -257,20 +257,22 @@ export default class LastFMPlugin { * @param attributes Music Attributes (attributes.status = current state) */ onPlaybackStateDidChange(attributes: object): void { - this.updateNowPlayingSong(attributes) - this.scrobbleSong(attributes) + this.updateNowPlayingSong(attributes) + // this.scrobbleSong(attributes) } /** * Runs on song change * @param attributes Music Attributes */ - onNowPlayingItemDidChange(attributes: object): void { + lfmItemChange(attributes: any): void { + attributes.status = true if (!this._store.lastfm.filterLoop){ this._lastfm.cachedNowPlayingAttributes = false; - this._lastfm.cachedAttributes = false} + this._lastfm.cachedAttributes = false + } this.updateNowPlayingSong(attributes) - this.scrobbleSong(attributes) + this.scrobbleSong(attributes) } } diff --git a/src/preload/cider-preload.js b/src/preload/cider-preload.js index bf6f2924..47441d25 100644 --- a/src/preload/cider-preload.js +++ b/src/preload/cider-preload.js @@ -25,8 +25,10 @@ const MusicKitInterop = { MusicKit.getInstance().addEventListener(MusicKit.Events.nowPlayingItemDidChange, async () => { // await MusicKitInterop.modifyNamesOnLocale(); if (MusicKitInterop.filterTrack(MusicKitInterop.getAttributes(), false, true) || !app.cfg.lastfm.filterLoop) { - global.ipcRenderer.send('nowPlayingItemDidChange', MusicKitInterop.getAttributes()); + global.ipcRenderer.send('lfmItemChange', MusicKitInterop.getAttributes()); } + + global.ipcRenderer.send('nowPlayingItemDidChange', MusicKitInterop.getAttributes()); }); MusicKit.getInstance().addEventListener(MusicKit.Events.authorizationStatusDidChange, () => { diff --git a/src/renderer/index.js b/src/renderer/index.js index 6ac0715b..7daf7bb8 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -233,6 +233,7 @@ const app = new Vue({ qrcode: false, equalizer: false, audioSettings: false, + audioControls: false, showPlaylist: false, }, socialBadges: { @@ -272,7 +273,7 @@ const app = new Vue({ artistPage: () => { document.getElementById("app-content").scrollTo(0, 0); app.resetState() - }, + } }, methods: { songLinkShare(amUrl) { @@ -1094,7 +1095,7 @@ const app = new Vue({ let playlistId = response.id this.playlists.loadingState = (!transient) ? 0 : 1 this.showingPlaylist = response - if (!response.relationships.tracks.next) { + if (!response.relationships?.tracks?.next) { this.playlists.loadingState = 1 return } @@ -1170,7 +1171,7 @@ const app = new Vue({ let max = this.mk.currentPlaybackDuration let value = (val - min) / (max - min) * 100 return { - 'background': ('linear-gradient(to right, var(--keyColor) 0%, var(--keyColor) ' + value + '%, #333 ' + value + '%, #333 100%)') + 'background': ('linear-gradient(to right, var(--songProgressColor) 0%, var(--songProgressColor) ' + value + '%, var(--songProgressBackground) ' + value + '%, var(--songProgressBackground) 100%)') } }, async getRecursive(response) { @@ -3321,7 +3322,7 @@ const app = new Vue({ console.log('setting max volume') } else { console.log('volume up') - app.mk.volume += app.cfg.audio.volumeStep; + app.mk.volume = ((app.mk.volume * 100) + (app.cfg.audio.volumeStep * 100)) / 100 } }, volumeDown() { @@ -3330,11 +3331,11 @@ const app = new Vue({ console.log('setting volume to 0') } else { console.log('volume down') - app.mk.volume -= app.cfg.audio.volumeStep; + app.mk.volume = ((app.mk.volume * 100) - (app.cfg.audio.volumeStep * 100)) / 100 } }, volumeWheel(event) { - app.checkScrollDirectionIsUp(event) ? app.volumeUp() : app.volumeDown() + app.checkScrollDirectionIsUp(event) ? this.volumeUp() : this.volumeDown() }, muteButtonPressed() { if (this.cfg.audio.muted) { diff --git a/src/renderer/style.less b/src/renderer/style.less index 85949811..4b4d957c 100644 --- a/src/renderer/style.less +++ b/src/renderer/style.less @@ -35,6 +35,8 @@ --keyColor-disabled: rgba(250, 88, 106, 0.35); --navigationBarHeight: 38px; --modalBackground: #262626; + --songProgressColor: var(--keyColor); + --songProgressBackground: #333; --textColor: #eee; } @@ -3132,5 +3134,25 @@ body[platform='darwin'] { } } +.percent { + display: inline-block; + position: relative; +} + +.percent::after { + position: relative; + right: 2em; + transition: all .05s ease-in-out; +} + +.percent:hover::after, +.percent:focus-within::after { + right: 3.5em; +} + +.percent::after { + content: '%'; +} + @import url("less/compact.less"); diff --git a/src/renderer/views/app/panels.ejs b/src/renderer/views/app/panels.ejs index af2b76f9..85227a31 100644 --- a/src/renderer/views/app/panels.ejs +++ b/src/renderer/views/app/panels.ejs @@ -16,6 +16,9 @@ + + + diff --git a/src/renderer/views/app/sidebar.ejs b/src/renderer/views/app/sidebar.ejs index 4cae1592..fbad26eb 100644 --- a/src/renderer/views/app/sidebar.ejs +++ b/src/renderer/views/app/sidebar.ejs @@ -152,7 +152,7 @@
- diff --git a/src/renderer/views/components/audio-controls.ejs b/src/renderer/views/components/audio-controls.ejs new file mode 100644 index 00000000..57a174e6 --- /dev/null +++ b/src/renderer/views/components/audio-controls.ejs @@ -0,0 +1,87 @@ + + + \ No newline at end of file diff --git a/src/renderer/views/components/audio-settings.ejs b/src/renderer/views/components/audio-settings.ejs index 512db50e..aadab781 100644 --- a/src/renderer/views/components/audio-settings.ejs +++ b/src/renderer/views/components/audio-settings.ejs @@ -17,6 +17,11 @@
<%- include("../svg/speaker.svg") %>
{{app.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization')}}
+
@@ -46,6 +51,10 @@ notyf.error(app.getLz('spatial.notTurnedOn')) } }, + openAudioControls() { + app.modals.audioControls = true + app.modals.audioSettings = false + } } }); \ No newline at end of file diff --git a/src/renderer/views/components/fullscreen.ejs b/src/renderer/views/components/fullscreen.ejs index 733a4b0c..6572ff97 100644 --- a/src/renderer/views/components/fullscreen.ejs +++ b/src/renderer/views/components/fullscreen.ejs @@ -80,7 +80,7 @@
-
diff --git a/src/renderer/views/components/mediaitem-square.ejs b/src/renderer/views/components/mediaitem-square.ejs index 6bf861d9..4248f1b7 100644 --- a/src/renderer/views/components/mediaitem-square.ejs +++ b/src/renderer/views/components/mediaitem-square.ejs @@ -144,13 +144,15 @@ }, async isInLibrary() { if (this.item.type && !this.item.type.includes("library")) { - var params = { - "fields[playlists]": "inLibrary", - "fields[albums]": "inLibrary", - "relate": "library", + let params = { + relate:"library", + "fields":"inLibrary", "extend": this.revisedRandId() } - var res = await app.mkapi(this.item.attributes.playParams.kind ?? this.item.type, this.item.attributes.playParams.isLibrary ?? false, this.item.attributes.playParams.id ?? this.item.id, params); + let kind = this.item.type ?? this.item.attributes.playParams.kind + let truekind = (!kind.endsWith("s")) ? (kind + "s") : kind; + if (truekind == "musicVideos") {truekind = "music-videos"} + let res = await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/?ids[${truekind}]=${this.item.attributes.playParams.id ?? this.item.id}`,params); res = res.data.data[0] this.addedToLibrary = (res && res.attributes && res.attributes.inLibrary) ? res.attributes.inLibrary : false } else { @@ -158,21 +160,20 @@ } }, async removeFromLibrary(id) { - var params = { - "fields[playlists]": "inLibrary", - "fields[songs]": "inLibrary", - "fields[albums]": "inLibrary", - "relate": "library", - "extend": this.revisedRandId() - } - var id = this.item.id ?? this.item.attributes.playParams.id - var res = await app.mkapi(this.item.attributes.playParams.kind ?? this.item.type, this.item.attributes.playParams.isLibrary ?? false, this.item.attributes.playParams.id ?? this.item.id, params); + let params = { + relate:"library", + "fields":"inLibrary", + "extend": this.revisedRandId() + } + let kind = this.item.type ?? this.item.attributes.playParams.kind + let truekind = (!kind.endsWith("s")) ? (kind + "s") : kind; + if (truekind == "musicVideos") {truekind = "music-videos"} + let res = await app.mk.api.v3.music(`/v1/catalog/${app.mk.storefrontId}/?ids[${truekind}]=${this.item.attributes.playParams.id ?? this.item.id}`,params); res= res.data.data[0] if (res && res.relationships && res.relationships.library && res.relationships.library.data && res.relationships.library.data.length > 0) { id = res.relationships.library.data[0].id } - let kind = this.item.attributes.playParams.kind ?? this.item.type ?? ''; - var truekind = (!kind.endsWith("s")) ? (kind + "s") : kind; + app.mk.api.v3.music(`v1/me/library/${truekind}/${id.toString()}`,{}, { fetchOptions: { diff --git a/src/renderer/views/pages/library-videos.ejs b/src/renderer/views/pages/library-videos.ejs index a1b8d6fa..6c9e458d 100644 --- a/src/renderer/views/pages/library-videos.ejs +++ b/src/renderer/views/pages/library-videos.ejs @@ -6,8 +6,13 @@
- - + +
@@ -19,12 +24,14 @@ data: function(){ return { videos: [], + loaded: false } }, mounted() { this.$nextTick(async function () { if (this.$data.videos == null || this.$data.videos.length == 0) this.$data.videos = (await this.$root.mk.api.v3.music('/v1/me/library/music-videos')).data?.data ?? [] + this.$data.loaded = true }) } }) diff --git a/src/renderer/views/pages/settings.ejs b/src/renderer/views/pages/settings.ejs index 23292ff0..32a50e46 100644 --- a/src/renderer/views/pages/settings.ejs +++ b/src/renderer/views/pages/settings.ejs @@ -42,6 +42,16 @@ +
+
+ {{$root.getLz('term.audioControls')}} +
+
+ +
+
{{$root.getLz('settings.option.audio.seamlessTransition')}} From 2a7fba307bd6897e55467ee9488e1eb1a06af62a Mon Sep 17 00:00:00 2001 From: Maikiwi Date: Wed, 16 Feb 2022 19:07:41 -0800 Subject: [PATCH 04/10] volume step i18n --- src/i18n/ja_JP.jsonc | 2 ++ src/i18n/zh_TW.jsonc | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/i18n/ja_JP.jsonc b/src/i18n/ja_JP.jsonc index e57fc75a..2264f068 100644 --- a/src/i18n/ja_JP.jsonc +++ b/src/i18n/ja_JP.jsonc @@ -215,6 +215,8 @@ // Settings - Audio "settings.header.audio": "オーディオ", "settings.header.audio.description": "Ciderのオーディオ設定", + "settings.option.audio.volumeStep": "音量調整のステップ", + "settings.option.audio.maxVolume": "最大音量", "settings.option.audio.quality": "音質", // Dropdown "settings.header.audio.quality.hireslossless": "ハイレゾロスレス", "settings.header.audio.quality.hireslossless.description": "(最大解像度 24 ビット/192 kHz)", diff --git a/src/i18n/zh_TW.jsonc b/src/i18n/zh_TW.jsonc index b373c6f7..d66c4f73 100644 --- a/src/i18n/zh_TW.jsonc +++ b/src/i18n/zh_TW.jsonc @@ -229,6 +229,8 @@ // Settings - Audio "settings.header.audio": "音訊", "settings.header.audio.description": "調整 Cider 的音訊設定", + "settings.option.audio.volumeStep": "音量改變量", + "settings.option.audio.maxVolume": "最高音量", "settings.option.audio.quality": "音訊品質", // Dropdown "settings.header.audio.quality.hireslossless": "高品質無損壓縮", "settings.header.audio.quality.hireslossless.description": "(高達 24-bit/192 kHz)", From c611b032cc9d5488b77219b329ba475aeb7c3955 Mon Sep 17 00:00:00 2001 From: booploops <49113086+booploops@users.noreply.github.com> Date: Thu, 17 Feb 2022 17:26:39 -0800 Subject: [PATCH 05/10] Generating top genres, made buttons nicer on replay --- src/renderer/less/pages.less | 43 ++++++++++++++++++++++++ src/renderer/views/pages/replay.ejs | 52 +++++++++++++++++++++++++++-- 2 files changed, 92 insertions(+), 3 deletions(-) diff --git a/src/renderer/less/pages.less b/src/renderer/less/pages.less index 8de62bf9..609be38a 100644 --- a/src/renderer/less/pages.less +++ b/src/renderer/less/pages.less @@ -904,6 +904,49 @@ .replay-page { --replayTextShadow: 0px 3px 2px #6f3f52; + .replay-period { + height: 200px; + width: 200px; + margin: 6px; + border-radius: var(--mediaItemRadius); + overflow: hidden; + cursor: pointer; + transition: transform .2s var(--appleEase); + transition-delay: .1s; + align-self: center; + &:hover { + transform: translateY(-6px); + transition-delay: 0s; + } + .artwork-container { + height:200px; + width:200px; + } + } + + .top-genres-container { + + .genre-name { + font-size: 1.2em; + } + .genre-count { + width: 100%; + height: 32px; + background: #ffffff14; + border-radius: 10px; + overflow: hidden; + + .genre-count-bar { + height: 100%; + width: 0%; + background: var(--keyColor); + display: flex; + justify-content: center; + align-items: center; + min-width: 32px; + } + } + } .cd-mediaitem-square { .mediaitem-artwork { diff --git a/src/renderer/views/pages/replay.ejs b/src/renderer/views/pages/replay.ejs index 6ca23212..ecf92a6d 100644 --- a/src/renderer/views/pages/replay.ejs +++ b/src/renderer/views/pages/replay.ejs @@ -1,8 +1,13 @@