Skip to content

Commit 367c3c9

Browse files
committed
log more reasons why system bridge auto starting fails
1 parent fd3fcec commit 367c3c9

File tree

1 file changed

+56
-25
lines changed

1 file changed

+56
-25
lines changed

base/src/main/java/io/github/sds100/keymapper/base/expertmode/SystemBridgeAutoStarter.kt

Lines changed: 56 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,14 @@ class SystemBridgeAutoStarter @Inject constructor(
8181
sealed class NotEligible : AutoStartEligibility() {
8282
data object WiFiDisconnected : NotEligible()
8383
data object AutoStartCooldown : NotEligible()
84-
data object Other : NotEligible()
84+
data object WriteSecureSettingsRevoked : NotEligible()
85+
data object AdbUnpaired : NotEligible()
86+
data object ShizukuRootRequired : NotEligible()
87+
data object SystemBridgeStoppedByUser : NotEligible()
88+
data object NotUsedBefore : NotEligible()
89+
data object EmergencyKilled : NotEligible()
90+
data object AutoStartDisabled : NotEligible()
91+
data object SystemBridgeConnected : NotEligible()
8592
}
8693
}
8794

@@ -112,18 +119,26 @@ class SystemBridgeAutoStarter @Inject constructor(
112119
permissionAdapter.isGrantedFlow(Permission.WRITE_SECURE_SETTINGS),
113120
networkAdapter.isWifiConnected,
114121
) { isWriteSecureSettingsGranted, isWifiConnected ->
115-
if (!isWifiConnected) {
116-
AutoStartEligibility.NotEligible.WiFiDisconnected
117-
} else if (!isWriteSecureSettingsGranted) {
118-
AutoStartEligibility.NotEligible.Other
119-
} else if (!setupController.isAdbPaired()) {
120-
AutoStartEligibility.NotEligible.Other
121-
} else {
122-
AutoStartEligibility.Eligible(AutoStartType.ADB)
122+
when {
123+
!isWifiConnected -> {
124+
AutoStartEligibility.NotEligible.WiFiDisconnected
125+
}
126+
127+
!isWriteSecureSettingsGranted -> {
128+
AutoStartEligibility.NotEligible.WriteSecureSettingsRevoked
129+
}
130+
131+
!setupController.isAdbPaired() -> {
132+
AutoStartEligibility.NotEligible.AdbUnpaired
133+
}
134+
135+
else -> {
136+
AutoStartEligibility.Eligible(AutoStartType.ADB)
137+
}
123138
}
124139
}
125140
} else {
126-
flowOf(AutoStartEligibility.NotEligible.Other)
141+
flowOf(AutoStartEligibility.NotEligible.ShizukuRootRequired)
127142
}
128143
}
129144
}
@@ -134,20 +149,7 @@ class SystemBridgeAutoStarter @Inject constructor(
134149
@OptIn(ExperimentalCoroutinesApi::class)
135150
private val autoStartFlow: Flow<AutoStartEligibility> =
136151
connectionManager.connectionState.flatMapLatest { connectionState ->
137-
// Do not autostart if it is connected or it was killed from the user
138-
if (connectionState !is SystemBridgeConnectionState.Disconnected ||
139-
connectionState.isStoppedByUser ||
140-
!getIsUsedBefore() ||
141-
getIsStoppedByUser() ||
142-
isSystemBridgeEmergencyKilled() ||
143-
!isAutoStartEnabled()
144-
) {
145-
flowOf(AutoStartEligibility.NotEligible.Other)
146-
} else if (isWithinAutoStartCooldown()) {
147-
flowOf(AutoStartEligibility.NotEligible.AutoStartCooldown)
148-
} else {
149-
autoStartTypeFlow
150-
}
152+
getAutoStartEligibility(connectionState)
151153
}
152154

153155
/**
@@ -181,6 +183,33 @@ class SystemBridgeAutoStarter @Inject constructor(
181183
}
182184
}
183185

186+
private suspend fun getAutoStartEligibility(
187+
connectionState: SystemBridgeConnectionState,
188+
): Flow<AutoStartEligibility> {
189+
return when {
190+
connectionState !is SystemBridgeConnectionState.Disconnected ->
191+
flowOf(AutoStartEligibility.NotEligible.SystemBridgeConnected)
192+
193+
connectionState.isStoppedByUser ->
194+
flowOf(AutoStartEligibility.NotEligible.SystemBridgeStoppedByUser)
195+
196+
!getIsUsedBefore() -> flowOf(AutoStartEligibility.NotEligible.NotUsedBefore)
197+
198+
getIsStoppedByUser() ->
199+
flowOf(AutoStartEligibility.NotEligible.SystemBridgeStoppedByUser)
200+
201+
isSystemBridgeEmergencyKilled() ->
202+
flowOf(AutoStartEligibility.NotEligible.EmergencyKilled)
203+
204+
!isAutoStartEnabled() -> flowOf(AutoStartEligibility.NotEligible.AutoStartDisabled)
205+
206+
isWithinAutoStartCooldown() ->
207+
flowOf(AutoStartEligibility.NotEligible.AutoStartCooldown)
208+
209+
else -> autoStartTypeFlow
210+
}
211+
}
212+
184213
private suspend fun processAutoStartEligibility(eligibility: AutoStartEligibility) {
185214
when (eligibility) {
186215
is AutoStartEligibility.Eligible -> autoStart(eligibility.type)
@@ -198,7 +227,9 @@ class SystemBridgeAutoStarter @Inject constructor(
198227

199228
AutoStartEligibility.NotEligible.WiFiDisconnected -> showWiFiDisconnectedNotification()
200229

201-
AutoStartEligibility.NotEligible.Other -> {}
230+
else -> {
231+
Timber.w("Not auto starting the system bridge: $eligibility")
232+
}
202233
}
203234
}
204235

0 commit comments

Comments
 (0)