Skip to content

Commit d46e2e6

Browse files
authored
ADFA-2309: attach WADB connection logic to the activity instead of fragment (#809)
* fix: move WADB connection state management higher up the lifecycle * fix: add checks to prevent double-start in WADB connection handler * fix: add API level checks before starting WADB connection handler * fix: infinite loop in ShizukuStarterOutput * docs; update docs WADB connection handler * refactor: reformat * fix: remove unintended changes to assets/* * fix: ensure WADBConnectionViewModel receives ADB_PAIRING_STARTED broadcast * fix: avoid double binder listener registration Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
1 parent 7151f83 commit d46e2e6

9 files changed

Lines changed: 1246 additions & 1104 deletions

File tree

‎app/src/main/java/com/itsaky/androidide/actions/build/DebugAction.kt‎

Lines changed: 30 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -18,20 +18,17 @@ import androidx.core.view.setPadding
1818
import com.google.android.material.textview.MaterialTextView
1919
import com.itsaky.androidide.actions.ActionData
2020
import com.itsaky.androidide.activities.editor.HelpActivity
21-
import com.itsaky.androidide.projects.IProjectManager
22-
import com.itsaky.androidide.projects.isPluginProject
2321
import com.itsaky.androidide.idetooltips.TooltipTag
2422
import com.itsaky.androidide.lsp.java.debug.JdwpOptions
23+
import com.itsaky.androidide.projects.IProjectManager
24+
import com.itsaky.androidide.projects.isPluginProject
2525
import com.itsaky.androidide.resources.R
2626
import com.itsaky.androidide.utils.DialogUtils
27-
import com.itsaky.androidide.utils.PermissionsHelper
2827
import com.itsaky.androidide.utils.appendHtmlWithLinks
2928
import com.itsaky.androidide.utils.appendOrderedList
3029
import com.itsaky.androidide.utils.flashError
3130
import com.itsaky.androidide.utils.isAtLeastR
3231
import com.itsaky.androidide.utils.isAtLeastS
33-
import com.itsaky.androidide.utils.isAtLeastT
34-
import com.itsaky.androidide.viewmodel.WADBViewModel
3532
import kotlinx.coroutines.Dispatchers
3633
import kotlinx.coroutines.withContext
3734
import moe.shizuku.manager.adb.AdbPairingService
@@ -47,11 +44,12 @@ class DebugAction(
4744
context: Context,
4845
override val order: Int,
4946
) : AbstractRunAction(
50-
context = context,
51-
labelRes = R.string.action_start_debugger,
52-
iconRes = R.drawable.ic_db_startdebugger,
53-
) {
47+
context = context,
48+
labelRes = R.string.action_start_debugger,
49+
iconRes = R.drawable.ic_db_startdebugger,
50+
) {
5451
override val id = ID
52+
5553
override fun retrieveTooltipTag(isReadOnlyContext: Boolean) = TooltipTag.EDITOR_TOOLBAR_DEBUG
5654

5755
companion object {
@@ -92,9 +90,7 @@ class DebugAction(
9290
if (!Shizuku.pingBinder()) {
9391
log.error("Shizuku service is not running")
9492
withContext(Dispatchers.Main.immediate) {
95-
showPairingDialog(activity) {
96-
activity.wadbViewModel.setPairingState(WADBViewModel.PairingState.Pairing)
97-
}
93+
showPairingDialog(activity)
9894
}
9995
return false
10096
}
@@ -103,17 +99,19 @@ class DebugAction(
10399
}
104100

105101
@RequiresApi(Build.VERSION_CODES.R)
106-
private fun showPairingDialog(context: Context, onStarted: () -> Unit): AlertDialog? {
102+
private fun showPairingDialog(context: Context): AlertDialog? {
107103
val launchHelp = { url: String ->
108-
context.startActivity(Intent(context, HelpActivity::class.java).apply {
109-
putExtra(CONTENT_KEY, url)
110-
})
104+
context.startActivity(
105+
Intent(context, HelpActivity::class.java).apply {
106+
putExtra(CONTENT_KEY, url)
107+
},
108+
)
111109
}
112110

113111
val ssb = SpannableStringBuilder()
114112
ssb.appendHtmlWithLinks(
115113
context.getString(R.string.debugger_setup_description_header),
116-
launchHelp
114+
launchHelp,
117115
)
118116

119117
ssb.append(System.lineSeparator())
@@ -124,7 +122,7 @@ class DebugAction(
124122

125123
ssb.appendHtmlWithLinks(
126124
context.getString(R.string.debugger_setup_description_footer),
127-
launchHelp
125+
launchHelp,
128126
)
129127

130128
val text = MaterialTextView(context)
@@ -134,7 +132,8 @@ class DebugAction(
134132
text.text = ssb
135133
text.setLineSpacing(text.lineSpacingExtra, 1.1f)
136134

137-
return DialogUtils.newMaterialDialogBuilder(context)
135+
return DialogUtils
136+
.newMaterialDialogBuilder(context)
138137
.setTitle(R.string.debugger_setup_title)
139138
.setView(text)
140139
.setPositiveButton(R.string.adb_pairing_action_start) { dialog, _ ->
@@ -146,13 +145,11 @@ class DebugAction(
146145
try {
147146
if (startPairingService(context)) {
148147
context.startActivity(intent)
149-
onStarted()
150148
}
151149
} catch (e: ActivityNotFoundException) {
152150
log.error("Failed to open developer options", e)
153151
}
154-
}
155-
.setNegativeButton(android.R.string.cancel, null)
152+
}.setNegativeButton(android.R.string.cancel, null)
156153
.show()
157154
}
158155

@@ -182,7 +179,9 @@ class DebugAction(
182179

183180
context.startService(intent)
184181
true
185-
} else false
182+
} else {
183+
false
184+
}
186185
}
187186
}
188187

@@ -191,19 +190,19 @@ class DebugAction(
191190
val nm = context.getSystemService(NotificationManager::class.java)
192191
val channel = nm.getNotificationChannel(AdbPairingService.NOTIFICATION_CHANNEL)
193192
return nm.areNotificationsEnabled() &&
194-
(channel == null || channel.importance != NotificationManager.IMPORTANCE_NONE)
193+
(channel == null || channel.importance != NotificationManager.IMPORTANCE_NONE)
195194
}
196195

197196
private fun showNotificationPermissionDialog(context: Context): AlertDialog? =
198-
DialogUtils.newMaterialDialogBuilder(context)
197+
DialogUtils
198+
.newMaterialDialogBuilder(context)
199199
.setTitle(R.string.adb_pairing_action_enable_notifications)
200200
.setMessage(
201201
context.getString(
202202
R.string.adb_pairing_tutorial_content_notification,
203-
context.getString(R.string.notification_channel_adb_pairing)
204-
)
205-
)
206-
.setPositiveButton(R.string.title_grant) { dialog, _ ->
203+
context.getString(R.string.notification_channel_adb_pairing),
204+
),
205+
).setPositiveButton(R.string.title_grant) { dialog, _ ->
207206
val intent = Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS)
208207
intent.putExtra(Settings.EXTRA_APP_PACKAGE, context.packageName)
209208
try {
@@ -213,9 +212,7 @@ class DebugAction(
213212
}
214213

215214
dialog.dismiss()
216-
}
217-
.setNegativeButton(android.R.string.cancel) { dialog, _ ->
215+
}.setNegativeButton(android.R.string.cancel) { dialog, _ ->
218216
dialog.dismiss()
219-
}
220-
.show()
217+
}.show()
221218
}

0 commit comments

Comments
 (0)