diff options
author | RaindropsSys <raindrops@equestria.dev> | 2023-11-08 22:02:10 +0100 |
---|---|---|
committer | RaindropsSys <raindrops@equestria.dev> | 2023-11-08 22:02:10 +0100 |
commit | 492cb3104fabe1b54f360d2a0ea57de60674f404 (patch) | |
tree | f17178b8af7912113e3081a103bac267aa180c8e | |
parent | b83a38434156038bc02db74cb93fa8460d0f2f32 (diff) | |
download | mist-492cb3104fabe1b54f360d2a0ea57de60674f404.tar.gz mist-492cb3104fabe1b54f360d2a0ea57de60674f404.tar.bz2 mist-492cb3104fabe1b54f360d2a0ea57de60674f404.zip |
Updated 7 files, added android/app/release/app-release.apk.zip and renamed android/app/release/app-release.apka (automated)
-rw-r--r-- | android/.idea/deploymentTargetDropDown.xml | 15 | ||||
-rw-r--r-- | android/app/build.gradle.kts | 4 | ||||
-rw-r--r-- | android/app/release/app-release.apk (renamed from android/app/release/app-release.apka) | bin | 23034331 -> 23035043 bytes | |||
-rw-r--r-- | android/app/release/app-release.apk.zip | bin | 0 -> 8354599 bytes | |||
-rw-r--r-- | android/app/release/output-metadata.json | 4 | ||||
-rw-r--r-- | android/app/src/main/java/dev/equestria/mist/JavaScriptExtensions.kt | 5 | ||||
-rw-r--r-- | android/app/src/main/java/dev/equestria/mist/MainActivity.kt | 5 | ||||
-rw-r--r-- | api/lyrics.php | 17 | ||||
-rw-r--r-- | app/index.php | 12 |
9 files changed, 56 insertions, 6 deletions
diff --git a/android/.idea/deploymentTargetDropDown.xml b/android/.idea/deploymentTargetDropDown.xml index 0c0c338..ef1f9a9 100644 --- a/android/.idea/deploymentTargetDropDown.xml +++ b/android/.idea/deploymentTargetDropDown.xml @@ -3,7 +3,20 @@ <component name="deploymentTargetDropDown"> <value> <entry key="app"> - <State /> + <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-11-08T20:38:44.325223Z" /> + </State> </entry> </value> </component> diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 8975408..b711e97 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -12,8 +12,8 @@ android { applicationId = "dev.equestria.mist" minSdk = 30 targetSdk = 34 - versionCode = 1 - versionName = "1.0" + versionCode = 2 + versionName = "1.1" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/android/app/release/app-release.apka b/android/app/release/app-release.apk Binary files differindex 0b3aa69..aa449ce 100644 --- a/android/app/release/app-release.apka +++ b/android/app/release/app-release.apk diff --git a/android/app/release/app-release.apk.zip b/android/app/release/app-release.apk.zip Binary files differnew file mode 100644 index 0000000..f8b3169 --- /dev/null +++ b/android/app/release/app-release.apk.zip diff --git a/android/app/release/output-metadata.json b/android/app/release/output-metadata.json index 0debc4d..5b3e7dd 100644 --- a/android/app/release/output-metadata.json +++ b/android/app/release/output-metadata.json @@ -11,8 +11,8 @@ "type": "SINGLE", "filters": [], "attributes": [], - "versionCode": 1, - "versionName": "1.0", + "versionCode": 2, + "versionName": "1.1", "outputFile": "app-release.apk" } ], 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 294e80f..dad4a7b 100644 --- a/android/app/src/main/java/dev/equestria/mist/JavaScriptExtensions.kt +++ b/android/app/src/main/java/dev/equestria/mist/JavaScriptExtensions.kt @@ -90,6 +90,11 @@ class JavaScriptExtensions(originalActivity: MainActivity, private val window: W } @JavascriptInterface + fun quitApp() { + activity.finish() + } + + @JavascriptInterface fun setNotificationData(title: String, artist: String, album: String, position: Long, duration: Long, playing: Boolean, buffering: Boolean) { val playbackStateBuilder = PlaybackStateCompat.Builder() val style = MediaStyle() 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 78807c2..acfe7df 100644 --- a/android/app/src/main/java/dev/equestria/mist/MainActivity.kt +++ b/android/app/src/main/java/dev/equestria/mist/MainActivity.kt @@ -18,6 +18,7 @@ import android.webkit.WebSettings import android.webkit.WebView import android.webkit.WebViewClient import androidx.activity.ComponentActivity +import androidx.activity.addCallback import androidx.activity.compose.setContent import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -90,6 +91,10 @@ class MainActivity : ComponentActivity() { super.onCreate(savedInstanceState) WindowCompat.setDecorFitsSystemWindows(window, false) + val callback = onBackPressedDispatcher.addCallback(this) { + webview.evaluateJavascript("window.back();", null) + } + if (ActivityCompat.checkSelfPermission( applicationContext, Manifest.permission.POST_NOTIFICATIONS diff --git a/api/lyrics.php b/api/lyrics.php index d72a17c..74503dc 100644 --- a/api/lyrics.php +++ b/api/lyrics.php @@ -2,6 +2,7 @@ header("X-Frame-Options: SAMEORIGIN"); header("Content-Type: application/json"); +//header("Content-Type: text/plain"); require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $songs; $token = json_decode(file_exists("/opt/spotify/token.json") ? file_get_contents("/opt/spotify/token.json") : file_get_contents($_SERVER["DOCUMENT_ROOT"] . "/includes/app.json"), true); @@ -34,6 +35,22 @@ if (isset($data) && str_ends_with($data["syncType"], "_SYNCED")) { ], JSON_PRETTY_PRINT)); } +$probe = []; +exec("ffprobe -v quiet -print_format json -show_format $_SERVER[DOCUMENT_ROOT]/assets/content/$_GET[id].flac", $probe); +$metadata = json_decode(implode("\n", $probe), true); + +if (isset($metadata["format"]["tags"]["UNSYNCEDLYRICS"])) { + die(json_encode([ + "synced" => false, + "payload" => trim($metadata["format"]["tags"]["UNSYNCEDLYRICS"]) + ], JSON_PRETTY_PRINT)); +} elseif (isset($metadata["format"]["tags"]["unsyncedlyrics"])) { + die(json_encode([ + "synced" => false, + "payload" => trim($metadata["format"]["tags"]["unsyncedlyrics"]) + ], JSON_PRETTY_PRINT)); +} + $genius = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/includes/app.json"), true)["genius"]; $id = array_values(array_filter(json_decode(file_get_contents("https://api.genius.com/search?q=" . rawurlencode($song["title"] . " " . $song["artist"]), false, stream_context_create([ diff --git a/app/index.php b/app/index.php index b53bb43..72ca74b 100644 --- a/app/index.php +++ b/app/index.php @@ -66,7 +66,7 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI </div> <div id="mobile-navbar" style="padding: 0 10px; border-bottom: 1px solid rgba(0, 0, 0, .1); height: 48px; top: var(--android-status-bar); left: 0; right: 0; position: fixed; display: none; grid-template-columns: max-content 1fr;"> - <div style="display: flex; align-items: center;" onclick="document.getElementById('ui').contentWindow.history.back();"> + <div style="display: flex; align-items: center;" onclick="window.back();"> <img alt="Back" src="/assets/icons/back-mobile.svg" style="height: 32px; width: 32px;"> </div> <div style="display: flex; align-items: center; margin-left: 10px;" id="mobile-navbar-title"></div> @@ -114,6 +114,16 @@ require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/session.php"; global $_PROFI }); } + window.back = () => { + if (document.getElementById('ui').contentWindow.history.length > 1) { + document.getElementById('ui').contentWindow.history.back(); + } else { + if (window.MistAndroid) { + window.MistAndroid.quitApp(); + } + } + } + window.playlist = []; window.showLyrics = () => { |