diff --git a/src/renderer/index.js b/src/renderer/index.js index ccdcd637..f5790219 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -206,6 +206,7 @@ const app = new Vue({ id: "" }, mxmtoken: "", + mkIsReady: false, playerReady: false, lyricon: false, currentTrackID: '', @@ -247,7 +248,7 @@ const app = new Vue({ }, prevButtonBackIndicator: false, currentSongInfo: {}, - page: "browse", + page: "", pageHistory: [], songstest: false, hangtimer: null, @@ -280,6 +281,12 @@ const app = new Vue({ }, }, methods: { + addFavorite(id, type) { + this.cfg.home.favoriteItems.push({ + id: id, + type: type + }); + }, modularUITest(val = false) { if (val) { document.querySelector("#app-main").classList.add("modular-fs") @@ -344,7 +351,9 @@ const app = new Vue({ let self = this clearTimeout(this.hangtimer) this.mk = MusicKit.getInstance() - this.mk.authorize() + this.mk.authorize().then(()=>{ + self.mkIsReady = true + }) this.$forceUpdate() if (this.isDev) { this.mk.privateEnabled = true @@ -493,6 +502,8 @@ const app = new Vue({ document.body.removeAttribute("loading") if (window.location.hash != "") { this.appRoute(window.location.hash) + }else{ + this.page = "home" } setTimeout(() => { @@ -568,6 +579,12 @@ const app = new Vue({ action: () => { this.deletePlaylist(playlist_id) } + }, + { + name: "Add to favorites", + action: () => { + this.addFavorite(playlist_id, "library-playlists") + } } ] } diff --git a/src/renderer/style.less b/src/renderer/style.less index 3e6c114e..5b7c53cb 100644 --- a/src/renderer/style.less +++ b/src/renderer/style.less @@ -1544,6 +1544,18 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb { top: 0; padding-top: var(--navbarHeight); + .artist-feed-card { + position: absolute; + bottom: 0; + left: 10%; + z-index: 1; + background: black; + width: 80%; + height: 96%; + overflow: scroll; + border-radius: 10px; + } + .col.madeforyou-col { width: 420px; min-width: 0px; diff --git a/src/renderer/views/components/mediaitem-square.ejs b/src/renderer/views/components/mediaitem-square.ejs index e9a1081a..7d7976d3 100644 --- a/src/renderer/views/components/mediaitem-square.ejs +++ b/src/renderer/views/components/mediaitem-square.ejs @@ -44,7 +44,8 @@ size: { type: String, default: '300' - } + }, + 'contextExt': {type: Object, required: false}, }, data: function () { return { @@ -62,7 +63,12 @@ }, async isInLibrary() { if (this.item.type && !this.item.type.includes("library")) { - var params = {"fields[playlists]": "inLibrary", "fields[albums]": "inLibrary", "relate": "library", "extend": this.revisedRandId()} + var params = { + "fields[playlists]": "inLibrary", + "fields[albums]": "inLibrary", + "relate": "library", + "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); this.addedToLibrary = (res && res.attributes && res.attributes.inLibrary) ? res.attributes.inLibrary : false } else { @@ -70,7 +76,13 @@ } }, async removeFromLibrary(id) { - var params = {"fields[playlists]": "inLibrary","fields[songs]": "inLibrary", "fields[albums]": "inLibrary", "relate": "library", "extend": this.revisedRandId()} + 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); if (res && res.relationships && res.relationships.library && res.relationships.library.data && res.relationships.library.data.length > 0) { @@ -109,7 +121,7 @@ break; case "small": return ["mediaitem-small"] - break; + break; case "music-videos": case "uploadedVideo": case "uploaded-videos": @@ -120,7 +132,7 @@ visibilityChanged: function (isVisible, entry) { this.isVisible = isVisible }, - async contextMenu(event) { + async contextMenu(event) { if (this.nomenu.includes(this.item.type)) { return } @@ -209,18 +221,36 @@ } }, { - "name": (this.addedToLibrary) ? "Remove from Library..." : "Add to Library...", + "name": (this.addedToLibrary) ? "Remove from Library..." : "Add to Library...", "action": async function () { let item_id = self.item.attributes.playParams.id ?? self.item.id; let data_type = self.item.attributes.playParams.kind ?? self.item.type; - if (self.addedToLibrary != true) { console.log("add"); app.addToLibrary(item_id); self.addedToLibrary = true} - else { console.log("remove"); await self.removeFromLibrary(item_id); self.addedToLibrary = false}; + if (self.addedToLibrary != true) { + console.log("add"); + app.addToLibrary(item_id); + self.addedToLibrary = true + } else { + console.log("remove"); + await self.removeFromLibrary(item_id); + self.addedToLibrary = false + } + ; } }, ] } } - if ((self.item.attributes.playParams.kind ?? self.item.type).includes("playlist")) { menus.normal.items.splice(2, 1);} + if ((self.item.attributes.playParams.kind ?? self.item.type).includes("playlist")) { + menus.normal.items.splice(2, 1); + } + if (this.contextExt) { + if (this.contextExt.normal) { + menus.normal.items = menus.normal.items.concat(this.contextExt.normal) + } + if (this.contextExt.multiple) { + menus.multiple.items = menus.multiple.items.concat(this.contextExt.multiple) + } + } CiderContextMenu.Create(event, menus[useMenu]) }, }, diff --git a/src/renderer/views/main.ejs b/src/renderer/views/main.ejs index f914890d..395eeb98 100644 --- a/src/renderer/views/main.ejs +++ b/src/renderer/views/main.ejs @@ -168,7 +168,7 @@
Apple Music
- + @@ -302,6 +302,12 @@ + + + +