diff --git a/.github/workflows/build-macos.yml b/.github/workflows/build-macos.yml index 57654cfa..5f72d294 100644 --- a/.github/workflows/build-macos.yml +++ b/.github/workflows/build-macos.yml @@ -29,7 +29,7 @@ jobs: runs-on: macos-11 permissions: actions: read - contents: read + contents: write security-events: write strategy: @@ -100,6 +100,25 @@ jobs: - name: Add license to dmg run: | npx dmg-license resources/license.json dist/*.dmg + + - name: Import + uses: apple-actions/import-codesign-certs@v1 + with: + p12-file-base64: ${{ secrets.CSC_LINK }} + p12-password: ${{ secrets.CSC_KEY_PASSWORD }} + + - name: Create PKG manually + env: + CSC_LINK: ${{ secrets.CSC_LINK }} + CSC_KEY_PASSWORD: ${{ secrets.CSC_KEY_PASSWORD }} + APPLEID: ${{ secrets.APPLEID }} + APPLEIDPASS: ${{ secrets.APPLEIDPASS }} + run: | + pkgbuild --component dist/mac-universal/Cider.app --install-location /Applications dist/Cider.pkg --sign ${{ secrets.PSC_NAME }} + xcrun altool --notarize-app --primary-bundle-id com.ciderapp.cider -f dist/Cider.pkg --username ${{ secrets.APPLEID }} --password ${{ secrets.APPLEIDPASS }} + sleep 5m + xcrun stapler staple dist/Cider.pkg || true + mv dist/*.dmg dist/Cider.dmg - name: Upload a Build Artifact uses: actions/upload-artifact@v2.2.3 @@ -107,5 +126,20 @@ jobs: # Artifact name name: macOS # A file, directory or wildcard pattern that describes what to upload - path: dist/*.dmg + path: | + dist/*.dmg + dist/*.pkg # The desired behavior if no files are found using the provided path. + - name: Release + uses: softprops/action-gh-release@v1 + with: + files: | + dist/Cider.dmg + dist/Cider.pkg + body: signed Develop MacOS Builds + name: macOS builds + tag_name: macos-beta + prerelease : true + generate_release_notes: true + append_body : false + fail_on_unmatched_files: false \ No newline at end of file diff --git a/src/i18n/de_DE.jsonc b/src/i18n/de_DE.jsonc index 57c29597..ec5deb48 100644 --- a/src/i18n/de_DE.jsonc +++ b/src/i18n/de_DE.jsonc @@ -4,7 +4,7 @@ "i18n.languageName": "Deutsch", // name of language in native language "i18n.languageNameEnglish": "German", // name of language in English "i18n.category": "main", // main = real language, fun = fun community languages - "i18n.authors": "@motz0815", // Authors, if you contribute to this file feel free to add your name seperated with a space + "i18n.authors": "@motz0815 @n0chteil", // Authors, if you contribute to this file feel free to add your name seperated with a space // App info "app.name": "Cider", @@ -46,7 +46,12 @@ "term.podcasts": "Podcasts", "term.playlists": "Playlists", "term.playlist": "Playlist", - "term.play": "Play", + "term.newPlaylist": "Neue Playlist", + "term.newPlaylistFolder": "Neuer Playlist-Ordner", + "term.createNewPlaylist": "Neue Playlist erstellen", + "term.createNewPlaylistFolder": "Neuen Playlist-Ordner erstellen", + "term.deletePlaylist": "Bist du sicher, dass du diese Playlist löschen willst?", + "term.play": "Wiedergabe", "term.pause": "Pause", "term.previous": "Zurück", "term.next": "Weiter", @@ -56,6 +61,7 @@ "term.mute": "Stummschalten", "term.unmute": "Stummschaltung aufheben", "term.share": "Teilen", + "term.share.success": "In die Zwischenablage kopiert", "term.settings": "Einstellungen", "term.seeAll": "Alle Sehen", "term.sortBy": "Sortieren nach", @@ -65,6 +71,7 @@ "term.sortBy.genre": "Genre", "term.sortBy.releaseDate": "Veröffentlichungsdatum", "term.sortBy.duration": "Länge", + "term.sortBy.dateAdded": "Hinzugefügt am", "term.sortOrder": "A-Z", "term.sortOrder.ascending": "Aufsteigend", "term.sortOrder.descending": "Absteigend", @@ -82,12 +89,12 @@ "term.connecting": "Verbindet", "term.disconnect": "Trennen", "term.authed": "Autorisiert", - "term.confirm": "Bestätigen ?", + "term.confirm": "Bestätigen?", "term.more": "Mehr", "term.less": "Weniger", - "term.showMore": "Zeige mehr", - "term.showLess": "Zeige weniger", - "term.topSongs" : "Top Songs", + "term.showMore": "Mehr anzeigen", + "term.showLess": "Weniger anzeigen", + "term.topSongs": "Top Songs", "term.latestReleases": "Letzte Veröffentlichungen", "term.time.added": "Hinzugefügt", "term.time.released": "Veröffentlicht", @@ -100,24 +107,48 @@ "term.time.second": "Sekunde", "term.fullscreenView": "Vollbildansicht", "term.defaultView": "Normale Ansicht", + "term.audioSettings": "Audio-Einstellungen", "term.spacializedAudioSetting": "Räumliches Audio", "term.clearAll": "Alle löschen", - "term.recentStations": "Letzte Stationen", + "term.recentStations": "Letzte Sender", "term.language": "Sprache", "term.funLanguages": "Spaß", - "term.noLyrics": "Lädt... / Liedtext nicht gefunden./ Instrumental.", + "term.noLyrics": "Lädt... / Lyrik nicht gefunden./ Instrumental.", "term.copyright": "Copyright", - "term.rightsReserved": "All Rights Reserved.", + "term.rightsReserved": "Alle Rechte vorbehalten.", "term.sponsor": "Unterstütze dieses Projekt", "term.ciderTeam": "Cider Team", "term.developer": "Entwickler", "term.socialTeam": "Social Team", + "term.socials": "Soziale Medien", "term.contributors": "Mithelfer", "term.equalizer": "Equalizer", "term.reset": "Zurücksetzen", "term.tracks": "Lieder", // Assume x amount of tracks. e.g. 50 tracks "term.videos": "Videos", "term.menu": "Menü", + "term.check": "Nach Updates suchen", + "term.aboutArtist": "Über {{artistName}}", // e.g. 'About Doja Cat' + "term.topResult": "Bestes Ergebnis", // Search Results + "term.sharedPlaylists": "Geteilte Playlists", // Search Results + "term.people": "Personen", // Search Results + "term.newpreset.name": "Neuer EQ-Preset Name", // Equalizer Preset + "term.addedpreset": "Preset erstellt", + "term.deletepreset.warn": "Bist du sicher, dass du dieses Preset löschen willst?", + "term.deletedpreset": "Preset gelöscht", + "term.defaultPresets": "Standard-Presets", + "term.userPresets": "Nutzer-Presets", + "term.requestError": "Es gab ein Problem bei der Anfrage.", + "term.song.link.generate": "song.link URL wird gesucht...", + "term.musicVideos": "Musikvideos", // Search page friendlyTypes + "term.stations": "Radiosender", + "term.curators": "Kuratoren", + "term.appleCurators": "Apple-Kuratoren", + "term.radioShows": "Radiosendungen", + "term.recordLabels": "Plattenfirma", + "term.videoExtras": "Video-Extras", + "term.top": "Beste", + "term.version": "Version", // Home "home.title": "Home", @@ -131,7 +162,7 @@ // Errors "error.appleMusicSubRequired": "Apple Music benötigt ein Abonnement.", - "error.connectionError": "Es ist ein Fehler aufgetreten, während sich mit Apple Music verbunden wurde.", + "error.connectionError": "Es gab ein Problem beim Verbinden mit Apple Music.", "error.noResults": "Keine Ergebnisse.", "error.noResults.description": "Versuche einen anderen Suchbegriff.", @@ -157,6 +188,7 @@ "action.removeFromQueue": "Aus Warteschlange entfernen", "action.removeFromQueue.success": "Aus Warteschlange entfernt", "action.removeFromQueue.error": "Fehler beim Entfernen aus der Warteschlange", + "action.createPlaylist": "Neue Playlist erstellen", "action.addToPlaylist": "Zur Playlist hinzufügen", "action.removeFromPlaylist": "Aus Playlist entfernen", "action.addToFavorites": "Zu Favoriten hinzufügen", @@ -184,7 +216,14 @@ "action.removeTracks": "Entferne ${self.selectedItems.length} Lieder aus der Warteschlange", "action.import": "Importieren", "action.export": "Exportieren", - "action.showAlbum": "Zeige ganzes Album", + "action.showAlbum": "Ganzes Album anzeigen", + "action.tray.minimize": "Zu Tray minimieren", + "action.tray.quit": "Beenden", + "action.tray.show": "{appName} anzeigen", + "action.update": "Update", + "action.copy": "Kopieren", + "action.newpreset": "Neues Preset", // Equalizer Preset + "action.deletepreset": "Preset löschen", // Settings - General "settings.header.general": "Allgemein", @@ -197,21 +236,37 @@ "settings.option.general.language.unsorted": "Unsortiert", // Update Cider + "settings.option.general.updateCider": "Cider updaten", // Button. Refer to term.check for the check button + "settings.option.general.updateCider.branch": "Update-Branch", // Dropdown + "settings.option.general.updateCider.branch.description": "Der Branch, von welchem Cider geupdatet werden soll", + "settings.option.general.updateCider.branch.main": "Stabil", + "settings.option.general.updateCider.branch.develop": "Entwicklung", // Settings - Audio "settings.header.audio": "Audio", "settings.header.audio.description": "Passe die Audio-Einstellungen für Cider an.", "settings.option.audio.quality": "Audioqualität", // Dropdown + "settings.header.audio.quality.hireslossless": "Hi-Res Lossless", + "settings.header.audio.quality.hireslossless.description": "bis zu 24-bit/192 kHz", + "settings.header.audio.quality.lossless": "Lossless", + "settings.header.audio.quality.lossless.description": "bis zu 24-bit/48 kHz", "settings.header.audio.quality.high": "Hoch", - "settings.header.audio.quality.low": "Niedrig", - "settings.header.audio.quality.auto": "Auto", + "settings.header.audio.quality.standard": "Standard", "settings.option.audio.seamlessTransition": "Nahtloser Audioübergang", // Toggle "settings.option.audio.enableAdvancedFunctionality": "Akiviere erweiterte Funktionalität", // Toggle "settings.option.audio.enableAdvancedFunctionality.description": "Das Aktivieren der erweiterten Funktionalität ermöglicht spezielle Features wie Audio-Normalisierung, Equalizer und Visualizer, jedoch könnte dies auf einigen Systemen zu Aussetzern in der Musik führen.", + "settings.option.audio.enableAdvancedFunctionality.ciderPPE": "Cider Adrenaline Processor™️", // Toggle + "settings.option.audio.enableAdvancedFunctionality.ciderPPE.description": "Psychoakustische Verbesserungen die die Musik lebensechter erscheinen lassen | Designed by Maikiwi.", + "settings.warn.audio.enableAdvancedFunctionality.ciderPPE.compatibility": "CAP ist nicht mit räumlichem Audio kompatibel. Bitte deaktiviere räumliches Audio zuerst.", + "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength": "CAP-Stärke", // Toggle + "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.description": "Ändert die Stärke der Nachbearbeitung. (Aggressiv könnte zu ungewünschten Änderungen führen)", + "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.standard": "Standard", + "settings.option.audio.enableAdvancedFunctionality.ciderPPEStrength.aggressive": "Aggressiv", "settings.option.audio.enableAdvancedFunctionality.audioNormalization": "Audio-Normalisierung", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioNormalization.description": "Normalisiert die Lautstärke aller Lieder, um die Hörerfahrung einheitlicher zu machen.", "settings.option.audio.enableAdvancedFunctionality.audioSpatialization": "Räumliches Audio", // Toggle "settings.option.audio.enableAdvancedFunctionality.audioSpatialization.description": "Macht die Musik räumlicher (3D-Effekt) (Beachte: Dies ist kein Dolby Atmos)", + "settings.warn.audio.enableAdvancedFunctionality.audioSpatialization.compatibility": "Räumliches Audio ist nicht mit CAP kompatibel. Bitte deaktiviere CAP zuerst.", // Settings - Visual "settings.header.visual": "Visuell", @@ -235,8 +290,15 @@ "settings.option.visual.hardwareAcceleration.description": "Erfordert Neustart der Anwendung", "settings.header.visual.hardwareAcceleration.default": "Normal", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", + "settings.header.visual.theme": "Theme", + "settings.option.visual.theme.github.download": "Von GitHub URL installieren", + "settings.prompt.visual.theme.github.URL": "Gib die URL des Themes ein, welches du installieren möchtest", + "settings.notyf.visual.theme.install.success": "Theme erfolgreich installiert", + "settings.notyf.visual.theme.install.error": "Theme-Installation fehlgeschlagen", // Settings - Visual - Theme name + "settings.option.visual.theme.default": "Cider", + "settings.option.visual.theme.dark": "Dunkel", // Refer to term.disabled for the disabled option "settings.option.visual.showPersonalInfo": "Persönliche Daten anzeigen", // Toggle @@ -255,8 +317,8 @@ "settings.option.connectivity.discordRPC": "Discord Rich Presence", // Dropdown "settings.option.connectivity.playbackNotifications": "Wiedergabe-Benachrichtigungen", // Toggle // Refer to term.disabled for the disabled option - "settings.header.connectivity.discordRPC.cider": "Zeige als 'Cider'", - "settings.header.connectivity.discordRPC.appleMusic": "Zeige als 'Apple Music'", + "settings.header.connectivity.discordRPC.cider": "'Cider' anzeigen", + "settings.header.connectivity.discordRPC.appleMusic": "'Apple Music' anzeigen", "settings.option.connectivity.discordRPC.clearOnPause": "Leere Discord Rich Presence wenn pausiert", // Toggle "settings.option.connectivity.lastfmScrobble": "LastFM Scrobbling", // Option to Connect "settings.option.connectivity.lastfmScrobble.delay": "LastFM Scrobble Delay (%)", @@ -269,34 +331,34 @@ "settings.header.experimental": "Experimentell", "settings.header.experimental.description": "Passe die experimentellen Einstellungen für Cider an.", "settings.option.experimental.compactUI": "Kompaktes UI", // Toggle - "settings.option.experimental.closeButtonBehaviour": "Verhalten der Schließtaste", - "settings.option.experimental.closeButtonBehaviour.quit": "Cider Schließen", - "settings.option.experimental.closeButtonBehaviour.minimizeTaskbar": "In Taskleiste minimieren", - "settings.option.experimental.closeButtonBehaviour.minimizeTray": "In den Tray minimieren", + "settings.option.experimental.close_button_hide": "Schließtaste soll die App verbergen", + "settings.option.experimental.copy_log": "Kopiere Logs in die Zwischenablage", + "settings.option.experimental.inline_playlists": "Inline Playlists und Alben", // Refer to term.disabled & term.enabled // Spatialization Menu - "spatial.spatialProperties" : "Räumliche Einstellungen", - "spatial.width" : "Breite", - "spatial.height" : "Höhe", - "spatial.depth" : "Tiefe", - "spatial.gain" : "Gain", - "spatial.roomMaterials" : "Raummaterialien", - "spatial.roomDimensions" : "Raumabmessungen", - "spatial.roomPositions" : "Raumpositionen", - "spatial.setDimensions" : "Setze Abmessungen", - "spatial.setPositions" : "Setze Positionen", - "spatial.up" : "Oben", - "spatial.front" : "Vorne", - "spatial.left" : "Links", - "spatial.right" : "Rechts", - "spatial.back" : "Hinten", - "spatial.down" : "Unten", - "spatial.listener" : "Hörer*in", - "spatial.audioSource" : "Audioquelle", + "spatial.notTurnedOn": "Die Audio-Spatialisierung ist deaktiviert. Um sie zu verwenden, musst du diese zuerst aktivieren.", + "spatial.spatialProperties": "Räumliche Einstellungen", + "spatial.width": "Breite", + "spatial.height": "Höhe", + "spatial.depth": "Tiefe", + "spatial.gain": "Gain", + "spatial.roomMaterials": "Raummaterialien", + "spatial.roomDimensions": "Raumabmessungen", + "spatial.roomPositions": "Raumpositionen", + "spatial.setDimensions": "Setze Abmessungen", + "spatial.setPositions": "Setze Positionen", + "spatial.up": "Oben", + "spatial.front": "Vorne", + "spatial.left": "Links", + "spatial.right": "Rechts", + "spatial.back": "Hinten", + "spatial.down": "Unten", + "spatial.listener": "Hörer*in", + "spatial.audioSource": "Audioquelle", // Settings - Unfinished - "settings.header.unfinished": "Unfertig", + "settings.header.unfinished": "Unvollendet", // Web Remote "remote.web.title": "Cider Remote", diff --git a/src/i18n/en_PISS.jsonc b/src/i18n/en_PISS.jsonc index bb4b38b6..1cb5088f 100644 --- a/src/i18n/en_PISS.jsonc +++ b/src/i18n/en_PISS.jsonc @@ -124,7 +124,12 @@ "term.contributors": "more pisseneers", "term.equalizer": "advanced piss configuration", "term.reset": "repiss", - "term.tracks": "pisses", // Assume x amount of tracks. e.g. 50 tracks + // Example for multiple plural forms : look up the key for your language in https://github.com/prantlf/fast-plural-rules/blob/master/docs/languages.md#supported-languages + "term.track": { + "one" : "piss", + "other" : "pisses" + }, + // "term.tracks": "pisses", // Assume x amount of tracks. e.g. 50 tracks "term.videos": "piss videos", "term.menu": "piss menu", "term.check": "piss!", @@ -136,6 +141,8 @@ "term.addedpreset": "obtained prepiss", "term.deletepreset.warn": "are you sure you want to obliterate this prepiss?", "term.deletedpreset": "obliterated prepiss", + "term.defaultPresets": "default prepisses", + "term.userPresets": "your prepisses", "term.requestError": "the request got pissed on", "term.song.link.generate": "pissing on piss.link…", "term.musicVideos": "piss videos", // Search page friendlyTypes @@ -146,6 +153,7 @@ "term.recordLabels": "piss labels", "term.videoExtras": "extra piss videos", "term.top": "topiss", + "term.version": "pission", // Home "home.title": "piss central", @@ -290,6 +298,10 @@ "settings.header.visual.hardwareAcceleration.default": "default piss", "settings.header.visual.hardwareAcceleration.webGPU": "WebPISS", "settings.header.visual.theme": "colored piss", + "settings.option.visual.theme.github.download": "piss from PissHub URL", + "settings.prompt.visual.theme.github.URL": "piss on the URL for your colorful piss", + "settings.notyf.visual.theme.install.success": "colored piss obtained", + "settings.notyf.visual.theme.install.error": "colored piss got pissed on…", // Settings - Visual - Theme name "settings.option.visual.theme.default": "same old piss", diff --git a/src/i18n/zh_TW.jsonc b/src/i18n/zh_TW.jsonc index 4a95a7ba..1d0cb872 100644 --- a/src/i18n/zh_TW.jsonc +++ b/src/i18n/zh_TW.jsonc @@ -127,10 +127,13 @@ "one" : "首歌曲", "other" : "首歌曲" }, + "term.tracks": "首歌曲", "term.videos": "影片", "term.menu": "選單", "term.check": "檢查", "term.aboutArtist": "關於{{artistName}}", // e.g. 'About Doja Cat' + "term.requestError": "請求發生錯誤。", + "term.song.link.generate": "正在取得 song.link 的分享網址...", "term.version": "版本", // Home @@ -272,6 +275,10 @@ "settings.header.visual.hardwareAcceleration.default": "預設", "settings.header.visual.hardwareAcceleration.webGPU": "WebGPU", "settings.header.visual.theme": "主題", + "settings.option.visual.theme.github.download" : "從 GitHub 連結安裝" , + "settings.prompt.visual.theme.github.URL" : "輸入你要安裝的主題連結" , + "settings.notyf.visual.theme.install.success" : "主題成功安裝" , + "settings.notyf.visual.theme.install.error" : "主題安裝失敗" , // Settings - Visual - Theme name "settings.option.visual.theme.default": "Cider", diff --git a/src/main/base/browserwindow.ts b/src/main/base/browserwindow.ts index f3d151d4..c62488e0 100644 --- a/src/main/base/browserwindow.ts +++ b/src/main/base/browserwindow.ts @@ -217,11 +217,11 @@ export class BrowserWindow { res.send("Stopped") break; case "next": - BrowserWindow.win.webContents.executeJavaScript("MusicKit.getInstance().skipToNextItem()") + BrowserWindow.win.webContents.executeJavaScript("if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1 && MusicKit.getInstance().queue.nextPlayableItemIndex != null) {MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex);}") res.send("Next") break; case "previous": - BrowserWindow.win.webContents.executeJavaScript("MusicKit.getInstance().skipToPreviousItem()") + BrowserWindow.win.webContents.executeJavaScript("if (MusicKit.getInstance().queue.previousPlayableItemIndex != -1 && MusicKit.getInstance().queue.previousPlayableItemIndex != null) {MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.previousPlayableItemIndex);}") res.send("Previous") break; default: { diff --git a/src/main/base/wsapi.ts b/src/main/base/wsapi.ts index 95d2b521..619a0ac6 100644 --- a/src/main/base/wsapi.ts +++ b/src/main/base/wsapi.ts @@ -182,11 +182,12 @@ export class wsapi { response.message = "Unmuted"; break; case "next": - this._win.webContents.executeJavaScript(`MusicKit.getInstance().skipToNextItem()`); + this._win.webContents.executeJavaScript(`if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1 && MusicKit.getInstance().queue.nextPlayableItemIndex != null) { + MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex);}`); response.message = "Next"; break; case "previous": - this._win.webContents.executeJavaScript(`MusicKit.getInstance().skipToPreviousItem()`); + this._win.webContents.executeJavaScript(`if (MusicKit.getInstance().queue.previousPlayableItemIndex != -1 && MusicKit.getInstance().queue.previousPlayableItemIndex != null) {MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.previousPlayableItemIndex)}`); response.message = "Previous"; break; case "musickit-api": diff --git a/src/main/plugins/discordrpc.ts b/src/main/plugins/discordrpc.ts index 49bb35df..3b11557e 100644 --- a/src/main/plugins/discordrpc.ts +++ b/src/main/plugins/discordrpc.ts @@ -9,6 +9,7 @@ export default class DiscordRichPresence { */ private static _store: any; private _app : any; + private _attributes : any; private static _connection: boolean = false; /** @@ -148,7 +149,7 @@ export default class DiscordRichPresence { state: `${attributes.artistName ? `by ${attributes.artistName}` : ''}`, startTimestamp: attributes.startTime, endTimestamp: attributes.endTime, - largeImageKey: attributes.artwork.url.replace('{w}', '1024').replace('{h}', '1024'), + largeImageKey: attributes?.artwork?.url?.replace('{w}', '1024').replace('{h}', '1024'), largeImageText: attributes.albumName, instance: false, // Whether the activity is in a game session buttons: [ @@ -217,9 +218,8 @@ export default class DiscordRichPresence { }) .then(res => res.json()) .then(function(json){ - self._activity['largeImageKey'] = json.url - console.log(json.url) - self._client.setActivity(self._activity); + self._attributes["artwork"]["url"] = json.url + self.updateActivity(self._attributes) }) }) @@ -237,6 +237,7 @@ export default class DiscordRichPresence { * @param attributes Music Attributes (attributes.status = current state) */ onPlaybackStateDidChange(attributes: object): void { + this._attributes = attributes this.updateActivity(attributes) } @@ -245,6 +246,7 @@ export default class DiscordRichPresence { * @param attributes Music Attributes */ onNowPlayingItemDidChange(attributes: object): void { + this._attributes = attributes this.updateActivity(attributes) } } diff --git a/src/preload/cider-preload.js b/src/preload/cider-preload.js index f6317878..dea3f90c 100644 --- a/src/preload/cider-preload.js +++ b/src/preload/cider-preload.js @@ -127,11 +127,14 @@ const MusicKitInterop = { }, next: () => { - MusicKit.getInstance().skipToNextItem().then(r => console.log(`[MusicKitInterop.next] Skipping to Next ${r}`)); + if (MusicKit.getInstance().queue.nextPlayableItemIndex != -1 && MusicKit.getInstance().queue.nextPlayableItemIndex != null) + MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.nextPlayableItemIndex); + // MusicKit.getInstance().skipToNextItem().then(r => console.log(`[MusicKitInterop.next] Skipping to Next ${r}`)); }, previous: () => { - MusicKit.getInstance().skipToPreviousItem().then(r => console.log(`[MusicKitInterop.previous] Skipping to Previous ${r}`)); + if (MusicKit.getInstance().queue.previousPlayableItemIndex != -1 && MusicKit.getInstance().queue.previousPlayableItemIndex != null) + MusicKit.getInstance().changeToMediaAtIndex(MusicKit.getInstance().queue.previousPlayableItemIndex); } } diff --git a/src/renderer/index.js b/src/renderer/index.js index 08251c58..2e0da967 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -597,6 +597,8 @@ const app = new Vue({ } catch (err) { } + this.mk._bag.features['seamless-audio-transitions'] = this.cfg.audio.seamless_audio + // API Fallback if (!this.chrome.userinfo) { this.chrome.userinfo = { @@ -1348,7 +1350,7 @@ const app = new Vue({ app.mk.seekToTime(0); } else { app.prevButtonBackIndicator = false; - app.mk.skipToPreviousItem() + app.skipToPreviousItem() } }, async getNowPlayingItemDetailed(target) { @@ -3730,6 +3732,16 @@ const app = new Vue({ if (sellang.startsWith("en") && this.mk.storefrontId != "us") sellang = "en-gb" return await sellang } + }, + skipToNextItem(){ + // app.mk.skipToNextItem() is buggy somehow so use this + if (this.mk.queue.nextPlayableItemIndex != -1 && this.mk.queue.nextPlayableItemIndex != null) + this.mk.changeToMediaAtIndex(this.mk.queue.nextPlayableItemIndex); + }, + skipToPreviousItem(){ + // app.mk.skipToPreviousItem() is buggy somehow so use this + if (this.mk.queue.previousPlayableItemIndex != -1 && this.mk.queue.previousPlayableItemIndex != null) + this.mk.changeToMediaAtIndex(this.mk.queue.previousPlayableItemIndex); } } }) diff --git a/src/renderer/views/app/chrome-top.ejs b/src/renderer/views/app/chrome-top.ejs index 422fb24c..4c88f6fe 100644 --- a/src/renderer/views/app/chrome-top.ejs +++ b/src/renderer/views/app/chrome-top.ejs @@ -30,7 +30,7 @@
- +
- +
- +
- +