Skip to content

Commit ce02d71

Browse files
committed
Same old
1 parent 9644a64 commit ce02d71

26 files changed

Lines changed: 658 additions & 640 deletions

doc/launch-head-unit.bat

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
@echo off
2+
setlocal
3+
4+
:: Configuration
5+
set ADB=%LOCALAPPDATA%\Android\Sdk\platform-tools\adb.exe
6+
set DHU=%LOCALAPPDATA%\Android\Sdk\extras\google\auto\desktop-head-unit.exe
7+
8+
:: Check ADB
9+
if not exist "%ADB%" (
10+
echo [ERROR] adb not found at: %ADB%
11+
echo Update the ADB path in this script.
12+
pause
13+
exit /b 1
14+
)
15+
16+
:: Check DHU
17+
if not exist "%DHU%" (
18+
echo [ERROR] Desktop Head Unit not found at: %DHU%
19+
echo Install it via SDK Manager: Extras ^> Google ^> Android Auto Desktop Head Unit emulator
20+
pause
21+
exit /b 1
22+
)
23+
24+
:: Wait for device
25+
echo [*] Waiting for ADB device...
26+
"%ADB%" wait-for-device
27+
28+
:: Launch Android Auto on device (Google Pixel)
29+
echo [*] Opening Android Auto...
30+
"%ADB%" shell am start -n com.google.android.projection.gearhead/.companion.settings.DefaultSettingsActivity
31+
32+
echo.
33+
echo [*] Start the Head Unit Server from the menu on your phone.
34+
echo Press any key when ready...
35+
pause > nul
36+
37+
:: Forward the port
38+
echo [*] Forwarding port 5277...
39+
"%ADB%" forward tcp:5277 tcp:5277
40+
if errorlevel 1 (
41+
echo [ERROR] Port forwarding failed. Is your emulator/device running?
42+
pause
43+
exit /b 1
44+
)
45+
echo [*] Port forwarded successfully.
46+
47+
:: Launch DHU
48+
echo [*] Launching Desktop Head Unit...
49+
start "" "%DHU%"
50+
51+
echo [*] Done! Android Auto should connect shortly.
52+
exit /b 0

gradle/libs.versions.toml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ reorderable = "3.1.0" # https://mvnrepository.com/artifact/sh.calvin.reorderable
2525
room = "2.8.4" # https://mvnrepository.com/artifact/androidx.room/room-runtime
2626
settings = "3.1.0" # https://github.com/alorma/Compose-Settings/releases
2727
timber = "5.0.1" # https://mvnrepository.com/artifact/com.jakewharton.timber/timber
28+
placeholder = "1.0.3" # https://mvnrepository.com/artifact/com.revenuecat.purchases/placeholder-android
2829

