diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0a035584..7db221e8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,9 +12,9 @@ android:screenOrientation="portrait" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" - android:icon="@mipmap/purefin_logo" + android:icon="@mipmap/ic_launcher" + android:roundIcon="@mipmap/ic_launcher" android:label="@string/app_name" - android:roundIcon="@mipmap/purefin_logo_round" android:supportsRtl="true" android:theme="@style/Theme.Purefin"> - Image( - bitmap = bitmap, - contentDescription = contentDescription, - contentScale = contentScale, - modifier = modifier, - ) - } + Icon( + painter = painterResource(id = R.drawable.purefin_logo_tintable), + contentDescription = "Purefin logo", + modifier = modifier, + tint = color + ) } diff --git a/app/src/main/java/hu/bbara/purefin/ui/screen/home/components/DefaultTopBar.kt b/app/src/main/java/hu/bbara/purefin/ui/screen/home/components/DefaultTopBar.kt index ca4a05e4..1e874023 100644 --- a/app/src/main/java/hu/bbara/purefin/ui/screen/home/components/DefaultTopBar.kt +++ b/app/src/main/java/hu/bbara/purefin/ui/screen/home/components/DefaultTopBar.kt @@ -22,7 +22,6 @@ import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp @@ -47,9 +46,7 @@ fun DefaultTopBar( verticalAlignment = Alignment.CenterVertically ) { PurefinLogo( - contentDescription = "Purefin", modifier = Modifier.size(48.dp), - contentScale = ContentScale.Fit, ) Text( text = "PureFin", diff --git a/app/src/main/java/hu/bbara/purefin/ui/screen/home/components/search/SearchFullScreen.kt b/app/src/main/java/hu/bbara/purefin/ui/screen/home/components/search/SearchFullScreen.kt index 296a7d9e..92b84d4f 100644 --- a/app/src/main/java/hu/bbara/purefin/ui/screen/home/components/search/SearchFullScreen.kt +++ b/app/src/main/java/hu/bbara/purefin/ui/screen/home/components/search/SearchFullScreen.kt @@ -47,7 +47,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalSoftwareKeyboardController import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight @@ -224,8 +223,6 @@ private fun SearchHeader( horizontalArrangement = Arrangement.spacedBy(10.dp) ) { PurefinLogo( - contentDescription = "PureFin", - contentScale = ContentScale.Fit, modifier = Modifier.size(38.dp) ) Text( diff --git a/app/src/main/res/drawable/purefin_logo_launcher.xml b/app/src/main/res/drawable/purefin_logo_launcher.xml new file mode 100644 index 00000000..e3ef629d --- /dev/null +++ b/app/src/main/res/drawable/purefin_logo_launcher.xml @@ -0,0 +1,21 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/purefin_logo_tintable.xml b/app/src/main/res/drawable/purefin_logo_tintable.xml new file mode 100644 index 00000000..554277a3 --- /dev/null +++ b/app/src/main/res/drawable/purefin_logo_tintable.xml @@ -0,0 +1,20 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..0d9e170b --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index a6b3daec..5b4e49f1 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -1,2 +1,4 @@ - \ No newline at end of file + + #131216 + \ No newline at end of file diff --git a/core/src/main/java/hu/bbara/purefin/data/HomeRepository.kt b/core/src/main/java/hu/bbara/purefin/data/HomeRepository.kt index 2ed2e24f..b9d00833 100644 --- a/core/src/main/java/hu/bbara/purefin/data/HomeRepository.kt +++ b/core/src/main/java/hu/bbara/purefin/data/HomeRepository.kt @@ -12,5 +12,5 @@ interface HomeRepository { val nextUp: StateFlow> val latestLibraryContent: StateFlow>> fun ensureReady() - fun refreshHomeData() + suspend fun refreshHomeData() } diff --git a/data/src/main/java/hu/bbara/purefin/data/catalog/InMemoryAppContentRepository.kt b/data/src/main/java/hu/bbara/purefin/data/catalog/InMemoryAppContentRepository.kt index ae23a09d..4fead48d 100644 --- a/data/src/main/java/hu/bbara/purefin/data/catalog/InMemoryAppContentRepository.kt +++ b/data/src/main/java/hu/bbara/purefin/data/catalog/InMemoryAppContentRepository.kt @@ -88,30 +88,28 @@ class InMemoryAppContentRepository @Inject constructor( scope.launch { refreshHomeData() } } - @Synchronized - override fun refreshHomeData() { - if (refreshJob?.isActive == true) { - return - } - val job = scope.launch { - runCatching { - Log.d(TAG, "Refreshing home data") - if (!networkMonitor.isOnline.first()) { - return@runCatching + override suspend fun refreshHomeData() { + val job = synchronized(this) { + refreshJob?.takeIf { it.isActive } ?: scope.launch { + runCatching { + Log.d(TAG, "Refreshing home data") + if (!networkMonitor.isOnline.first()) { + return@runCatching + } + loadLibraries() + loadSuggestions() + loadContinueWatching() + loadNextUp() + loadLatestLibraryContent() + loadGenres() + Log.d(TAG, "Home refresh successful") + persistHomeCache() + }.onFailure { error -> + Log.w(TAG, "Home refresh failed; keeping cached content", error) } - loadLibraries() - loadSuggestions() - loadContinueWatching() - loadNextUp() - loadLatestLibraryContent() - loadGenres() - Log.d(TAG, "Home refresh successful") - persistHomeCache() - }.onFailure { error -> - Log.w(TAG, "Home refresh failed; keeping cached content", error) - } + }.also { refreshJob = it } } - refreshJob = job + job.join() } private suspend fun loadHomeCache() {