commit 485812a5503381731c7bd278a1f12c41614cecc0 parent 68d8e0e9c4498ad8265cb25edefcc4c38900c040 Author: rhunk <101876869+rhunk@users.noreply.github.com> Date: Tue, 22 Aug 2023 10:32:58 +0200 fix: check for requirements Diffstat:
6 files changed, 22 insertions(+), 13 deletions(-)
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml @@ -26,7 +26,7 @@ android:value="Enhanced Snapchat" /> <meta-data android:name="xposedminversion" - android:value="53" /> + android:value="93" /> <meta-data android:name="xposedscope" android:resource="@array/sc_scope" /> @@ -49,6 +49,7 @@ </activity> <activity android:name=".ui.setup.SetupActivity" + android:launchMode="singleTask" android:exported="true" android:theme="@style/AppTheme" android:excludeFromRecents="true" /> diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/RemoteSideContext.kt b/app/src/main/kotlin/me/rhunk/snapenhance/RemoteSideContext.kt @@ -21,7 +21,6 @@ import me.rhunk.snapenhance.ui.manager.data.SnapchatAppInfo import me.rhunk.snapenhance.ui.setup.Requirements import me.rhunk.snapenhance.ui.setup.SetupActivity import java.lang.ref.WeakReference -import kotlin.system.exitProcess class RemoteSideContext( val androidContext: Context @@ -51,6 +50,10 @@ class RemoteSideContext( } init { + reload() + } + + fun reload() { runCatching { config.loadFromContext(androidContext) translation.userLocale = config.locale @@ -62,7 +65,7 @@ class RemoteSideContext( downloadTaskManager.init(androidContext) modDatabase.init() }.onFailure { - Logger.error("Failed to initialize RemoteSideContext", it) + Logger.error("Failed to load RemoteSideContext", it) } } @@ -81,7 +84,7 @@ class RemoteSideContext( } else null ) - fun checkForRequirements(overrideRequirements: Int? = null) { + fun checkForRequirements(overrideRequirements: Int? = null): Boolean { var requirements = overrideRequirements ?: 0 if (!config.wasPresent) { @@ -101,7 +104,7 @@ class RemoteSideContext( requirements = requirements or Requirements.MAPPINGS } - if (requirements == 0) return + if (requirements == 0) return false val currentContext = activity ?: androidContext @@ -109,10 +112,9 @@ class RemoteSideContext( putExtra("requirements", requirements) if (currentContext !is Activity) { addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - currentContext.startActivity(this) - exitProcess(0) } currentContext.startActivity(this) + return true } } } \ No newline at end of file diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/bridge/BridgeService.kt b/app/src/main/kotlin/me/rhunk/snapenhance/bridge/BridgeService.kt @@ -23,9 +23,9 @@ class BridgeService : Service() { private lateinit var remoteSideContext: RemoteSideContext lateinit var syncCallback: SyncCallback - override fun onBind(intent: Intent): IBinder { + override fun onBind(intent: Intent): IBinder? { remoteSideContext = SharedContextHolder.remote(this).apply { - checkForRequirements() + if (checkForRequirements()) return null } remoteSideContext.bridgeService = this messageLoggerWrapper = MessageLoggerWrapper(getDatabasePath(BridgeFileType.MESSAGE_LOGGER_DATABASE.fileName)).also { it.init() } diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/ui/setup/SetupActivity.kt b/app/src/main/kotlin/me/rhunk/snapenhance/ui/setup/SetupActivity.kt @@ -48,6 +48,12 @@ class SetupActivity : ComponentActivity() { val setupContext = SharedContextHolder.remote(this).apply { activity = this@SetupActivity } + + fun endActivity() { + setupContext.reload() + finish() + } + val requirements = intent.getIntExtra("requirements", Requirements.FIRST_RUN) fun hasRequirement(requirement: Int) = requirements and requirement == requirement @@ -69,7 +75,7 @@ class SetupActivity : ComponentActivity() { // If there are no required screens, we can just finish the activity if (requiredScreens.isEmpty()) { - finish() + endActivity() return } @@ -90,7 +96,7 @@ class SetupActivity : ComponentActivity() { requiredScreens.removeFirst() navController.navigate(requiredScreens.first().route) } else { - finish() + endActivity() } } diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/SnapEnhance.kt b/core/src/main/kotlin/me/rhunk/snapenhance/SnapEnhance.kt @@ -77,9 +77,9 @@ class SnapEnhance { var activityWasResumed = false //we need to reload the config when the app is resumed + //FIXME: called twice at first launch Activity::class.java.hook("onResume", HookStage.AFTER, { isBridgeInitialized }) { val activity = it.thisObject() as Activity - if (!activity.packageName.equals(Constants.SNAPCHAT_PACKAGE_NAME)) return@hook if (!activityWasResumed) { diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/bridge/BridgeClient.kt b/core/src/main/kotlin/me/rhunk/snapenhance/bridge/BridgeClient.kt @@ -79,7 +79,7 @@ class BridgeClient( override fun onNullBinding(name: ComponentName) { xposedLog("failed to connect to bridge service") - future.complete(false) + exitProcess(1) } override fun onServiceDisconnected(name: ComponentName) {