diff options
author | RaindropsSys <raindrops@equestria.dev> | 2023-11-08 20:59:42 +0100 |
---|---|---|
committer | RaindropsSys <raindrops@equestria.dev> | 2023-11-08 20:59:42 +0100 |
commit | b83a38434156038bc02db74cb93fa8460d0f2f32 (patch) | |
tree | 5229c62153ad640f164ff3d4a837bd8345305e02 | |
parent | 4755889793a36a1f33282ee4759445bef1eb2bb2 (diff) | |
download | mist-b83a38434156038bc02db74cb93fa8460d0f2f32.tar.gz mist-b83a38434156038bc02db74cb93fa8460d0f2f32.tar.bz2 mist-b83a38434156038bc02db74cb93fa8460d0f2f32.zip |
Updated 16 files, added 3 files, deleted android/app/release/app-release.apk.zip and renamed android/app/release/app-release.apk (automated)
-rw-r--r-- | .DS_Store | bin | 18436 -> 18436 bytes | |||
-rw-r--r-- | android/.idea/deploymentTargetDropDown.xml | 15 | ||||
-rw-r--r-- | android/app/release/app-release.apk.zip | bin | 8301290 -> 0 bytes | |||
-rw-r--r-- | android/app/release/app-release.apka (renamed from android/app/release/app-release.apk) | bin | 22997059 -> 23034331 bytes | |||
-rw-r--r-- | android/gradle/libs.versions.toml | 2 | ||||
-rw-r--r-- | android/gradle/wrapper/gradle-wrapper.properties | 2 | ||||
-rw-r--r-- | api/lyrics.php | 14 | ||||
-rw-r--r-- | api/randomFavorites.php | 8 | ||||
-rw-r--r-- | app/.DS_Store | bin | 6148 -> 6148 bytes | |||
-rw-r--r-- | app/index.php | 300 | ||||
-rw-r--r-- | app/notes/update-1.7.2.php | 12 | ||||
-rw-r--r-- | app/ui/listing.php | 4 | ||||
-rw-r--r-- | app/ui/settings.php | 7 | ||||
-rw-r--r-- | app/ui/update.php | 2 | ||||
-rw-r--r-- | assets/.DS_Store | bin | 10244 -> 10244 bytes | |||
-rw-r--r-- | assets/icons/notes-bugs.svg | 1 | ||||
-rw-r--r-- | assets/styles.css | 4 | ||||
-rw-r--r-- | oauth/.DS_Store | bin | 6148 -> 6148 bytes | |||
-rw-r--r-- | oauth/callback-native/index.php | 4 | ||||
-rw-r--r-- | oauth/callback/index.php | 4 | ||||
-rw-r--r-- | version | 2 |
21 files changed, 215 insertions, 166 deletions
Binary files differ diff --git a/android/.idea/deploymentTargetDropDown.xml b/android/.idea/deploymentTargetDropDown.xml index 462cfeb..0c0c338 100644 --- a/android/.idea/deploymentTargetDropDown.xml +++ b/android/.idea/deploymentTargetDropDown.xml @@ -3,20 +3,7 @@ <component name="deploymentTargetDropDown"> <value> <entry key="app"> - <State> - <targetSelectedWithDropDown> - <Target> - <type value="QUICK_BOOT_TARGET" /> - <deviceKey> - <Key> - <type value="VIRTUAL_DEVICE_PATH" /> - <value value="$USER_HOME$/.android/avd/Pixel_4a_API_31.avd" /> - </Key> - </deviceKey> - </Target> - </targetSelectedWithDropDown> - <timeTargetWasSelectedWithDropDown value="2023-10-31T18:25:15.979904Z" /> - </State> + <State /> </entry> </value> </component> diff --git a/android/app/release/app-release.apk.zip b/android/app/release/app-release.apk.zip Binary files differdeleted file mode 100644 index aa5811b..0000000 --- a/android/app/release/app-release.apk.zip +++ /dev/null diff --git a/android/app/release/app-release.apk b/android/app/release/app-release.apka Binary files differindex 5dc2a7d..0b3aa69 100644 --- a/android/app/release/app-release.apk +++ b/android/app/release/app-release.apka diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml index fde57b9..43e3982 100644 --- a/android/gradle/libs.versions.toml +++ b/android/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -agp = "8.3.0-alpha07" +agp = "8.3.0-alpha11" kotlin = "1.9.0" core-ktx = "1.10.1" junit = "4.13.2" diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 2ff99f2..b3f0697 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Fri Oct 27 08:52:38 CEST 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-rc-2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/api/lyrics.php b/api/lyrics.php index 11910d9..d72a17c 100644 --- a/api/lyrics.php +++ b/api/lyrics.php @@ -48,9 +48,17 @@ $id = array_values(array_filter(json_decode(file_get_contents("https://api.geniu $data = []; exec('bash -c "cd /opt/spotify/spotify-lyrics-api; python genius.py ' . $id . '"', $data); $data = array_slice(array_map(function ($i) { - if (str_ends_with($i, "1Embed")) { - return substr($i, 0, -6); - } elseif (str_ends_with($i, "2Embed")) { + if (str_ends_with($i, "1Embed") + || str_ends_with($i, "2Embed") + || str_ends_with($i, "3Embed") + || str_ends_with($i, "4Embed") + || str_ends_with($i, "5Embed") + || str_ends_with($i, "6Embed") + || str_ends_with($i, "7Embed") + || str_ends_with($i, "8Embed") + || str_ends_with($i, "9Embed") + || str_ends_with($i, "0Embed") + ) { return substr($i, 0, -6); } elseif (str_ends_with($i, "Embed")) { return substr($i, 0, -5); diff --git a/api/randomFavorites.php b/api/randomFavorites.php new file mode 100644 index 0000000..8994c6f --- /dev/null +++ b/api/randomFavorites.php @@ -0,0 +1,8 @@ +<?php + +header("X-Frame-Options: SAMEORIGIN"); +require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; +header("Content-Type: application/json"); +global $favorites; +shuffle($favorites); +die(json_encode($favorites));
\ No newline at end of file diff --git a/app/.DS_Store b/app/.DS_Store Binary files differindex 1ab3b24..eb8b571 100644 --- a/app/.DS_Store +++ b/app/.DS_Store diff --git a/app/index.php b/app/index.php index 6de3cdf..b53bb43 100644 --- a/app/index.php +++ b/app/index.php @@ -304,7 +304,10 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI } if (window.discordRichPresenceData !== null) window.discordRichPresenceData = { - largeImageKey: "logo" + largeImageKey: "logo", + buttons : [ + { label: 'View profile', url: 'https://mist.equestria.horse/profile/?/<?= $_PROFILE["id"] ?>' } + ] }; document.title = "Mist"; @@ -388,7 +391,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI function initializePlayerDocument() { playerDocument.getElementById("player-audio").ontimeupdate = playerDocument.getElementById("player-audio").onchange = playerDocument.getElementById("player-audio").onunload = playerDocument.getElementById("player-audio").onstop = () => { - updateDisplay(); + updateDisplay(false); if (playingStella) { if (playerDocument.getElementById("player-audio").paused) { @@ -466,7 +469,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI window.preloadedGainsBoosted2[window.currentSongID].connect(window.currentNormalizationContext.destination); } - updateDisplay(); + updateDisplay(false); } window.needsDurationChange = true; @@ -481,14 +484,14 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI playerDocument.getElementById("player-audio").onpause = () => { if (window.preloadedGains[window.currentSongID]) { try { - window.currentNormalizationSource.disconnect(window.preloadedGains[window.currentSongID]); + window.currentNormalizationSource.disconnect(); if (playingStella) { - window.currentNormalizationSource2.disconnect(window.preloadedGainsBoosted1[window.currentSongID]); - window.currentNormalizationSource3.disconnect(window.preloadedGainsBoosted2[window.currentSongID]); + window.currentNormalizationSource2.disconnect(); + window.currentNormalizationSource3.disconnect(); } - window.preloadedGains[window.currentSongID].disconnect(window.currentNormalizationContext.destination); + window.preloadedGains[window.currentSongID].disconnect(); } catch (e) { console.error(e); } @@ -501,16 +504,16 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI window.currentNormalizationSource5 ]) { try { - player.disconnect(window.preloadedGainsBoosted1[window.currentSongID]); - window.preloadedGainsBoosted1[window.currentSongID].disconnect(window.currentNormalizationContext.destination); + player.disconnect(); + window.preloadedGainsBoosted1[window.currentSongID].disconnect(); } catch (e) { console.error(e); } } try { - window.currentNormalizationSource1.disconnect(window.preloadedGainsBoosted2[window.currentSongID]); - window.preloadedGainsBoosted2[window.currentSongID].disconnect(window.currentNormalizationContext.destination); + window.currentNormalizationSource1.disconnect(); + window.preloadedGainsBoosted2[window.currentSongID].disconnect(); } catch (e) { console.error(e); } @@ -522,7 +525,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI return; } - updateDisplay(); + updateDisplay(false); updateAndroidNotification(); } } @@ -535,67 +538,53 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI } } - function updateDisplay() { - if (playerDocument.getElementById("player-audio").paused) { - document.title = "Mist"; - } else if (currentSong) { - document.title = currentSong.artist + " — " + currentSong.title; - } else { - document.title = "Mist"; - } - - if (window.discordRichPresenceData !== null && currentSong) window.discordRichPresenceData = { - largeImageKey: "https://" + location.hostname + "/albumart.php?i=" + currentSongID, - state: currentSong.title, - details: currentSong.artist, - smallImageKey: "logo", - smallImageText: "Listening on Mist", - largeImageText: currentSong.album ?? currentSong.artist - }; - - playerDocument.getElementById("info").style.display = "grid"; - playerDocument.getElementById("cover").style.display = "none"; - - if ('mediaSession' in document.getElementById("player").contentWindow.navigator) { - document.getElementById("player").contentWindow.navigator.mediaSession.playbackState = playerDocument.getElementById("player-audio").paused ? "paused" : "playing"; - let state = { - duration: isFinite(playerDocument.getElementById("player-audio").duration) ? playerDocument.getElementById("player-audio").duration : 0, - position: playerDocument.getElementById("player-audio").currentTime, - playbackRate: 1 + function updateDisplay(initial) { + if (initial) { + if (playerDocument.getElementById("player-audio").paused) { + document.title = "Mist"; + } else if (currentSong) { + document.title = currentSong.artist + " — " + currentSong.title; + } else { + document.title = "Mist"; } - document.getElementById("player").contentWindow.navigator.mediaSession.setPositionState(state); - document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("play", () => { - playPause(); - }); - document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("pause", () => { - playPause(); - }); - document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("stop", () => { - stop(); - }); - document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("seekbackward", (e) => { - let time = e.seekOffset ?? 10; + if (window.discordRichPresenceData !== null && currentSong) window.discordRichPresenceData = { + largeImageKey: "https://" + location.hostname + "/albumart.php?i=" + currentSongID, + buttons : [ + { label: 'View profile', url: 'https://mist.equestria.horse/profile/?/<?= $_PROFILE["id"] ?>' } + ], + state: currentSong.title, + details: currentSong.artist, + smallImageKey: "logo", + smallImageText: "Listening on Mist", + largeImageText: currentSong.album ?? currentSong.artist + }; + + playerDocument.getElementById("info").style.display = "grid"; + playerDocument.getElementById("cover").style.display = "none"; + } - if (playerDocument.getElementById("player-audio").currentTime >= time) { - playerDocument.getElementById("player-audio").currentTime -= time; - } else { - playerDocument.getElementById("player-audio").currentTime = 0; - } + if ('mediaSession' in document.getElementById("player").contentWindow.navigator) { + if (initial) { + document.getElementById("player").contentWindow.navigator.mediaSession.playbackState = playerDocument.getElementById("player-audio").paused ? "paused" : "playing"; - if (playingStella) { - playerDocument.getElementById("player-audio-stella-side1").currentTime = playerDocument.getElementById("player-audio").currentTime; - playerDocument.getElementById("player-audio-stella-side2").currentTime = playerDocument.getElementById("player-audio").currentTime; - playerDocument.getElementById("player-audio-stella-side3").currentTime = playerDocument.getElementById("player-audio").currentTime; - playerDocument.getElementById("player-audio-stella-side4").currentTime = playerDocument.getElementById("player-audio").currentTime; - playerDocument.getElementById("player-audio-stella-side5").currentTime = playerDocument.getElementById("player-audio").currentTime; - } - }); - document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("seekforward", (e) => { - let time = e.seekOffset ?? 10; + document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("play", () => { + playPause(); + }); + document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("pause", () => { + playPause(); + }); + document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("stop", () => { + stop(); + }); + document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("seekbackward", (e) => { + let time = e.seekOffset ?? 10; - if (playerDocument.getElementById("player-audio").currentTime + time < playerDocument.getElementById("player-audio").duration) { - playerDocument.getElementById("player-audio").currentTime += time; + if (playerDocument.getElementById("player-audio").currentTime >= time) { + playerDocument.getElementById("player-audio").currentTime -= time; + } else { + playerDocument.getElementById("player-audio").currentTime = 0; + } if (playingStella) { playerDocument.getElementById("player-audio-stella-side1").currentTime = playerDocument.getElementById("player-audio").currentTime; @@ -604,57 +593,99 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI playerDocument.getElementById("player-audio-stella-side4").currentTime = playerDocument.getElementById("player-audio").currentTime; playerDocument.getElementById("player-audio-stella-side5").currentTime = playerDocument.getElementById("player-audio").currentTime; } - } else { + }); + document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("seekforward", (e) => { + let time = e.seekOffset ?? 10; + + if (playerDocument.getElementById("player-audio").currentTime + time < playerDocument.getElementById("player-audio").duration) { + playerDocument.getElementById("player-audio").currentTime += time; + + if (playingStella) { + playerDocument.getElementById("player-audio-stella-side1").currentTime = playerDocument.getElementById("player-audio").currentTime; + playerDocument.getElementById("player-audio-stella-side2").currentTime = playerDocument.getElementById("player-audio").currentTime; + playerDocument.getElementById("player-audio-stella-side3").currentTime = playerDocument.getElementById("player-audio").currentTime; + playerDocument.getElementById("player-audio-stella-side4").currentTime = playerDocument.getElementById("player-audio").currentTime; + playerDocument.getElementById("player-audio-stella-side5").currentTime = playerDocument.getElementById("player-audio").currentTime; + } + } else { + next(); + } + }); + document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("seekto", (e) => { + if (e.seekTime) { + playerDocument.getElementById("player-audio").currentTime = e.seekTime; + + if (playingStella) { + playerDocument.getElementById("player-audio-stella-side1").currentTime = playerDocument.getElementById("player-audio").currentTime; + playerDocument.getElementById("player-audio-stella-side2").currentTime = playerDocument.getElementById("player-audio").currentTime; + playerDocument.getElementById("player-audio-stella-side3").currentTime = playerDocument.getElementById("player-audio").currentTime; + playerDocument.getElementById("player-audio-stella-side4").currentTime = playerDocument.getElementById("player-audio").currentTime; + playerDocument.getElementById("player-audio-stella-side5").currentTime = playerDocument.getElementById("player-audio").currentTime; + } + } + }); + document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("previoustrack", () => { + if (playlist[currentPlaylistPosition - 1]) { + previous(); + } else { + playerDocument.getElementById("player-audio").currentTime = 0; + + if (playingStella) { + playerDocument.getElementById("player-audio-stella-side1").currentTime = playerDocument.getElementById("player-audio").currentTime; + playerDocument.getElementById("player-audio-stella-side2").currentTime = playerDocument.getElementById("player-audio").currentTime; + playerDocument.getElementById("player-audio-stella-side3").currentTime = playerDocument.getElementById("player-audio").currentTime; + playerDocument.getElementById("player-audio-stella-side4").currentTime = playerDocument.getElementById("player-audio").currentTime; + playerDocument.getElementById("player-audio-stella-side5").currentTime = playerDocument.getElementById("player-audio").currentTime; + } + } + }); + document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("nexttrack", () => { next(); - } - }); - document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("seekto", (e) => { - if (e.seekTime) { - playerDocument.getElementById("player-audio").currentTime = e.seekTime; + }); + } - if (playingStella) { - playerDocument.getElementById("player-audio-stella-side1").currentTime = playerDocument.getElementById("player-audio").currentTime; - playerDocument.getElementById("player-audio-stella-side2").currentTime = playerDocument.getElementById("player-audio").currentTime; - playerDocument.getElementById("player-audio-stella-side3").currentTime = playerDocument.getElementById("player-audio").currentTime; - playerDocument.getElementById("player-audio-stella-side4").currentTime = playerDocument.getElementById("player-audio").currentTime; - playerDocument.getElementById("player-audio-stella-side5").currentTime = playerDocument.getElementById("player-audio").currentTime; - } - } - }); - document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("previoustrack", () => { - if (playlist[currentPlaylistPosition - 1]) { - previous(); - } else { - playerDocument.getElementById("player-audio").currentTime = 0; + let state = { + duration: isFinite(playerDocument.getElementById("player-audio").duration) ? playerDocument.getElementById("player-audio").duration : 0, + position: playerDocument.getElementById("player-audio").currentTime, + playbackRate: 1 + } + document.getElementById("player").contentWindow.navigator.mediaSession.setPositionState(state); + } - if (playingStella) { - playerDocument.getElementById("player-audio-stella-side1").currentTime = playerDocument.getElementById("player-audio").currentTime; - playerDocument.getElementById("player-audio-stella-side2").currentTime = playerDocument.getElementById("player-audio").currentTime; - playerDocument.getElementById("player-audio-stella-side3").currentTime = playerDocument.getElementById("player-audio").currentTime; - playerDocument.getElementById("player-audio-stella-side4").currentTime = playerDocument.getElementById("player-audio").currentTime; - playerDocument.getElementById("player-audio-stella-side5").currentTime = playerDocument.getElementById("player-audio").currentTime; - } - } - }); - document.getElementById("player").contentWindow.navigator.mediaSession.setActionHandler("nexttrack", () => { - next(); - }); + if (initial) { + if (currentPlaylistPosition === 0) { + playerDocument.getElementById("btn-previous").classList.add("disabled"); + playerDocumentMobile.getElementById("btn-previous").classList.add("disabled"); + } else { + playerDocument.getElementById("btn-previous").classList.remove("disabled"); + playerDocumentMobile.getElementById("btn-previous").classList.remove("disabled"); + } + + if (currentPlaylistPosition === playlist.length - 1) { + playerDocument.getElementById("btn-next").classList.add("disabled"); + playerDocumentMobile.getElementById("btn-next").classList.add("disabled"); + } else { + playerDocument.getElementById("btn-next").classList.remove("disabled"); + playerDocumentMobile.getElementById("btn-next").classList.remove("disabled"); + } } - if (currentPlaylistPosition === 0) { - playerDocument.getElementById("btn-previous").classList.add("disabled"); - playerDocumentMobile.getElementById("btn-previous").classList.add("disabled"); - } else { - playerDocument.getElementById("btn-previous").classList.remove("disabled"); - playerDocumentMobile.getElementById("btn-previous").classList.remove("disabled"); + if (initial) { + if (window.currentSong) { + playerDocument.getElementById("title").innerText = playerDocumentMobile.getElementById("title").innerText = window.currentSong.title; + playerDocument.getElementById("artist").innerText = playerDocumentMobile.getElementById("artist").innerText = window.currentSong.artist; + playerDocument.getElementById("album").innerText = playerDocumentMobile.getElementById("album").innerText = window.currentSong.album; + playerDocument.getElementById("album-art").src = playerDocumentMobile.getElementById("album-art").src = "/assets/content/" + window.currentSongID + ".jpg"; + playerDocumentMobile.getElementById("album-art-bg").style.backgroundImage = "url('/assets/content/" + window.currentSongID + ".jpg')"; + } } - if (currentPlaylistPosition === playlist.length - 1) { - playerDocument.getElementById("btn-next").classList.add("disabled"); - playerDocumentMobile.getElementById("btn-next").classList.add("disabled"); + if (document.hidden) return; + + if (isFinite(playerDocument.getElementById("player-audio").duration)) { + playerDocument.getElementById("seekbar").style.width = playerDocumentMobile.getElementById("seekbar").style.width = ((playerDocument.getElementById("player-audio").currentTime / playerDocument.getElementById("player-audio").duration) * 100) + "%"; } else { - playerDocument.getElementById("btn-next").classList.remove("disabled"); - playerDocumentMobile.getElementById("btn-next").classList.remove("disabled"); + playerDocument.getElementById("seekbar").style.width = playerDocumentMobile.getElementById("seekbar").style.width = "0"; } if (isFinite(playerDocument.getElementById("player-audio").duration)) { @@ -670,20 +701,6 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI } else { playerDocument.getElementById("btn-play-icon").src = playerDocumentMobile.getElementById("btn-play-icon").src = "/assets/icons/pause.svg"; } - - if (window.currentSong) { - playerDocument.getElementById("title").innerText = playerDocumentMobile.getElementById("title").innerText = window.currentSong.title; - playerDocument.getElementById("artist").innerText = playerDocumentMobile.getElementById("artist").innerText = window.currentSong.artist; - playerDocument.getElementById("album").innerText = playerDocumentMobile.getElementById("album").innerText = window.currentSong.album; - playerDocument.getElementById("album-art").src = playerDocumentMobile.getElementById("album-art").src = "/assets/content/" + window.currentSongID + ".jpg"; - playerDocumentMobile.getElementById("album-art-bg").style.backgroundImage = "url('/assets/content/" + window.currentSongID + ".jpg')"; - } - - if (isFinite(playerDocument.getElementById("player-audio").duration)) { - playerDocument.getElementById("seekbar").style.width = playerDocumentMobile.getElementById("seekbar").style.width = ((playerDocument.getElementById("player-audio").currentTime / playerDocument.getElementById("player-audio").duration) * 100) + "%"; - } else { - playerDocument.getElementById("seekbar").style.width = playerDocumentMobile.getElementById("seekbar").style.width = "0"; - } } window.playPause = () => { @@ -755,7 +772,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI window.updateRepeat = () => { if (window.currentSong) { - updateDisplay(); + updateDisplay(false); } if (window.repeat) { @@ -792,7 +809,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI window.updateShuffle = () => { if (window.currentSong) { - updateDisplay(); + updateDisplay(false); } if (window.shuffle) { @@ -815,14 +832,14 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI } } - window.shuffleList = (playlistID) => { + window.shuffleList = async (playlistID) => { window.shuffle = true; playerDocument.getElementById("btn-shuffle-icon").src = playerDocumentMobile.getElementById("btn-shuffle-icon").src = "/assets/icons/shuffle-on.svg"; if (playlistID) { if (playlistID === "favorites") { window.currentPlaylistID = playlistID; - window.playlist = favorites; + window.playlist = await (await fetch("/api/randomFavorites.php")).json(); } else if (playlistID.startsWith("album:")) { window.currentPlaylistID = playlistID; window.playlist = albums[playlistID.substring(6)].tracks; @@ -834,7 +851,10 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI window.playlist = []; } - window.playlist = shuffleArray(window.playlist); + if (playlistID && playlistID !== "favorites") { + window.playlist = shuffleArray(window.playlist); + } + window.playSong(window.playlist[0], "keep"); } @@ -866,6 +886,11 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI } playerDocument.getElementById("player-audio").pause(); + playerDocument.getElementById("player-audio-stella-side1").pause(); + playerDocument.getElementById("player-audio-stella-side2").pause(); + playerDocument.getElementById("player-audio-stella-side3").pause(); + playerDocument.getElementById("player-audio-stella-side4").pause(); + playerDocument.getElementById("player-audio-stella-side5").pause(); playerDocument.getElementById("player-audio").currentTime = 0; window.playingStella = false; @@ -892,7 +917,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI window.currentSong = songs[id]; window.currentSongID = id; - updateDisplay(); + updateDisplay(true); updateAndroidNotification(); if (document.getElementById("ui").contentWindow.refreshQueue) document.getElementById("ui").contentWindow.refreshQueue(); @@ -904,9 +929,9 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI if (stellaCompatible) { window.preloaded[id] = await Stella.build("/assets/content/" + id + ".stella"); - window.preloadedGains[id] = await normalizeAudio(window.preloaded[id].stems.other.buffer, 0); - window.preloadedGainsBoosted1[id] = await normalizeAudio(window.preloaded[id].stems.other.buffer, .05); - window.preloadedGainsBoosted2[id] = await normalizeAudio(window.preloaded[id].stems.other.buffer, .1); + window.preloadedGains[id] = await normalizeAudio(window.preloaded[id].stems.vocals.buffer, 0); + window.preloadedGainsBoosted1[id] = await normalizeAudio(window.preloaded[id].stems.vocals.buffer, .05); + window.preloadedGainsBoosted2[id] = await normalizeAudio(window.preloaded[id].stems.vocals.buffer, .1); } else { if (!window.preloaded[id]) { window.buffering = true; @@ -929,6 +954,8 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI preloadMore(); window.needsDurationChange = true; + if (window.currentSongID !== id) return; + if (!stellaCompatible) { if (!window.preloadedURLs[id]) { window.preloadedURLs[id] = localStorage.getItem("data-saving") ? URL.createObjectURL(window.preloadedBlobs[id]) : URL.createObjectURL(window.preloadedBlobs[id]); @@ -1098,7 +1125,10 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI window.discordRichPresenceData = null; } else { window.discordRichPresenceData = { - largeImageKey: "logo" + largeImageKey: "logo", + buttons : [ + { label: 'View profile', url: 'https://mist.equestria.horse/profile/?/<?= $_PROFILE["id"] ?>' } + ] }; } </script> diff --git a/app/notes/update-1.7.2.php b/app/notes/update-1.7.2.php new file mode 100644 index 0000000..ee9d110 --- /dev/null +++ b/app/notes/update-1.7.2.php @@ -0,0 +1,12 @@ +<?php if (!isset($releaseNotes)) die(); ?> +<h2 style="margin-top: 30px;">What's new in Mist?</h2> + +<div style="text-align: left; margin-top: 50px;"> + <div style="display: grid; grid-template-columns: 48px 1fr; grid-gap: 20px; margin-bottom: 20px;"> + <img src="/assets/icons/notes-bugs.svg" style="width: 48px;" class="icon" alt=""> + <div> + <div><b>Application improvements</b></div> + <div>We have caught and fixed numerous issues you might have encountered with the app to improve your experience.</div> + </div> + </div> +</div>
\ No newline at end of file diff --git a/app/ui/listing.php b/app/ui/listing.php index 510fa58..d29b355 100644 --- a/app/ui/listing.php +++ b/app/ui/listing.php @@ -116,8 +116,8 @@ if (!$presetList) { </div> </div> <div id="album-info-buttons"> - <a class="btn btn-primary <?= count(array_keys($list)) <= 0 ? "disabled" : "" ?>" onclick="window.parent.playSong('<?= array_keys($list)[0] ?? '' ?>', 'favorites');" style="width: 100px;">Play</a> - <a class="btn btn-outline-primary <?= count(array_keys($list)) <= 0 ? "disabled" : "" ?>" style="width: 100px;" onclick="window.parent.shuffleList('favorites');">Shuffle</a> + <a class="btn btn-primary <?= count(array_keys($list)) <= 0 || $userId !== $_PROFILE["id"] ? "disabled" : "" ?>" onclick="window.parent.playSong('<?= array_keys($list)[0] ?? '' ?>', 'favorites');" style="width: 100px;">Play</a> + <a class="btn btn-outline-primary <?= count(array_keys($list)) <= 0 || $userId !== $_PROFILE["id"] ? "disabled" : "" ?>" style="width: 100px;" onclick="window.parent.shuffleList('favorites');">Shuffle</a> </div> </div> </div> diff --git a/app/ui/settings.php b/app/ui/settings.php index 3ef243d..fe421a0 100644 --- a/app/ui/settings.php +++ b/app/ui/settings.php @@ -110,7 +110,10 @@ window.parent.discordRichPresenceData = null; } else { window.parent.discordRichPresenceData = { - largeImageKey: "logo" + largeImageKey: "logo", + buttons : [ + { label: 'View profile', url: 'https://mist.equestria.horse/profile/?/<?= $_PROFILE["id"] ?>' } + ] }; } } @@ -239,7 +242,6 @@ <img class="icon" src="/assets/logo-transparent.svg" style="vertical-align: middle; filter: grayscale(1) invert(1); width: 32px; height: 32px;" alt=""> <span style="vertical-align: middle;">Mist version <?= str_replace("|", " ", file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/version")) ?> (build <?= trim(file_exists("/opt/spotify/build.txt") ? file_get_contents("/opt/spotify/build.txt") : "trunk") ?>)<span id="copyright-separator-desktop"> · </span><span id="copyright-separator-mobile"><br></span>© <?= date('Y') ?> Equestria.dev</span> </div> - <br><br> <style> @media (min-width: 768px) { #copyright-separator-mobile { @@ -254,6 +256,7 @@ } </style> <?php endif; global $privacy; global $profile; ?> + <br><br> <script> async function saveCustom() { document.getElementById("banner").disabled = true; diff --git a/app/ui/update.php b/app/ui/update.php index a5776f3..3915992 100644 --- a/app/ui/update.php +++ b/app/ui/update.php @@ -25,7 +25,7 @@ <script src="/assets/js/common.js"></script> <div style="padding: 1rem;"> <div style="text-align: center;"> - <?php $releaseNotes = true; require_once "../notes/update-1.0.0.php" ?> + <?php $releaseNotes = true; require_once "../notes/update-1.7.2.php" ?> <a style="margin-top: 50px; margin-bottom: 30px; display: block;" class="btn btn-primary" onclick="localStorage.setItem('lastUpdate', '<?= trim(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/version")) ?>'); window.parent._modal.hide();">Continue</a> </div> diff --git a/assets/.DS_Store b/assets/.DS_Store Binary files differindex 45c9d8c..1f9a269 100644 --- a/assets/.DS_Store +++ b/assets/.DS_Store diff --git a/assets/icons/notes-bugs.svg b/assets/icons/notes-bugs.svg new file mode 100644 index 0000000..ad79b28 --- /dev/null +++ b/assets/icons/notes-bugs.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M480.248-194Q548-194 596-242.175T644-358v-162q0-67.65-48.248-115.825t-116-48.175Q412-684 364-635.825T316-520v162q0 67.65 48.248 115.825t116 48.175ZM406-330h148v-54H406v54Zm0-164h148v-54H406v54Zm74 55Zm0 299q-58 0-108-28.5T292-248H180v-54h92q-9-26-9.5-54.5T262-412h-82v-54h82q0-28-.75-55.5T272-574h-92v-54h112q14-27 37-47.5t49-34.5l-74-72 38-36 86 86q26-10 53-10t53 10l86-86 36 36-72 72q26 14 47.5 35t36.5 47h112v54h-92q11.5 25 10.75 52.5T698-466h82v54h-82q0 27-.5 55.5T688-302h92v54H668q-30 51-80 79.5T480-140Z"/></svg>
\ No newline at end of file diff --git a/assets/styles.css b/assets/styles.css index 890a13e..f661cdd 100644 --- a/assets/styles.css +++ b/assets/styles.css @@ -447,10 +447,6 @@ body.native #lyrics-page { } } -#badges { - -webkit-app-region: drag; -} - .dropdown-item:active img { filter: invert(1); } diff --git a/oauth/.DS_Store b/oauth/.DS_Store Binary files differindex 1333ff9..d23a8fa 100644 --- a/oauth/.DS_Store +++ b/oauth/.DS_Store diff --git a/oauth/callback-native/index.php b/oauth/callback-native/index.php index c289957..5095734 100644 --- a/oauth/callback-native/index.php +++ b/oauth/callback-native/index.php @@ -38,7 +38,9 @@ if (isset($result["access_token"])) { $result = $result_orig = curl_exec($crl); $result = json_decode($result, true); - if (!in_array($result["id"], $app["allowed"])) { + $isAllowed = in_array("5fe2cdf1-cff8-470e-a54a-ad1c713b0387", array_map(function ($i) { return $i["id"]; }, $result["transitiveGroups"])); + + if (!$isAllowed) { header("HTTP/1.1 403 Forbidden"); die("Not allowed to log in to this application. This will be reported."); } diff --git a/oauth/callback/index.php b/oauth/callback/index.php index bbb3322..f57e124 100644 --- a/oauth/callback/index.php +++ b/oauth/callback/index.php @@ -38,7 +38,9 @@ if (isset($result["access_token"])) { $result = $result_orig = curl_exec($crl); $result = json_decode($result, true); - if (!in_array($result["id"], $app["allowed"])) { + $isAllowed = in_array("5fe2cdf1-cff8-470e-a54a-ad1c713b0387", array_map(function ($i) { return $i["id"]; }, $result["transitiveGroups"])); + + if (!$isAllowed) { header("HTTP/1.1 403 Forbidden"); die("Not allowed to log in to this application. This will be reported."); } @@ -1 +1 @@ -1.7.0
\ No newline at end of file +1.7.3
\ No newline at end of file |