Skip to content

Commit dac8489

Browse files
fix known bugs
Signed-off-by: androidacy-user <opensource@androidacy.com>
1 parent b6a496e commit dac8489

7 files changed

Lines changed: 49 additions & 57 deletions

File tree

app/build.gradle.kts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -353,15 +353,15 @@ configurations {
353353
dependencies {
354354
// UI
355355
implementation("androidx.appcompat:appcompat:1.6.1")
356-
implementation("androidx.activity:activity-ktx:1.7.2")
356+
implementation("androidx.activity:activity-ktx:1.8.0")
357357
implementation("androidx.emoji2:emoji2:1.4.0")
358358
implementation("androidx.emoji2:emoji2-views-helper:1.4.0")
359359
implementation("androidx.preference:preference-ktx:1.2.1")
360360
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
361-
implementation("androidx.recyclerview:recyclerview:1.3.1")
361+
implementation("androidx.recyclerview:recyclerview:1.3.2")
362362
implementation("androidx.swiperefreshlayout:swiperefreshlayout:1.1.0")
363363
implementation("androidx.webkit:webkit:1.8.0")
364-
implementation("com.google.android.material:material:1.9.0")
364+
implementation("com.google.android.material:material:1.10.0")
365365

366366
implementation("com.mikepenz:aboutlibraries:10.9.1")
367367

@@ -405,11 +405,11 @@ dependencies {
405405
implementation("androidx.security:security-crypto:1.1.0-alpha06")
406406

407407
// some utils
408-
implementation("commons-io:commons-io:2.14.0")
408+
implementation("commons-io:commons-io:2.15.0")
409409
implementation("org.apache.commons:commons-compress:1.24.0")
410410

411411
// analytics
412-
implementation("ly.count.android:sdk:23.8.2")
412+
implementation("ly.count.android:sdk:23.8.4")
413413

414414
// annotations
415415
implementation("org.jetbrains:annotations-java5:24.0.1")
@@ -418,19 +418,19 @@ dependencies {
418418
debugImplementation("com.squareup.leakcanary:leakcanary-android:2.12")
419419

420420
// desugaring
421-
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.3")
421+
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
422422

423423
// yes
424424
implementation("com.github.fingerprintjs:fingerprint-android:2.0.2")
425425

426426
// room
427-
implementation("androidx.room:room-runtime:2.5.2")
427+
implementation("androidx.room:room-runtime:2.6.0")
428428

429429
// To use Kotlin Symbol Processing (KSP)
430-
ksp("androidx.room:room-compiler:2.5.2")
430+
ksp("androidx.room:room-compiler:2.6.0")
431431

432432
// optional - Kotlin Extensions and Coroutines support for Room
433-
implementation("androidx.room:room-ktx:2.5.2")
433+
implementation("androidx.room:room-ktx:2.6.0")
434434

435435
implementation("pl.droidsonroids.gif:android-gif-drawable:1.2.28")
436436

app/src/main/kotlin/com/fox2code/mmm/MainActivity.kt

Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ class MainActivity : AppCompatActivity(), OnRefreshListener, OverScrollHelper {
110110

111111
@SuppressLint("SdCardPath")
112112
val getContent = this.registerForActivityResult(
113-
ActivityResultContracts.GetContent()
113+
ActivityResultContracts.GetContent(),
114114
) { uri: Uri? ->
115115
if (uri == null) {
116116
Timber.d("invalid uri received")
@@ -157,46 +157,28 @@ class MainActivity : AppCompatActivity(), OnRefreshListener, OverScrollHelper {
157157
)
158158
return@registerForActivityResult
159159
}
160-
// check if the file is a zip by reading the first 4 bytes
161-
val bytes = ByteArray(4)
162-
inputStream.read(bytes, 0, 4)
163-
if (!(bytes[0] == 0x50.toByte() && bytes[1] == 0x4B.toByte() && bytes[2] == 0x03.toByte() && bytes[3] == 0x04.toByte())) {
164-
Toast.makeText(
165-
this@MainActivity, R.string.file_picker_not_zip, Toast.LENGTH_SHORT
166-
).show()
167-
Timber.e(
168-
"File is not a zip! Expected 0x504B0304, got %02X%02X%02X%02X",
169-
bytes[0],
170-
bytes[1],
171-
bytes[2],
172-
bytes[3]
173-
)
160+
run {
161+
outputStream = FileOutputStream(destination)
162+
Files.copy(inputStream, outputStream as FileOutputStream)
163+
if (MainApplication.forceDebugLogging) Timber.i("File saved at %s", destination)
164+
success = true
174165
callback?.onReceived(
175166
destination,
176167
uri,
177-
IntentHelper.RESPONSE_ERROR
168+
IntentHelper.RESPONSE_FILE
178169
)
179-
return@registerForActivityResult
180170
}
181-
outputStream = FileOutputStream(destination)
182-
Files.copy(inputStream, outputStream)
183-
if (MainApplication.forceDebugLogging) Timber.i("File saved at %s", destination)
184-
success = true
185171
} catch (e: Exception) {
186172
Timber.e(e)
187173
Toast.makeText(
188174
this@MainActivity, R.string.file_picker_failure, Toast.LENGTH_SHORT
189175
).show()
176+
callback?.onReceived(destination, uri, IntentHelper.RESPONSE_ERROR)
190177
} finally {
191178
Files.closeSilently(inputStream)
192179
Files.closeSilently(outputStream)
193180
if (!success && destination?.exists() == true && !destination!!.delete()) Timber.e("Failed to delete artifact!")
194181
}
195-
callback?.onReceived(
196-
destination,
197-
uri,
198-
if (success) IntentHelper.RESPONSE_FILE else IntentHelper.RESPONSE_ERROR
199-
)
200182
}
201183

202184
init {

app/src/main/kotlin/com/fox2code/mmm/MainApplication.kt

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,7 @@ class MainApplication : Application(), Configuration.Provider, ActivityLifecycle
489489
BuildConfig.DEBUG || getPreferences("mmm")?.getBoolean(
490490
"pref_force_debug_logging",
491491
false
492-
) ?: false
492+
) ?: BuildConfig.DEBUG
493493

494494
// Warning! Locales that don't exist will crash the app
495495
// Anything that is commented out is supported but the translation is not complete to at least 60%
@@ -641,7 +641,7 @@ class MainApplication : Application(), Configuration.Provider, ActivityLifecycle
641641
}
642642

643643
fun shouldPreventReboot(): Boolean {
644-
return getPreferences("mmm")!!.getBoolean("pref_prevent_reboot", true)
644+
return getPreferences("mmm")!!.getBoolean("pref_prevent_reboot", false)
645645
}
646646

647647
val isShowIncompatibleModules: Boolean
@@ -738,17 +738,25 @@ class MainApplication : Application(), Configuration.Provider, ActivityLifecycle
738738
}
739739

740740
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
741-
lastActivity = activity as AppCompatActivity
742-
activity.setTheme(managerThemeResId)
741+
try {
742+
lastActivity = activity as AppCompatActivity
743+
activity.setTheme(managerThemeResId)
744+
} catch (e: Exception) {
745+
Timber.e(e, "Failed to set theme")
746+
}
743747
}
744748

745749
override fun onActivityStarted(activity: Activity) {
746750
if (analyticsAllowed()) Countly.sharedInstance().onStart(activity)
747751
}
748752

749753
override fun onActivityResumed(activity: Activity) {
750-
lastActivity = activity as AppCompatActivity
751-
activity.setTheme(managerThemeResId)
754+
try {
755+
lastActivity = activity as AppCompatActivity
756+
activity.setTheme(managerThemeResId)
757+
} catch (e: Exception) {
758+
Timber.e(e, "Failed to set theme")
759+
}
752760
}
753761

754762
override fun onActivityPaused(activity: Activity) {

app/src/main/kotlin/com/fox2code/mmm/module/ActionButtonType.kt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import android.text.Spanned
1111
import android.widget.TextView
1212
import android.widget.Toast
1313
import androidx.annotation.DrawableRes
14+
import com.fox2code.mmm.BuildConfig
1415
import com.fox2code.mmm.MainApplication
1516
import com.fox2code.mmm.MainApplication.Companion.INSTANCE
1617
import com.fox2code.mmm.MainApplication.Companion.isShowcaseMode
@@ -159,14 +160,16 @@ enum class ActionButtonType {
159160
})
160161
// if text is reinstall, we need to uninstall first - warn the user but don't proceed
161162
if (moduleHolder.moduleInfo != null && moduleHolder.repoModule == null && button.text == button.context.getString(R.string.reinstall)) {
162-
val builder = MaterialAlertDialogBuilder(button.context)
163-
builder.setTitle(R.string.reinstall)
164-
.setMessage(R.string.reinstall_warning_v2)
165-
.setCancelable(true)
166-
// ok button that does nothing
167-
.setPositiveButton(R.string.ok, null)
168-
.show()
169-
return
163+
if (!BuildConfig.DEBUG) {
164+
val builder = MaterialAlertDialogBuilder(button.context)
165+
builder.setTitle(R.string.reinstall)
166+
.setMessage(R.string.reinstall_warning_v2)
167+
.setCancelable(true)
168+
// ok button that does nothing
169+
.setPositiveButton(R.string.ok, null)
170+
.show()
171+
return
172+
}
170173
}
171174
// prefer repomodule if possible
172175
var updateZipUrl = ""

app/src/main/kotlin/com/fox2code/mmm/utils/IntentHelper.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,8 @@ enum class IntentHelper {;
418418
}
419419
MainActivity.INSTANCE?.callback = callback
420420
MainActivity.INSTANCE?.destination = destination
421-
MainActivity.INSTANCE?.getContent?.launch("*/*")
421+
// select zip file
422+
MainActivity.INSTANCE?.getContent?.launch("application/zip")
422423
}
423424
}
424425
}

