Skip to content

Commit a4e3266

Browse files
authored
feat: Improve source system and fix connectivity issues (#3137)
1 parent d7d5530 commit a4e3266

File tree

78 files changed

+343
-412
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+343
-412
lines changed

api/api/api.api

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,7 @@
11
public abstract interface class app/revanced/manager/downloader/BaseDownloadScope : app/revanced/manager/downloader/Scope {
22
}
33

4-
public final class app/revanced/manager/downloader/ConstantsKt {
5-
public static final field DOWNLOADER_HOST_PERMISSION Ljava/lang/String;
6-
}
7-
84
public final class app/revanced/manager/downloader/DownloadUrl : android/os/Parcelable {
9-
public static final field $stable I
105
public static final field CREATOR Landroid/os/Parcelable$Creator;
116
public fun <init> (Ljava/lang/String;Ljava/util/Map;)V
127
public synthetic fun <init> (Ljava/lang/String;Ljava/util/Map;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
@@ -25,11 +20,9 @@ public final class app/revanced/manager/downloader/DownloadUrl : android/os/Parc
2520
}
2621

2722
public final class app/revanced/manager/downloader/Downloader {
28-
public static final field $stable I
2923
}
3024

3125
public final class app/revanced/manager/downloader/DownloaderBuilder {
32-
public static final field $stable I
3326
}
3427

3528
public abstract interface annotation class app/revanced/manager/downloader/DownloaderHostApi : java/lang/annotation/Annotation {
@@ -40,9 +33,9 @@ public final class app/revanced/manager/downloader/DownloaderKt {
4033
}
4134

4235
public final class app/revanced/manager/downloader/DownloaderScope : app/revanced/manager/downloader/Scope {
43-
public static final field $stable I
4436
public final fun download (Lkotlin/jvm/functions/Function3;)V
4537
public final fun get (Lkotlin/jvm/functions/Function4;)V
38+
public fun getDataDir ()Ljava/io/File;
4639
public fun getDownloaderPackageName ()Ljava/lang/String;
4740
public fun getHostPackageName ()Ljava/lang/String;
4841
public final fun useService (Landroid/content/Intent;Lkotlin/jvm/functions/Function2;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
@@ -54,6 +47,11 @@ public final class app/revanced/manager/downloader/ExtensionsKt {
5447

5548
public abstract interface class app/revanced/manager/downloader/GetScope : app/revanced/manager/downloader/Scope {
5649
public abstract fun requestStartActivity (Landroid/content/Intent;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
50+
public fun requestStartFragment (Ljava/lang/Class;Landroid/os/Bundle;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
51+
}
52+
53+
public final class app/revanced/manager/downloader/GetScope$DefaultImpls {
54+
public static fun requestStartFragment (Lapp/revanced/manager/downloader/GetScope;Ljava/lang/Class;Landroid/os/Bundle;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;
5755
}
5856

5957
public abstract interface class app/revanced/manager/downloader/InputDownloadScope : app/revanced/manager/downloader/BaseDownloadScope {
@@ -64,7 +62,6 @@ public abstract interface class app/revanced/manager/downloader/OutputDownloadSc
6462
}
6563

6664
public final class app/revanced/manager/downloader/Package : android/os/Parcelable {
67-
public static final field $stable I
6865
public static final field CREATOR Landroid/os/Parcelable$Creator;
6966
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
7067
public final fun component1 ()Ljava/lang/String;
@@ -81,32 +78,28 @@ public final class app/revanced/manager/downloader/Package : android/os/Parcelab
8178
}
8279

8380
public abstract interface class app/revanced/manager/downloader/Scope {
81+
public abstract fun getDataDir ()Ljava/io/File;
8482
public abstract fun getDownloaderPackageName ()Ljava/lang/String;
8583
public abstract fun getHostPackageName ()Ljava/lang/String;
8684
}
8785

8886
public abstract class app/revanced/manager/downloader/UserInteractionException : java/lang/Exception {
89-
public static final field $stable I
9087
public synthetic fun <init> (Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
9188
}
9289

9390
public abstract class app/revanced/manager/downloader/UserInteractionException$Activity : app/revanced/manager/downloader/UserInteractionException {
94-
public static final field $stable I
9591
public synthetic fun <init> (Ljava/lang/String;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
9692
}
9793

9894
public final class app/revanced/manager/downloader/UserInteractionException$Activity$Cancelled : app/revanced/manager/downloader/UserInteractionException$Activity {
99-
public static final field $stable I
10095
}
10196

10297
public final class app/revanced/manager/downloader/UserInteractionException$Activity$NotCompleted : app/revanced/manager/downloader/UserInteractionException$Activity {
103-
public static final field $stable I
10498
public final fun getIntent ()Landroid/content/Intent;
10599
public final fun getResultCode ()I
106100
}
107101

108102
public final class app/revanced/manager/downloader/UserInteractionException$RequestDenied : app/revanced/manager/downloader/UserInteractionException {
109-
public static final field $stable I
110103
}
111104

112105
public final class app/revanced/manager/downloader/webview/APIKt {
@@ -149,8 +142,8 @@ public abstract interface class app/revanced/manager/downloader/webview/WebViewC
149142
}
150143

151144
public final class app/revanced/manager/downloader/webview/WebViewScope : app/revanced/manager/downloader/Scope {
152-
public static final field $stable I
153145
public final fun download (Lkotlin/jvm/functions/Function5;)V
146+
public fun getDataDir ()Ljava/io/File;
154147
public fun getDownloaderPackageName ()Ljava/lang/String;
155148
public fun getHostPackageName ()Ljava/lang/String;
156149
public final fun pageLoad (Lkotlin/jvm/functions/Function3;)V

api/src/main/kotlin/app/revanced/manager/downloader/Constants.kt

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

api/src/main/kotlin/app/revanced/manager/downloader/Downloader.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import android.content.Intent
66
import android.content.ServiceConnection
77
import android.os.IBinder
88
import android.app.Activity
9+
import android.content.res.Resources
910
import android.os.Bundle
1011
import android.os.Parcelable
1112
import androidx.annotation.StringRes
@@ -94,7 +95,8 @@ typealias GetResult<T> = Pair<T, Version?>
9495

9596
class DownloaderScope<T : Parcelable> internal constructor(
9697
private val scopeImpl: Scope,
97-
internal val context: Context
98+
internal val context: Context,
99+
internal val resources: Resources
98100
) : Scope by scopeImpl {
99101
// Returning an InputStream is the primary way for a downloader to implement the download function, but we also want to offer an OutputStream API since using InputStream might not be convenient in all cases.
100102
// It is much easier to implement the main InputStream API on top of OutputStreams compared to doing it the other way around, which is why we are using OutputStream here.
@@ -156,8 +158,8 @@ class DownloaderBuilder<T : Parcelable> internal constructor(
156158
private val block: DownloaderScope<T>.() -> Unit
157159
) {
158160
@DownloaderHostApi
159-
fun build(scopeImpl: Scope, context: Context) =
160-
with(DownloaderScope<T>(scopeImpl, context)) {
161+
fun build(scopeImpl: Scope, context: Context, resources: Resources) =
162+
with(DownloaderScope<T>(scopeImpl, context, resources)) {
161163
block()
162164

163165
Downloader(

api/src/main/kotlin/app/revanced/manager/downloader/webview/API.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ suspend fun <T> GetScope.runWebView(
144144
*/
145145
fun WebViewDownloader(@StringRes name: Int, block: suspend WebViewScope<DownloadUrl>.(packageName: String, version: String?) -> InitialUrl?) =
146146
Downloader(name) {
147-
val label = context.getString(name)
147+
val label = resources.getString(name)
148148

149149
get { packageName, version ->
150150
class ReturnNull : Exception()

app/src/main/AndroidManifest.xml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,6 @@
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:tools="http://schemas.android.com/tools">
44

5-
<permission
6-
android:name="app.revanced.manager.permission.DOWNLOADER_HOST"
7-
android:protectionLevel="signature"
8-
android:label="@string/downloader_host_permission_label"
9-
android:description="@string/downloader_host_permission_description"
10-
/>
11-
12-
<uses-permission android:name="app.revanced.manager.permission.DOWNLOADER_HOST" />
135
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"
146
tools:ignore="QueryAllPackagesPermission" />
157
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

app/src/main/java/app/revanced/manager/DownloaderActivity.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,8 @@ class DownloaderActivity : FragmentActivity() {
3636
val fragmentClassName = intent.getStringExtra("FRAGMENT_CLASS_NAME")!!
3737
val args = intent.getBundleExtra("FRAGMENT_ARGS")
3838

39-
res =
40-
downloaderPkgState?.context?.createConfigurationContext(super.resources.configuration)?.resources
41-
39+
// See DownloaderRepository.ResourceImpl.
40+
res = downloaderPkgState?.resourceImpl?.apply(super.resources)
4241

4342
if (savedInstanceState == null) {
4443
@Suppress("UNCHECKED_CAST")

app/src/main/java/app/revanced/manager/ManagerApplication.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class ManagerApplication : Application() {
7878
arrayOf(patchBundleRepository, downloaderRepository).forEach {
7979
with(it) {
8080
reload()
81-
updateCheck()
81+
updateCheck(force = false)
8282
}
8383
}
8484
}

app/src/main/java/app/revanced/manager/data/platform/NetworkInfo.kt

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,5 @@ class NetworkInfo(app: Application) {
99
private val connectivityManager = app.getSystemService<ConnectivityManager>()!!
1010

1111
private fun getCapabilities() = connectivityManager.activeNetwork?.let { connectivityManager.getNetworkCapabilities(it) }
12-
fun isConnected() = connectivityManager.activeNetwork != null
1312
fun isUnmetered() = getCapabilities()?.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED) ?: true
14-
15-
/**
16-
* Returns true if it is safe to download large files.
17-
*/
18-
fun isSafe(ignoreMetered: Boolean) = isConnected() && (ignoreMetered || isUnmetered())
1913
}

app/src/main/java/app/revanced/manager/data/room/bundles/PatchBundleEntity.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ package app.revanced.manager.data.room.bundles
22

33
import androidx.room.*
44
import app.revanced.manager.data.room.sources.Source
5+
import app.revanced.manager.domain.manager.SourceManager
56

67
@Entity(tableName = "patch_bundles")
78
data class PatchBundleEntity(
8-
@PrimaryKey val uid: Int,
9+
@PrimaryKey override val uid: Int,
910
@ColumnInfo(name = "name") val name: String,
1011
@ColumnInfo(name = "version") val versionHash: String? = null,
1112
@ColumnInfo(name = "source") val source: Source,
1213
@ColumnInfo(name = "auto_update") val autoUpdate: Boolean
13-
)
14+
) : SourceManager.DatabaseEntity

app/src/main/java/app/revanced/manager/data/room/downloader/DownloaderEntity.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ package app.revanced.manager.data.room.downloader
22

33
import androidx.room.*
44
import app.revanced.manager.data.room.sources.Source
5+
import app.revanced.manager.domain.manager.SourceManager
56

67
@Entity(tableName = "downloaders")
78
data class DownloaderEntity(
8-
@PrimaryKey val uid: Int,
9+
@PrimaryKey override val uid: Int,
910
@ColumnInfo(name = "name") val name: String,
1011
@ColumnInfo(name = "version") val versionHash: String? = null,
1112
@ColumnInfo(name = "source") val source: Source,
1213
@ColumnInfo(name = "auto_update") val autoUpdate: Boolean
13-
)
14+
) : SourceManager.DatabaseEntity

0 commit comments

Comments
 (0)