Skip to content

Commit 3111a3b

Browse files
authored
Merge pull request #33 from pakka-papad/dev
Update to 1.2.5
2 parents 3dfbd24 + 13bdfd8 commit 3111a3b

File tree

12 files changed

+448
-223
lines changed

12 files changed

+448
-223
lines changed

.idea/gradle.xml

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/inspectionProfiles/Project_Default.xml

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ android {
113113

114114
dependencies {
115115
implementation(project(":m3utils"))
116+
implementation(Libraries.kotlinxCollectionsImmutable)
116117
implementation(Libraries.androidxCore)
117118

118119
implementation(Libraries.androidxLifecycle)
@@ -169,6 +170,7 @@ dependencies {
169170

170171
implementation(platform(Libraries.firebaseBom))
171172
implementation(Libraries.firebaseCrashlytics)
173+
implementation(Libraries.appUpdate)
172174

173175
// implementation(Libraries.exoPlayer)
174176
implementation(Libraries.media3ExoPlayer)

app/src/main/java/com/github/pakka_papad/MainActivity.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,13 @@ import android.os.Bundle
55
import androidx.appcompat.app.AppCompatActivity
66
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
77
import androidx.core.view.WindowCompat
8+
import com.github.pakka_papad.data.ZenCrashReporter
89
import com.github.pakka_papad.data.ZenPreferenceProvider
910
import com.github.pakka_papad.databinding.ActivityMainBinding
11+
import com.google.android.play.core.appupdate.AppUpdateManager
12+
import com.google.android.play.core.appupdate.AppUpdateOptions
13+
import com.google.android.play.core.install.model.AppUpdateType
14+
import com.google.android.play.core.install.model.UpdateAvailability
1015
import dagger.hilt.android.AndroidEntryPoint
1116
import javax.inject.Inject
1217

@@ -17,6 +22,10 @@ class MainActivity : AppCompatActivity() {
1722

1823
@Inject lateinit var preferencesProvider: ZenPreferenceProvider
1924

25+
@Inject lateinit var appUpdateManager: AppUpdateManager
26+
27+
@Inject lateinit var crashReporter: ZenCrashReporter
28+
2029
override fun onCreate(savedInstanceState: Bundle?) {
2130
super.onCreate(savedInstanceState)
2231
installSplashScreen().apply {
@@ -30,4 +39,22 @@ class MainActivity : AppCompatActivity() {
3039
WindowCompat.setDecorFitsSystemWindows(window,false)
3140
window.statusBarColor = Color.TRANSPARENT
3241
}
42+
43+
override fun onResume() {
44+
super.onResume()
45+
46+
try {
47+
appUpdateManager.appUpdateInfo.addOnSuccessListener {
48+
if (it.updateAvailability() == UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS){
49+
appUpdateManager.startUpdateFlow(
50+
it,
51+
this,
52+
AppUpdateOptions.defaultOptions(AppUpdateType.IMMEDIATE)
53+
)
54+
}
55+
}
56+
} catch (e: Exception) {
57+
crashReporter.logException(e)
58+
}
59+
}
3360
}

app/src/main/java/com/github/pakka_papad/collection/CollectionContent.kt

Lines changed: 9 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,15 @@ import androidx.compose.foundation.layout.fillMaxSize
66
import androidx.compose.foundation.layout.fillMaxWidth
77
import androidx.compose.foundation.layout.height
88
import androidx.compose.foundation.layout.padding
9-
import androidx.compose.foundation.lazy.*
9+
import androidx.compose.foundation.lazy.LazyListScope
10+
import androidx.compose.foundation.lazy.itemsIndexed
1011
import androidx.compose.material3.MaterialTheme
1112
import androidx.compose.material3.Text
12-
import androidx.compose.runtime.*
13+
import androidx.compose.runtime.Composable
14+
import androidx.compose.runtime.getValue
15+
import androidx.compose.runtime.mutableStateOf
16+
import androidx.compose.runtime.remember
17+
import androidx.compose.runtime.setValue
1318
import androidx.compose.ui.Alignment
1419
import androidx.compose.ui.Modifier
1520
import androidx.compose.ui.graphics.Brush
@@ -18,8 +23,6 @@ import androidx.compose.ui.layout.ContentScale
1823
import androidx.compose.ui.text.font.FontWeight
1924
import androidx.compose.ui.text.style.TextOverflow
2025
import androidx.compose.ui.unit.dp
21-
import androidx.core.graphics.drawable.toBitmap
22-
import androidx.palette.graphics.Palette
2326
import coil.compose.AsyncImage
2427
import com.github.pakka_papad.components.SongCardV1
2528
import com.github.pakka_papad.components.more_options.SongOptions
@@ -85,25 +88,11 @@ fun CollectionImage(
8588
.height(240.dp),
8689
contentAlignment = Alignment.BottomCenter
8790
) {
88-
val surface = MaterialTheme.colorScheme.surface
89-
val onSurface = MaterialTheme.colorScheme.onSurface
90-
var textColor by remember { mutableStateOf(onSurface) }
91-
var backgroundColor by remember { mutableStateOf(surface) }
9291
AsyncImage(
9392
model = imageUri,
9493
contentDescription = null,
9594
contentScale = ContentScale.Crop,
9695
modifier = Modifier.fillMaxSize(),
97-
onSuccess = { result ->
98-
Palette.Builder(result.result.drawable.toBitmap()).generate { palette ->
99-
palette?.let {
100-
it.mutedSwatch?.let { vbs ->
101-
backgroundColor = Color(vbs.rgb)
102-
textColor = Color(vbs.titleTextColor).copy(alpha = 1f)
103-
}
104-
}
105-
}
106-
}
10796
)
10897
Text(
10998
text = title ?: "",
@@ -112,12 +101,12 @@ fun CollectionImage(
112101
.fillMaxWidth()
113102
.background(
114103
Brush.verticalGradient(
115-
listOf(Color.Transparent, backgroundColor)
104+
listOf(Color.Transparent, MaterialTheme.colorScheme.surface)
116105
)
117106
)
118107
.padding(10.dp),
119108
maxLines = 2,
120-
color = textColor,
109+
color = MaterialTheme.colorScheme.onSurface,
121110
fontWeight = FontWeight.ExtraBold,
122111
overflow = TextOverflow.Ellipsis
123112
)

app/src/main/java/com/github/pakka_papad/di/AppModule.kt

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,37 @@ import androidx.media3.extractor.DefaultExtractorsFactory
1616
import androidx.media3.extractor.mp3.Mp3Extractor
1717
import androidx.room.Room
1818
import com.github.pakka_papad.Constants
19-
import com.github.pakka_papad.data.*
19+
import com.github.pakka_papad.data.AppDatabase
20+
import com.github.pakka_papad.data.QueueState
21+
import com.github.pakka_papad.data.QueueStateSerializer
22+
import com.github.pakka_papad.data.UserPreferences
23+
import com.github.pakka_papad.data.UserPreferencesSerializer
24+
import com.github.pakka_papad.data.ZenCrashReporter
25+
import com.github.pakka_papad.data.ZenPreferenceProvider
2026
import com.github.pakka_papad.data.music.SongExtractor
21-
import com.github.pakka_papad.data.services.*
27+
import com.github.pakka_papad.data.services.AnalyticsService
28+
import com.github.pakka_papad.data.services.AnalyticsServiceImpl
29+
import com.github.pakka_papad.data.services.BlacklistService
30+
import com.github.pakka_papad.data.services.BlacklistServiceImpl
31+
import com.github.pakka_papad.data.services.PlayerService
32+
import com.github.pakka_papad.data.services.PlayerServiceImpl
33+
import com.github.pakka_papad.data.services.PlaylistService
34+
import com.github.pakka_papad.data.services.PlaylistServiceImpl
35+
import com.github.pakka_papad.data.services.QueueService
36+
import com.github.pakka_papad.data.services.QueueServiceImpl
37+
import com.github.pakka_papad.data.services.SearchService
38+
import com.github.pakka_papad.data.services.SearchServiceImpl
39+
import com.github.pakka_papad.data.services.SleepTimerService
40+
import com.github.pakka_papad.data.services.SleepTimerServiceImpl
41+
import com.github.pakka_papad.data.services.SongService
42+
import com.github.pakka_papad.data.services.SongServiceImpl
43+
import com.github.pakka_papad.data.services.ThumbnailService
44+
import com.github.pakka_papad.data.services.ThumbnailServiceImpl
2245
import com.github.pakka_papad.player.ZenBroadcastReceiver
2346
import com.github.pakka_papad.util.MessageStore
2447
import com.github.pakka_papad.util.MessageStoreImpl
48+
import com.google.android.play.core.appupdate.AppUpdateManager
49+
import com.google.android.play.core.appupdate.AppUpdateManagerFactory
2550
import com.google.firebase.crashlytics.FirebaseCrashlytics
2651
import dagger.Module
2752
import dagger.Provides
@@ -283,4 +308,12 @@ object AppModule {
283308
thumbnailDao = db.thumbnailDao(),
284309
)
285310
}
311+
312+
@Singleton
313+
@Provides
314+
fun providesAppUpdateManager(
315+
@ApplicationContext context: Context,
316+
): AppUpdateManager {
317+
return AppUpdateManagerFactory.create(context)
318+
}
286319
}

app/src/main/java/com/github/pakka_papad/settings/SettingsFragment.kt

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import androidx.compose.material3.Scaffold
88
import androidx.compose.material3.SnackbarHost
99
import androidx.compose.material3.SnackbarHostState
1010
import androidx.compose.runtime.LaunchedEffect
11+
import androidx.compose.runtime.derivedStateOf
1112
import androidx.compose.runtime.getValue
1213
import androidx.compose.runtime.remember
1314
import androidx.compose.ui.platform.ComposeView
@@ -21,8 +22,12 @@ import androidx.navigation.fragment.findNavController
2122
import com.github.pakka_papad.R
2223
import com.github.pakka_papad.components.Snackbar
2324
import com.github.pakka_papad.components.TopBarWithBackArrow
25+
import com.github.pakka_papad.data.ZenCrashReporter
2426
import com.github.pakka_papad.data.ZenPreferenceProvider
2527
import com.github.pakka_papad.ui.theme.ZenTheme
28+
import com.google.android.play.core.appupdate.AppUpdateManager
29+
import com.google.android.play.core.appupdate.AppUpdateOptions
30+
import com.google.android.play.core.install.model.AppUpdateType
2631
import dagger.hilt.android.AndroidEntryPoint
2732
import javax.inject.Inject
2833

@@ -33,8 +38,11 @@ class SettingsFragment : Fragment() {
3338

3439
private lateinit var navController: NavController
3540

36-
@Inject
37-
lateinit var preferenceProvider: ZenPreferenceProvider
41+
@Inject lateinit var preferenceProvider: ZenPreferenceProvider
42+
43+
@Inject lateinit var appUpdateManager: AppUpdateManager
44+
45+
@Inject lateinit var crashReporter: ZenCrashReporter
3846

3947
override fun onCreateView(
4048
inflater: LayoutInflater,
@@ -51,6 +59,10 @@ class SettingsFragment : Fragment() {
5159

5260
val tabsSelection by viewModel.tabsSelection.collectAsStateWithLifecycle()
5361

62+
val isAppUpdateAvailable by remember { derivedStateOf {
63+
viewModel.appUpdateInfo.value != null
64+
} }
65+
5466
val restoreClicked = remember{ {
5567
if (navController.currentDestination?.id == R.id.settingsFragment){
5668
navController.navigate(R.id.action_settingsFragment_to_restoreFragment)
@@ -87,6 +99,8 @@ class SettingsFragment : Fragment() {
8799
content = { paddingValues ->
88100
SettingsList(
89101
paddingValues = paddingValues,
102+
isAppUpdateAvailable = isAppUpdateAvailable,
103+
onAppUpdateClicked = ::onAppUpdateClicked,
90104
themePreference = themePreference,
91105
onThemePreferenceChanged = preferenceProvider::updateTheme,
92106
scanStatus = scanStatus,
@@ -115,4 +129,20 @@ class SettingsFragment : Fragment() {
115129
}
116130
}
117131
}
132+
133+
private fun onAppUpdateClicked() {
134+
val appUpdateInfo = viewModel.appUpdateInfo.value
135+
viewModel.consumeAppUpdateInfo()
136+
try {
137+
appUpdateInfo?.let {
138+
appUpdateManager.startUpdateFlow(
139+
it,
140+
requireActivity(),
141+
AppUpdateOptions.defaultOptions(AppUpdateType.IMMEDIATE)
142+
)
143+
}
144+
} catch (e: Exception) {
145+
crashReporter.logException(e)
146+
}
147+
}
118148
}

0 commit comments

Comments
 (0)