Skip to content

Commit 9ecdad4

Browse files
code cleanup
Signed-off-by: androidacy-user <opensource@androidacy.com>
1 parent 18586c3 commit 9ecdad4

117 files changed

Lines changed: 380 additions & 1217 deletions

File tree

Some content is hidden

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

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ The Androidacy Module Manager serves as a robust alternative to the official Mag
3939

4040
#### Dark | Light
4141

42+
<!--suppress CheckImageSize -->
4243
<img src="docs/dark_screenshot.png" alt="Dark Screenshot" width="320"/> <img src="docs/light_screenshot.png" alt="Light Screenshot" width="320"/>
4344

4445
### Default Repositories

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import java.io.InputStream
1616

1717
@Suppress("unused")
1818
class AppUpdateManager private constructor() {
19-
var changes: String? = null
19+
private var changes: String? = null
2020
private val compatDataId = HashMap<String, Int>()
2121
private val updateLock = Any()
2222
private val compatFile: File = File(MainApplication.INSTANCE!!.filesDir, "compat.txt")
@@ -132,7 +132,6 @@ class AppUpdateManager private constructor() {
132132
return appUpdateManager.getCompatibilityFlags(moduleId)
133133
}
134134

135-
@JvmStatic
136135
fun shouldForceHide(repoId: String): Boolean {
137136
return if (BuildConfig.DEBUG || repoId.startsWith("repo_") || repoId == "magisk_alt_repo") false else !repoId.startsWith(
138137
"repo_"

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import android.os.Bundle
1212
import android.view.View
1313
import android.widget.EditText
1414
import android.widget.Toast
15-
import com.fox2code.foxcompat.app.FoxActivity
15+
import androidx.appcompat.app.AppCompatActivity
1616
import com.google.android.material.dialog.MaterialAlertDialogBuilder
1717
import com.google.android.material.textview.MaterialTextView
1818
import io.sentry.Sentry
@@ -22,7 +22,7 @@ import timber.log.Timber
2222
import java.io.PrintWriter
2323
import java.io.StringWriter
2424

25-
class CrashHandler : FoxActivity() {
25+
class CrashHandler : AppCompatActivity() {
2626
@Suppress("DEPRECATION", "KotlinConstantConditions")
2727
@SuppressLint("RestrictedApi")
2828
override fun onCreate(savedInstanceState: Bundle?) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import android.annotation.SuppressLint
44
import android.content.Intent
55
import android.net.Uri
66
import android.os.Bundle
7-
import com.fox2code.foxcompat.app.FoxActivity
7+
import androidx.appcompat.app.AppCompatActivity
88
import com.google.android.material.button.MaterialButton
99

10-
class ExpiredActivity : FoxActivity() {
10+
class ExpiredActivity : AppCompatActivity() {
1111
@SuppressLint("RestrictedApi")
1212
override fun onCreate(savedInstanceState: Bundle?) {
1313
super.onCreate(savedInstanceState)

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

Lines changed: 36 additions & 177 deletions
Large diffs are not rendered by default.

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

Lines changed: 57 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,28 @@
55
package com.fox2code.mmm
66

77
import android.annotation.SuppressLint
8+
import android.app.Activity
89
import android.app.ActivityManager
910
import android.app.ActivityManager.RunningAppProcessInfo
11+
import android.app.Application
12+
import android.app.Application.ActivityLifecycleCallbacks
1013
import android.content.Context
1114
import android.content.Intent
1215
import android.content.SharedPreferences
1316
import android.content.pm.PackageManager
1417
import android.content.res.Resources
1518
import android.os.Build
19+
import android.os.Bundle
1620
import android.os.SystemClock
1721
import android.util.Log
1822
import androidx.annotation.StyleRes
23+
import androidx.appcompat.app.AppCompatActivity
1924
import androidx.core.app.NotificationManagerCompat
2025
import androidx.emoji2.text.DefaultEmojiCompatConfig
2126
import androidx.emoji2.text.EmojiCompat
2227
import androidx.security.crypto.EncryptedSharedPreferences
2328
import androidx.security.crypto.MasterKey
2429
import androidx.work.Configuration
25-
import com.fox2code.foxcompat.app.FoxActivity
26-
import com.fox2code.foxcompat.app.FoxApplication
2730
import com.fox2code.foxcompat.app.internal.FoxProcessExt
2831
import com.fox2code.foxcompat.view.FoxThemeWrapper
2932
import com.fox2code.mmm.installer.InstallerInitializer
@@ -58,29 +61,36 @@ import java.util.Random
5861
import kotlin.math.abs
5962

6063
@Suppress("unused", "MemberVisibilityCanBePrivate")
61-
class MainApplication : FoxApplication(), Configuration.Provider {
64+
class MainApplication : Application(), Configuration.Provider, ActivityLifecycleCallbacks {
6265

6366
var isTainted = false
6467

65-
@JvmField
68+
var lastActivity: AppCompatActivity? = null
69+
6670
var modulesHaveUpdates = false
6771

68-
@JvmField
6972
var updateModuleCount = 0
7073

71-
@JvmField
7274
var updateModules: List<String> = ArrayList()
7375

7476
@StyleRes
7577
private var managerThemeResId = R.style.Theme_MagiskModuleManager
7678
private var markwonThemeContext: FoxThemeWrapper? = null
7779

78-
@JvmField
7980
var markwon: Markwon? = null
8081
private var existingKey: CharArray? = null
8182

82-
@JvmField
8383
var tracker: Tracker? = null
84+
get() {
85+
if (field == null) {
86+
field = TrackerBuilder.createDefault(BuildConfig.ANALYTICS_ENDPOINT, 1)
87+
.build(Matomo.getInstance(this))
88+
val tracker = field!!
89+
tracker.startNewSession()
90+
tracker.dispatchInterval = 1000
91+
}
92+
return field
93+
}
8494
private var makingNewKey = false
8595
private var isCrashHandler = false
8696

@@ -124,7 +134,7 @@ class MainApplication : FoxApplication(), Configuration.Provider {
124134
return existingKey!!
125135
}
126136

127-
fun getMarkwon(): Markwon? {
137+
fun reallyGetMarkwon(): Markwon? {
128138
if (isCrashHandler) return null
129139
if (markwon != null) return markwon
130140
var contextThemeWrapper = markwonThemeContext
@@ -140,7 +150,7 @@ class MainApplication : FoxApplication(), Configuration.Provider {
140150
)
141151
)
142152
).build()
143-
return markwon.also { this.markwon = it }
153+
return reallyGetMarkwon().also { this.markwon = it }
144154
}
145155

146156
override fun getWorkManagerConfiguration(): Configuration {
@@ -194,32 +204,23 @@ class MainApplication : FoxApplication(), Configuration.Provider {
194204
markwon = null
195205
}
196206

197-
@SuppressLint("NonConstantResourceId")
198-
override fun isLightTheme(): Boolean {
199-
return when (getSharedPreferences("mmm")!!.getString("pref_theme", "system")) {
200-
"system" -> isSystemLightTheme
201-
"dark", "black" -> false
207+
val isLightTheme: Boolean
208+
get() = when (managerThemeResId) {
209+
R.style.Theme_MagiskModuleManager,
210+
R.style.Theme_MagiskModuleManager_Monet,
211+
R.style.Theme_MagiskModuleManager_Dark,
212+
R.style.Theme_MagiskModuleManager_Monet_Dark,
213+
R.style.Theme_MagiskModuleManager_Black,
214+
R.style.Theme_MagiskModuleManager_Monet_Black -> false
215+
202216
else -> true
203217
}
204-
}
205218

206219
private val isSystemLightTheme: Boolean
207220
get() = (this.resources.configuration.uiMode and android.content.res.Configuration.UI_MODE_NIGHT_MASK) != android.content.res.Configuration.UI_MODE_NIGHT_YES
208221
val isDarkTheme: Boolean
209222
get() = !this.isLightTheme
210223

211-
@Synchronized
212-
fun getTracker(): Tracker? {
213-
if (tracker == null) {
214-
tracker = TrackerBuilder.createDefault(BuildConfig.ANALYTICS_ENDPOINT, 1)
215-
.build(Matomo.getInstance(this))
216-
val tracker = tracker!!
217-
tracker.startNewSession()
218-
tracker.dispatchInterval = 1000
219-
}
220-
return tracker
221-
}
222-
223224
override fun onCreate() {
224225
supportedLocales.addAll(
225226
listOf(
@@ -251,6 +252,7 @@ class MainApplication : FoxApplication(), Configuration.Provider {
251252
if (INSTANCE == null) INSTANCE = this
252253
relPackageName = this.packageName
253254
super.onCreate()
255+
registerActivityLifecycleCallbacks(this)
254256
initialize(this)
255257
// Initialize Timber
256258
configTimber()
@@ -274,15 +276,14 @@ class MainApplication : FoxApplication(), Configuration.Provider {
274276
if (BuildConfig.DEBUG) Timber.d("AMM is running in debug mode")
275277
// analytics
276278
if (BuildConfig.DEBUG) Timber.d("Initializing matomo")
277-
getTracker()
278279
if (!isMatomoAllowed()) {
279280
if (BuildConfig.DEBUG) Timber.d("Matomo is not allowed")
280281
tracker!!.isOptOut = true
281282
} else {
282283
tracker!!.isOptOut = false
283284
}
284285
if (getSharedPreferences("matomo")!!.getBoolean("install_tracked", false)) {
285-
TrackHelper.track().download().with(INSTANCE!!.getTracker())
286+
TrackHelper.track().download().with(INSTANCE!!.tracker)
286287
if (BuildConfig.DEBUG) Timber.d("Sent install event to matomo")
287288
getSharedPreferences("matomo")!!.edit().putBoolean("install_tracked", true).apply()
288289
} else {
@@ -345,22 +346,12 @@ class MainApplication : FoxApplication(), Configuration.Provider {
345346
Timber.w("ANDROIDACY_CLIENT_ID is empty, disabling AndroidacyRepoData 1")
346347
editor.apply()
347348
}
348-
getMarkwon()
349+
reallyGetMarkwon()
349350
}
350351

351352
private val intent: Intent?
352353
get() = this.packageManager.getLaunchIntentForPackage(this.packageName)
353354

354-
override fun onCreateFoxActivity(compatActivity: FoxActivity) {
355-
super.onCreateFoxActivity(compatActivity)
356-
compatActivity.setTheme(managerThemeResId)
357-
}
358-
359-
override fun onRefreshUI(compatActivity: FoxActivity) {
360-
super.onRefreshUI(compatActivity)
361-
compatActivity.setThemeRecreate(managerThemeResId)
362-
}
363-
364355
override fun onConfigurationChanged(newConfig: android.content.res.Configuration) {
365356
val newTimeFormatLocale = newConfig.locales[0]
366357
if (timeFormatLocale !== newTimeFormatLocale) {
@@ -503,7 +494,6 @@ class MainApplication : FoxApplication(), Configuration.Provider {
503494
private var relPackageName = BuildConfig.APPLICATION_ID
504495

505496
@SuppressLint("StaticFieldLeak")
506-
@JvmStatic
507497
var INSTANCE: MainApplication? = null
508498
private set
509499
get() {
@@ -514,7 +504,6 @@ class MainApplication : FoxApplication(), Configuration.Provider {
514504
return field
515505
}
516506

517-
@JvmStatic
518507
var isFirstBoot = false
519508
private var mSharedPrefs: HashMap<Any, Any>? = null
520509
var updateCheckBg: String? = null
@@ -555,7 +544,6 @@ class MainApplication : FoxApplication(), Configuration.Provider {
555544
}
556545

557546
@Suppress("NAME_SHADOWING")
558-
@JvmStatic
559547
fun getSharedPreferences(name: String): SharedPreferences? {
560548
// encryptedSharedPreferences is used
561549
var name = name
@@ -627,7 +615,6 @@ class MainApplication : FoxApplication(), Configuration.Provider {
627615
val isBlurEnabled: Boolean
628616
get() = getSharedPreferences("mmm")!!.getBoolean("pref_enable_blur", false)
629617

630-
@JvmStatic
631618
val isDeveloper: Boolean
632619
get() {
633620
return if (BuildConfig.DEBUG) true else getSharedPreferences("mmm")!!.getBoolean(
@@ -645,7 +632,6 @@ class MainApplication : FoxApplication(), Configuration.Provider {
645632
"mmm"
646633
)!!.getBoolean("pref_use_magisk_install_command", false) && isDeveloper && !InstallerInitializer.isKsu
647634

648-
@JvmStatic
649635
val isBackgroundUpdateCheckEnabled: Boolean
650636
get() {
651637
if (updateCheckBg != null) {
@@ -677,22 +663,44 @@ class MainApplication : FoxApplication(), Configuration.Provider {
677663
val bootSharedPreferences: SharedPreferences?
678664
get() = getSharedPreferences("mmm_boot")
679665

680-
@JvmStatic
681666
fun formatTime(timeStamp: Long): String {
682667
// new Date(x) also get the local timestamp for format
683668
return timeFormat.format(Date(timeStamp))
684669
}
685670

686-
@JvmStatic
687671
val isNotificationPermissionGranted: Boolean
688672
get() = NotificationManagerCompat.from((INSTANCE)!!).areNotificationsEnabled()
689673

690-
@JvmStatic
691674
fun isMatomoAllowed(): Boolean {
692675
return getSharedPreferences("mmm")!!.getBoolean(
693676
"pref_analytics_enabled",
694677
BuildConfig.DEFAULT_ENABLE_ANALYTICS
695678
)
696679
}
697680
}
681+
682+
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
683+
lastActivity = activity as AppCompatActivity
684+
activity.setTheme(managerThemeResId)
685+
}
686+
687+
override fun onActivityStarted(activity: Activity) {
688+
}
689+
690+
override fun onActivityResumed(activity: Activity) {
691+
lastActivity = activity as AppCompatActivity
692+
activity.setTheme(managerThemeResId)
693+
}
694+
695+
override fun onActivityPaused(activity: Activity) {
696+
}
697+
698+
override fun onActivityStopped(activity: Activity) {
699+
}
700+
701+
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
702+
}
703+
704+
override fun onActivityDestroyed(activity: Activity) {
705+
}
698706
}

0 commit comments

Comments
 (0)