app/src/main/kotlin/com/fox2code/mmm/utils/io/net/Http.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,14 +76,13 @@ enum class Http {;
7676
*
7777
* Note: DNS Cache is stored in user data.
7878
*/
79-
private class FallBackDNS(context: Context, parent: Dns, vararg fallbacks: String?) : Dns {
79+
private class FallBackDNS(parent: Dns, vararg fallbacks: String?) : Dns {
8080
private val parent: Dns
81-
private val sharedPreferences: SharedPreferences
81+
private val sharedPreferences: SharedPreferences = MainApplication.getPreferences("mmm_dns")!!
8282
private val fallbacks: HashSet<String>
8383
private val fallbackCache: HashMap<String, List<InetAddress>>
8484

8585
init {
86-
sharedPreferences = MainApplication.getPreferences("mmm_dns")!!
8786
this.parent = parent
8887
this.fallbacks =
8988
HashSet(listOf(*fallbacks)).toString().replaceAfter("]", "").replace("[", "")
@@ -291,11 +290,11 @@ enum class Http {;
291290
}
292291
// User-Agent format was agreed on telegram
293292
androidacyUA = if (hasWebView) {
294-
WebSettings.getDefaultUserAgent(mainApplication)
295-
.replace("wv", "") + " AMMM/" + BuildConfig.VERSION_CODE
293+
WebSettings.getDefaultUserAgent(mainApplication).replaceFirst("(; )?wv".toRegex(), "").replaceFirst(" Version/[^ ]*".toRegex(), "") + " AMM/" + BuildConfig.VERSION_CODE
296294
} else {
297295
"Mozilla/5.0 (Linux; Android " + Build.VERSION.RELEASE + "; " + Build.DEVICE + ")" + " AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36" + " AMMM/" + BuildConfig.VERSION_CODE
298296
}
297+
Timber.i("User-Agent: %s", androidacyUA)
299298
httpclientBuilder.addInterceptor(Interceptor { chain: Interceptor.Chain? ->
300299
val request: Request.Builder = chain!!.request().newBuilder()
301300
request.header("Upgrade-Insecure-Requests", "1")
@@ -383,7 +382,6 @@ enum class Http {;
383382
}
384383
// Fallback DNS cache responses in case request fail but already succeeded once in the past
385384
fallbackDNS = FallBackDNS(
386-
mainApplication,
387385
dns,
388386
"github.com",
389387
"api.github.com",

app/src/main/res/xml/security_preferences.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727
<SwitchPreferenceCompat
2828
android:widgetLayout="@layout/preference_material_switch"
29-
app:defaultValue="true"
29+
app:defaultValue="false"
3030
app:icon="@drawable/ic_reboot_24"
3131
app:key="pref_prevent_reboot"
3232
app:singleLineTitle="false"

0 commit comments

Comments
 (0)