From d5c49fbf15bcef2a6b9c9db04c2674dca7c7d9a0 Mon Sep 17 00:00:00 2001 From: RaindropsSys Date: Tue, 31 Oct 2023 22:30:42 +0100 Subject: Updated 9 files and added 21 files (automated) --- .DS_Store | Bin 18436 -> 18436 bytes android/.idea/deploymentTargetDropDown.xml | 15 +++- android/app/release/app-release.apk.zip | Bin 0 -> 8301290 bytes .../dev/equestria/mist/JavaScriptExtensions.kt | 5 ++ .../main/java/dev/equestria/mist/MainActivity.kt | 93 +++++++++++---------- .../app/src/main/res/drawable-anydpi/ic_next.xml | 15 ++++ .../app/src/main/res/drawable-anydpi/ic_pause.xml | 15 ++++ .../app/src/main/res/drawable-anydpi/ic_play.xml | 15 ++++ .../app/src/main/res/drawable-anydpi/ic_prev.xml | 15 ++++ android/app/src/main/res/drawable-hdpi/ic_next.png | Bin 0 -> 268 bytes .../app/src/main/res/drawable-hdpi/ic_pause.png | Bin 0 -> 168 bytes android/app/src/main/res/drawable-hdpi/ic_play.png | Bin 0 -> 272 bytes android/app/src/main/res/drawable-hdpi/ic_prev.png | Bin 0 -> 284 bytes android/app/src/main/res/drawable-mdpi/ic_next.png | Bin 0 -> 196 bytes .../app/src/main/res/drawable-mdpi/ic_pause.png | Bin 0 -> 141 bytes android/app/src/main/res/drawable-mdpi/ic_play.png | Bin 0 -> 171 bytes android/app/src/main/res/drawable-mdpi/ic_prev.png | Bin 0 -> 193 bytes .../app/src/main/res/drawable-xhdpi/ic_next.png | Bin 0 -> 267 bytes .../app/src/main/res/drawable-xhdpi/ic_pause.png | Bin 0 -> 214 bytes .../app/src/main/res/drawable-xhdpi/ic_play.png | Bin 0 -> 282 bytes .../app/src/main/res/drawable-xhdpi/ic_prev.png | Bin 0 -> 295 bytes .../app/src/main/res/drawable-xxhdpi/ic_next.png | Bin 0 -> 446 bytes .../app/src/main/res/drawable-xxhdpi/ic_pause.png | Bin 0 -> 236 bytes .../app/src/main/res/drawable-xxhdpi/ic_play.png | Bin 0 -> 376 bytes .../app/src/main/res/drawable-xxhdpi/ic_prev.png | Bin 0 -> 403 bytes app/.DS_Store | Bin 6148 -> 6148 bytes app/index.php | 48 ++++++++++- app/ui/lyrics.php | 2 +- assets/dark.css | 4 + assets/native.css | 6 -- 30 files changed, 177 insertions(+), 56 deletions(-) create mode 100644 android/app/release/app-release.apk.zip create mode 100644 android/app/src/main/res/drawable-anydpi/ic_next.xml create mode 100644 android/app/src/main/res/drawable-anydpi/ic_pause.xml create mode 100644 android/app/src/main/res/drawable-anydpi/ic_play.xml create mode 100644 android/app/src/main/res/drawable-anydpi/ic_prev.xml create mode 100644 android/app/src/main/res/drawable-hdpi/ic_next.png create mode 100644 android/app/src/main/res/drawable-hdpi/ic_pause.png create mode 100644 android/app/src/main/res/drawable-hdpi/ic_play.png create mode 100644 android/app/src/main/res/drawable-hdpi/ic_prev.png create mode 100644 android/app/src/main/res/drawable-mdpi/ic_next.png create mode 100644 android/app/src/main/res/drawable-mdpi/ic_pause.png create mode 100644 android/app/src/main/res/drawable-mdpi/ic_play.png create mode 100644 android/app/src/main/res/drawable-mdpi/ic_prev.png create mode 100644 android/app/src/main/res/drawable-xhdpi/ic_next.png create mode 100644 android/app/src/main/res/drawable-xhdpi/ic_pause.png create mode 100644 android/app/src/main/res/drawable-xhdpi/ic_play.png create mode 100644 android/app/src/main/res/drawable-xhdpi/ic_prev.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/ic_next.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/ic_pause.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/ic_play.png create mode 100644 android/app/src/main/res/drawable-xxhdpi/ic_prev.png diff --git a/.DS_Store b/.DS_Store index 9512492..92e1c0c 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/android/.idea/deploymentTargetDropDown.xml b/android/.idea/deploymentTargetDropDown.xml index 0c0c338..462cfeb 100644 --- a/android/.idea/deploymentTargetDropDown.xml +++ b/android/.idea/deploymentTargetDropDown.xml @@ -3,7 +3,20 @@ - + + + + + + + + + + + + + + diff --git a/android/app/release/app-release.apk.zip b/android/app/release/app-release.apk.zip new file mode 100644 index 0000000..aa5811b Binary files /dev/null and b/android/app/release/app-release.apk.zip differ diff --git a/android/app/src/main/java/dev/equestria/mist/JavaScriptExtensions.kt b/android/app/src/main/java/dev/equestria/mist/JavaScriptExtensions.kt index 62c3b03..294e80f 100644 --- a/android/app/src/main/java/dev/equestria/mist/JavaScriptExtensions.kt +++ b/android/app/src/main/java/dev/equestria/mist/JavaScriptExtensions.kt @@ -2,6 +2,7 @@ package dev.equestria.mist import android.Manifest import android.annotation.SuppressLint +import android.app.PendingIntent import android.content.Context import android.content.Intent import android.content.pm.PackageManager @@ -148,7 +149,11 @@ class JavaScriptExtensions(originalActivity: MainActivity, private val window: W session.setCallback(callback) session.setMetadata(builder.build()) session.setPlaybackState(playbackStateBuilder.build()) + style.setMediaSession(session.sessionToken) + + notificationBuilder.setContentTitle(title) + notificationBuilder.setContentText("$artist - $album") notificationBuilder.setStyle(style) val notification = notificationBuilder.build() diff --git a/android/app/src/main/java/dev/equestria/mist/MainActivity.kt b/android/app/src/main/java/dev/equestria/mist/MainActivity.kt index 930d309..78807c2 100644 --- a/android/app/src/main/java/dev/equestria/mist/MainActivity.kt +++ b/android/app/src/main/java/dev/equestria/mist/MainActivity.kt @@ -48,6 +48,7 @@ import dev.equestria.mist.ui.theme.MistTheme class MainActivity : ComponentActivity() { private lateinit var intent: Intent + lateinit var webview: WebView @OptIn(ExperimentalMaterial3Api::class) fun showError() { @@ -101,7 +102,7 @@ class MainActivity : ComponentActivity() { } } - val channel = NotificationChannel("main", "Playback", NotificationManager.IMPORTANCE_DEFAULT).apply {} + val channel = NotificationChannel("main", "Playback", NotificationManager.IMPORTANCE_LOW).apply {} val notificationManager: NotificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager notificationManager.createNotificationChannel(channel) @@ -155,50 +156,52 @@ class MainActivity : ComponentActivity() { Log.d("StatusBarHeight", getStatusBarHeight(this).toString()) Log.d("NavigationBarHeight", getNavigationBarHeight(this).toString()) } -} - -@SuppressLint("SetJavaScriptEnabled") -@Composable -fun WebViewContainer(activity: MainActivity, intent: Intent) { - val mUrl = "https://mist.equestria.horse/app/" - - AndroidView(factory = { - WebView(it).apply { - layoutParams = ViewGroup.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT - ) - - clearCache(true) - clearHistory() - webViewClient = WebViewClient() - - settings.domStorageEnabled = true - settings.javaScriptEnabled = true - settings.safeBrowsingEnabled = false - settings.mediaPlaybackRequiresUserGesture = false - settings.userAgentString += " MistAndroid/" + BuildConfig.VERSION_NAME - settings.cacheMode = WebSettings.LOAD_NO_CACHE - - settings.setSupportMultipleWindows(true) - webChromeClient = object : WebChromeClient() { - override fun onCreateWindow( - view: WebView, - dialog: Boolean, - userGesture: Boolean, - resultMsg: Message - ): Boolean { - val result = view.hitTestResult - val data = result.extra - val context = view.context - val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(data)) - context.startActivity(browserIntent) - return false + + @SuppressLint("SetJavaScriptEnabled") + @Composable + fun WebViewContainer(activity: MainActivity, intent: Intent) { + val mUrl = "https://mist.equestria.horse/app/" + + AndroidView(factory = { + WebView(it).apply { + webview = this + + layoutParams = ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT + ) + + clearCache(true) + clearHistory() + webViewClient = WebViewClient() + + settings.domStorageEnabled = true + settings.javaScriptEnabled = true + settings.safeBrowsingEnabled = false + settings.mediaPlaybackRequiresUserGesture = false + settings.userAgentString += " MistAndroid/" + BuildConfig.VERSION_NAME + settings.cacheMode = WebSettings.LOAD_NO_CACHE + + settings.setSupportMultipleWindows(true) + webChromeClient = object : WebChromeClient() { + override fun onCreateWindow( + view: WebView, + dialog: Boolean, + userGesture: Boolean, + resultMsg: Message + ): Boolean { + val result = view.hitTestResult + val data = result.extra + val context = view.context + val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(data)) + context.startActivity(browserIntent) + return false + } } - } - addJavascriptInterface(JavaScriptExtensions(activity, activity.window, this, intent), "MistAndroid") - loadUrl(mUrl) - } - }) + addJavascriptInterface(JavaScriptExtensions(activity, activity.window, this, intent), "MistAndroid") + loadUrl(mUrl) + } + }) + } } \ No newline at end of file diff --git a/android/app/src/main/res/drawable-anydpi/ic_next.xml b/android/app/src/main/res/drawable-anydpi/ic_next.xml new file mode 100644 index 0000000..76ce9be --- /dev/null +++ b/android/app/src/main/res/drawable-anydpi/ic_next.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/android/app/src/main/res/drawable-anydpi/ic_pause.xml b/android/app/src/main/res/drawable-anydpi/ic_pause.xml new file mode 100644 index 0000000..7a6a35e --- /dev/null +++ b/android/app/src/main/res/drawable-anydpi/ic_pause.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/android/app/src/main/res/drawable-anydpi/ic_play.xml b/android/app/src/main/res/drawable-anydpi/ic_play.xml new file mode 100644 index 0000000..5abab06 --- /dev/null +++ b/android/app/src/main/res/drawable-anydpi/ic_play.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/android/app/src/main/res/drawable-anydpi/ic_prev.xml b/android/app/src/main/res/drawable-anydpi/ic_prev.xml new file mode 100644 index 0000000..99bbfd4 --- /dev/null +++ b/android/app/src/main/res/drawable-anydpi/ic_prev.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/android/app/src/main/res/drawable-hdpi/ic_next.png b/android/app/src/main/res/drawable-hdpi/ic_next.png new file mode 100644 index 0000000..0c73200 Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/ic_next.png differ diff --git a/android/app/src/main/res/drawable-hdpi/ic_pause.png b/android/app/src/main/res/drawable-hdpi/ic_pause.png new file mode 100644 index 0000000..0b92c70 Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/ic_pause.png differ diff --git a/android/app/src/main/res/drawable-hdpi/ic_play.png b/android/app/src/main/res/drawable-hdpi/ic_play.png new file mode 100644 index 0000000..440eb34 Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/ic_play.png differ diff --git a/android/app/src/main/res/drawable-hdpi/ic_prev.png b/android/app/src/main/res/drawable-hdpi/ic_prev.png new file mode 100644 index 0000000..08de7d2 Binary files /dev/null and b/android/app/src/main/res/drawable-hdpi/ic_prev.png differ diff --git a/android/app/src/main/res/drawable-mdpi/ic_next.png b/android/app/src/main/res/drawable-mdpi/ic_next.png new file mode 100644 index 0000000..116f916 Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/ic_next.png differ diff --git a/android/app/src/main/res/drawable-mdpi/ic_pause.png b/android/app/src/main/res/drawable-mdpi/ic_pause.png new file mode 100644 index 0000000..c674ea9 Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/ic_pause.png differ diff --git a/android/app/src/main/res/drawable-mdpi/ic_play.png b/android/app/src/main/res/drawable-mdpi/ic_play.png new file mode 100644 index 0000000..9611b5f Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/ic_play.png differ diff --git a/android/app/src/main/res/drawable-mdpi/ic_prev.png b/android/app/src/main/res/drawable-mdpi/ic_prev.png new file mode 100644 index 0000000..0134f9a Binary files /dev/null and b/android/app/src/main/res/drawable-mdpi/ic_prev.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/ic_next.png b/android/app/src/main/res/drawable-xhdpi/ic_next.png new file mode 100644 index 0000000..99766cd Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/ic_next.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/ic_pause.png b/android/app/src/main/res/drawable-xhdpi/ic_pause.png new file mode 100644 index 0000000..70c6e09 Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/ic_pause.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/ic_play.png b/android/app/src/main/res/drawable-xhdpi/ic_play.png new file mode 100644 index 0000000..1689d6c Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/ic_play.png differ diff --git a/android/app/src/main/res/drawable-xhdpi/ic_prev.png b/android/app/src/main/res/drawable-xhdpi/ic_prev.png new file mode 100644 index 0000000..56d6889 Binary files /dev/null and b/android/app/src/main/res/drawable-xhdpi/ic_prev.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_next.png b/android/app/src/main/res/drawable-xxhdpi/ic_next.png new file mode 100644 index 0000000..966db87 Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/ic_next.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_pause.png b/android/app/src/main/res/drawable-xxhdpi/ic_pause.png new file mode 100644 index 0000000..dd66a4c Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/ic_pause.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_play.png b/android/app/src/main/res/drawable-xxhdpi/ic_play.png new file mode 100644 index 0000000..3dcf46a Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/ic_play.png differ diff --git a/android/app/src/main/res/drawable-xxhdpi/ic_prev.png b/android/app/src/main/res/drawable-xxhdpi/ic_prev.png new file mode 100644 index 0000000..9555f28 Binary files /dev/null and b/android/app/src/main/res/drawable-xxhdpi/ic_prev.png differ diff --git a/app/.DS_Store b/app/.DS_Store index 7889376..1ab3b24 100644 Binary files a/app/.DS_Store and b/app/.DS_Store differ diff --git a/app/index.php b/app/index.php index 601c974..6de3cdf 100644 --- a/app/index.php +++ b/app/index.php @@ -1,6 +1,21 @@ + + @@ -271,6 +286,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI window.seekTo = (time) => { document.getElementById("player").contentDocument.getElementById("player-audio").currentTime = time; + updateAndroidNotification(); if (playingStella) { playerDocument.getElementById("player-audio-stella-side1").currentTime = playerDocument.getElementById("player-audio").currentTime; @@ -422,10 +438,16 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI } playerDocument.getElementById("player-audio").onplay = () => { + updateAndroidNotification(); + if (window.preloadedGains[window.currentSongID]) { window.currentNormalizationSource.connect(window.preloadedGains[window.currentSongID]); - window.currentNormalizationSource2.connect(window.preloadedGainsBoosted1[window.currentSongID]); - window.currentNormalizationSource3.connect(window.preloadedGainsBoosted2[window.currentSongID]); + + if (playingStella) { + window.currentNormalizationSource2.connect(window.preloadedGainsBoosted1[window.currentSongID]); + window.currentNormalizationSource3.connect(window.preloadedGainsBoosted2[window.currentSongID]); + } + window.preloadedGains[window.currentSongID].connect(window.currentNormalizationContext.destination); } @@ -447,10 +469,25 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI updateDisplay(); } + window.needsDurationChange = true; + + playerDocument.getElementById("player-audio").ondurationchange = () => { + if (window.needsDurationChange) { + updateAndroidNotification(); + window.needsDurationChange = false; + } + } + playerDocument.getElementById("player-audio").onpause = () => { if (window.preloadedGains[window.currentSongID]) { try { window.currentNormalizationSource.disconnect(window.preloadedGains[window.currentSongID]); + + if (playingStella) { + window.currentNormalizationSource2.disconnect(window.preloadedGainsBoosted1[window.currentSongID]); + window.currentNormalizationSource3.disconnect(window.preloadedGainsBoosted2[window.currentSongID]); + } + window.preloadedGains[window.currentSongID].disconnect(window.currentNormalizationContext.destination); } catch (e) { console.error(e); @@ -486,16 +523,19 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI } updateDisplay(); + updateAndroidNotification(); } } initializePlayerDocument(); - function updateDisplay() { + function updateAndroidNotification() { if (window.MistAndroid && currentSong) { window.MistAndroid.setNotificationData(currentSong.title, currentSong.artist, currentSong.album, Math.round(playerDocument.getElementById("player-audio").currentTime * 1000), Math.round(playerDocument.getElementById("player-audio").duration * 1000), !playerDocument.getElementById("player-audio").paused, buffering); } + } + function updateDisplay() { if (playerDocument.getElementById("player-audio").paused) { document.title = "Mist"; } else if (currentSong) { @@ -853,6 +893,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI window.currentSong = songs[id]; window.currentSongID = id; updateDisplay(); + updateAndroidNotification(); if (document.getElementById("ui").contentWindow.refreshQueue) document.getElementById("ui").contentWindow.refreshQueue(); let stellaCompatible = false; @@ -886,6 +927,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI cleanupPreload(); preloadMore(); + window.needsDurationChange = true; if (!stellaCompatible) { if (!window.preloadedURLs[id]) { diff --git a/app/ui/lyrics.php b/app/ui/lyrics.php index 8f50931..274ff93 100644 --- a/app/ui/lyrics.php +++ b/app/ui/lyrics.php @@ -43,7 +43,7 @@ } - +
diff --git a/assets/dark.css b/assets/dark.css index c1cd24b..21ec308 100644 --- a/assets/dark.css +++ b/assets/dark.css @@ -8,6 +8,10 @@ background-color: black !important; } + iframe#lyrics-page.mobile-show { + background-color: transparent !important; + } + .crossplatform { background-color: black !important; } diff --git a/assets/native.css b/assets/native.css index 1d892a5..8552508 100644 --- a/assets/native.css +++ b/assets/native.css @@ -6,12 +6,6 @@ body.native { background-color: white !important; } -@media (prefers-color-scheme: dark) { - #ui, #lyrics-page, #lyrics-body { - background-color: black !important; - } -} - body.navigation-body { background-color: rgba(255, 255, 255, .1) !important; border-right: 1px solid rgba(0, 0, 0, .1) !important; -- cgit