Skip to content

Commit 8886145

Browse files
committed
Play Source
* Updates: You can look for updates now. Install should work for normal/split apps but will fail for other cases like apps with dependencies.
1 parent 8bfd3f0 commit 8886145

File tree

4 files changed

+44
-18
lines changed

4 files changed

+44
-18
lines changed

app/src/main/kotlin/com/apkupdater/di/MainModule.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ val mainModule = module {
152152

153153
single(named("izzy")) { FdroidRepository(get(), "https://apt.izzysoft.de/fdroid/repo/", IzzySource, get()) }
154154

155-
single { UpdatesRepository(get(), get(), get(), get(named("main")), get(named("izzy")), get(), get(), get(), get()) }
155+
single { UpdatesRepository(get(), get(), get(), get(named("main")), get(named("izzy")), get(), get(), get(), get(), get()) }
156156

157157
single { SearchRepository(get(), get(named("main")), get(named("izzy")), get(), get(), get(), get(), get(), get()) }
158158

app/src/main/kotlin/com/apkupdater/repository/PlayRepository.kt

+41-16
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,16 @@ package com.apkupdater.repository
33
import android.content.Context
44
import android.net.Uri
55
import android.util.Log
6+
import com.apkupdater.data.ui.AppInstalled
67
import com.apkupdater.data.ui.AppUpdate
78
import com.apkupdater.data.ui.PlaySource
9+
import com.apkupdater.data.ui.getPackageNames
10+
import com.apkupdater.data.ui.getVersion
11+
import com.apkupdater.data.ui.getVersionCode
812
import com.apkupdater.prefs.Prefs
913
import com.apkupdater.util.play.NativeDeviceInfoProvider
1014
import com.apkupdater.util.play.PlayHttpClient
15+
import com.aurora.gplayapi.data.models.App
1116
import com.aurora.gplayapi.data.models.AuthData
1217
import com.aurora.gplayapi.helpers.AppDetailsHelper
1318
import com.aurora.gplayapi.helpers.PurchaseHelper
@@ -45,26 +50,46 @@ class PlayRepository(
4550
return@flow
4651
}
4752
val authData = auth()
48-
val details = AppDetailsHelper(authData).using(PlayHttpClient)
49-
val app = details.getAppByPackageName(text)
50-
val files = PurchaseHelper(authData).purchase(app.packageName, app.versionCode, app.offerType)
51-
val link = files.joinToString(separator = ",") { it.url }
52-
val update = AppUpdate(
53-
app.displayName,
54-
app.packageName,
55-
app.versionName,
56-
"",
57-
app.versionCode.toLong(),
58-
0L,
59-
PlaySource,
60-
Uri.parse(app.iconArtwork.url),
61-
link,
62-
whatsNew = app.changes
63-
)
53+
val app = AppDetailsHelper(authData)
54+
.using(PlayHttpClient)
55+
.getAppByPackageName(text)
56+
val update = app.toAppUpdate(PurchaseHelper(authData))
6457
emit(Result.success(listOf(update)))
6558
}.catch {
6659
emit(Result.failure(it))
6760
Log.e("PlayRepository", "Error searching.", it)
6861
}
6962

63+
suspend fun updates(apps: List<AppInstalled>) = flow {
64+
val authData = auth()
65+
val details = AppDetailsHelper(authData)
66+
.using(PlayHttpClient)
67+
.getAppByPackageName(apps.getPackageNames())
68+
val purchaseHelper = PurchaseHelper(authData)
69+
val updates = details
70+
.filter { it.versionCode > apps.getVersionCode(it.packageName) }
71+
.map { it.toAppUpdate(purchaseHelper, apps.getVersion(it.packageName), apps.getVersionCode(it.packageName)) }
72+
emit(updates)
73+
}.catch {
74+
emit(emptyList())
75+
Log.e("AptoideRepository", "Error looking for updates.", it)
76+
}
77+
7078
}
79+
80+
fun App.toAppUpdate(
81+
purchaseHelper: PurchaseHelper,
82+
oldVersion: String = "",
83+
oldVersionCode: Long = 0L
84+
) = AppUpdate(
85+
displayName,
86+
packageName,
87+
versionName,
88+
oldVersion,
89+
versionCode.toLong(),
90+
oldVersionCode,
91+
PlaySource,
92+
Uri.parse(iconArtwork.url),
93+
purchaseHelper.purchase(packageName, versionCode, offerType).joinToString(",") { it.url },
94+
whatsNew = changes
95+
)

app/src/main/kotlin/com/apkupdater/repository/UpdatesRepository.kt

+2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class UpdatesRepository(
1919
private val aptoideRepository: AptoideRepository,
2020
private val apkPureRepository: ApkPureRepository,
2121
private val gitLabRepository: GitLabRepository,
22+
private val playRepository: PlayRepository,
2223
private val prefs: Prefs
2324
) {
2425

@@ -34,6 +35,7 @@ class UpdatesRepository(
3435
if (prefs.useAptoide.get()) sources.add(aptoideRepository.updates(filtered))
3536
if (prefs.useApkPure.get()) sources.add(apkPureRepository.updates(filtered))
3637
if (prefs.useGitLab.get()) sources.add(gitLabRepository.updates(filtered))
38+
if (prefs.usePlay.get()) sources.add(playRepository.updates(filtered))
3739

3840
if (sources.isNotEmpty()) {
3941
sources

app/src/main/kotlin/com/apkupdater/ui/component/Text.kt

-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,6 @@ fun ScrollableText(
151151
}
152152
}
153153

154-
@OptIn(ExperimentalMaterial3Api::class)
155154
@Composable
156155
fun BadgeText(number: String) {
157156
if (number.isNotEmpty()) {

0 commit comments

Comments
 (0)