2930
[libraries]
3031
compose-activity = { module = "androidx.activity:activity-compose", version.ref = "activityCompose" }
@@ -34,14 +35,15 @@ compose-bom = { module = "androidx.compose:compose-bom", version.ref = "composeB
3435
compose-foundation = { module = "androidx.compose.foundation:foundation" }
3536
compose-material-icons-core = { module = "androidx.compose.material:material-icons-core" }
3637
compose-material-icons-extended = { module = "androidx.compose.material:material-icons-extended" }
37-
compose-material3 = { module = "androidx.compose.material3:material3", version = "1.5.0-alpha19" }
38+
compose-material3 = { module = "androidx.compose.material3:material3", version = "1.5.0-alpha20" }
3839
compose-runtime = { module = "androidx.compose.runtime:runtime" }
3940
compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" }
4041
compose-settings-ui = { module = "com.github.alorma.compose-settings:ui-tiles", version.ref = "settings" }
4142
compose-settings-ui-extended = { module = "com.github.alorma.compose-settings:ui-tiles-extended", version.ref = "settings" }
4243
compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" }
4344
compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" }
4445
compose-ui-ui = { module = "androidx.compose.ui:ui" }
46+
compose-placeholder = { module = "com.revenuecat.purchases:placeholder", version.ref = "placeholder" }
4547

4648
androidx-lifecycle-viewmodel-navigation3 = { module = "androidx.lifecycle:lifecycle-viewmodel-navigation3", version.ref = "lifecycleViewmodel" }
4749
androidx-navigation3-ui = { module = "androidx.navigation3:navigation3-ui", version.ref = "navigation3" }
@@ -50,7 +52,7 @@ datastore-preferences = { module = "androidx.datastore:datastore-preferences", v
5052
dfc = { module = "com.lazygeniouz:dfc", version.ref = "dfc" }
5153
koin-androidx-compose = { module = "io.insert-koin:koin-androidx-compose" }
5254
koin-bom = { module = "io.insert-koin:koin-bom", version.ref = "koin-bom" }
53-
koin-navigation3 = { module = "io.insert-koin:koin-compose-navigation3", version = "4.2.1" }
55+
koin-navigation3 = { module = "io.insert-koin:koin-compose-navigation3" }
5456
kotlinx-immutable = { module = "org.jetbrains.kotlinx:kotlinx-collections-immutable", version.ref = "kotlinXImmutable" }
5557
kotlinx-serialization-json = { module = "org.jetbrains.kotlinx:kotlinx-serialization-json", version.ref = "kotlinxSerialization" }
5658
kotlinx-serialization-xml = { module = "org.jetbrains.kotlinx:kotlinx-serialization-core", version.ref = "kotlinxSerialization" }

media3/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ dependencies {
115115
implementation(libs.bundles.compose)
116116
implementation(libs.kotlinx.immutable)
117117
implementation(libs.materialKolor)
118+
implementation(libs.compose.placeholder) // TODO try out
118119

119120
// Koin
120121
implementation(platform(libs.koin.bom))

media3/src/main/java/com/lossydragon/media3/MainActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import android.content.ComponentName
55
import android.os.Bundle
66
import androidx.activity.ComponentActivity
77
import androidx.activity.compose.setContent
8-
import androidx.activity.enableEdgeToEdge
98
import androidx.activity.result.contract.ActivityResultContracts
109
import androidx.media3.session.MediaController
1110
import androidx.media3.session.SessionToken
@@ -15,6 +14,7 @@ import com.lossydragon.media3.ui.XmpNavHost
1514
import com.lossydragon.media3.ui.theme.XmpTheme
1615
import com.lossydragon.media3.util.requestNotificationPermission
1716
import com.lossydragon.media3.util.requestWriteStoragePermission
17+
import com.lossydragon.media3.util.setEdgeToEdgeConfig
1818

1919
class MainActivity : ComponentActivity() {
2020

@@ -47,7 +47,7 @@ class MainActivity : ComponentActivity() {
4747

4848
override fun onCreate(savedInstanceState: Bundle?) {
4949
super.onCreate(savedInstanceState)
50-
enableEdgeToEdge()
50+
setEdgeToEdgeConfig()
5151

5252
requestNotificationPermission {
5353
notificationPermission.launch(Manifest.permission.POST_NOTIFICATIONS)

media3/src/main/java/com/lossydragon/media3/data/DownloadHistoryRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.lossydragon.media3.db.entity.DownloadHistoryEntity
55
import com.lossydragon.media3.model.Artist
66
import com.lossydragon.media3.model.ArtistInfo
77
import com.lossydragon.media3.model.Module
8+
import java.lang.System
89

910
class DownloadHistoryRepository(private val dao: DownloadHistoryDao) {
1011

@@ -32,5 +33,6 @@ class DownloadHistoryRepository(private val dao: DownloadHistoryDao) {
3233
format = format,
3334
bytes = bytes,
3435
artist = artist,
36+
viewedAt = System.currentTimeMillis(),
3537
)
3638
}

media3/src/main/java/com/lossydragon/media3/data/ModuleMetadataRepository.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import android.content.Context
44
import android.net.Uri
55
import com.lossydragon.media3.db.dao.ModuleMetadataDao
66
import com.lossydragon.media3.db.entity.ModuleMetadataEntity
7+
import java.lang.System
78
import java.security.MessageDigest
9+
import kotlin.Long
810
import org.helllabs.libxmp.Xmp
911
import org.helllabs.libxmp.model.ModInfo
1012
import timber.log.Timber
@@ -52,6 +54,7 @@ class ModuleMetadataRepository(
5254
name = modInfo.name.trim().ifBlank { fileName },
5355
type = modInfo.type.trim(),
5456
extension = extension,
57+
lastSeen = System.currentTimeMillis(),
5558
)
5659
dao.upsert(entity)
5760
entity
@@ -61,9 +64,9 @@ class ModuleMetadataRepository(
6164
}
6265
}
6366

64-
suspend fun evictStale(olderThanDays: Int = 30) {
67+
suspend fun removeStale(olderThanDays: Int = 365) {
6568
val cutoff = System.currentTimeMillis() - (olderThanDays * 24 * 60 * 60 * 1000L)
66-
dao.evictStale(cutoff)
69+
dao.removeStale(cutoff)
6770
}
6871

6972
suspend fun exists(fileName: String, sizeBytes: Long): Boolean =

media3/src/main/java/com/lossydragon/media3/db/Migrations.kt

Lines changed: 0 additions & 22 deletions
This file was deleted.

media3/src/main/java/com/lossydragon/media3/db/dao/ModuleMetadataDao.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,5 @@ interface ModuleMetadataDao {
2020
suspend fun upsert(entity: ModuleMetadataEntity)
2121

2222
@Query("DELETE FROM module_metadata WHERE lastSeen < :cutoff")
23-
suspend fun evictStale(cutoff: Long)
23+
suspend fun removeStale(cutoff: Long)
2424
}

media3/src/main/java/com/lossydragon/media3/db/entity/DownloadHistoryEntity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ data class DownloadHistoryEntity(
1111
val format: String,
1212
val bytes: Int,
1313
val artist: String,
14-
val viewedAt: Long = System.currentTimeMillis()
14+
val viewedAt: Long
1515
)

media3/src/main/java/com/lossydragon/media3/db/entity/ModuleMetadataEntity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ data class ModuleMetadataEntity(
1313
val name: String,
1414
val type: String,
1515
val extension: String,
16-
val lastSeen: Long = System.currentTimeMillis()
16+
val lastSeen: Long
1717
)

0 commit comments

Comments
 (0)