fix(agent): install helpers off the main thread and offer sign-in only after the install

This commit is contained in:
Kurt Himebauch committed 2026-11-10 00:40:35 -05:00
1 parent 8ffac40b4f
commit 3f5e3bb19d
3 files changed
+4 -2

No files matched your search

+1
View File
@@ -10,3 +10,4 @@ tools/mangoapp/mangoapp text eol=lf
app/src/main/assets/desktop-removal/*.json text eol=lf
app/src/main/assets/desktop-removal/*.txt text eol=lf
*.pdf binary
app/src/main/assets/agent/* text eol=lf
@@ -63,7 +63,6 @@ object AgentSetup {
val command = when (step) {
Step.CONNECTION -> return
Step.INSTALL -> {
installHelpers(app)
listOf("sh", "-c", "set -e; export DEBIAN_FRONTEND=noninteractive; " +
"apt-get install -y --no-install-recommends git gh adb curl ca-certificates python3; ${harness.install}")
}
@@ -76,6 +75,7 @@ object AgentSetup {
detail.remove(step)
Thread({
val result = runCatching {
if (step == Step.INSTALL) installHelpers(app)
val child = AgentHost.guest(app, command).start()
child.outputStream.close()
child.inputStream.bufferedReader().forEachLine { line ->
@@ -61,7 +61,8 @@ internal fun AgentSetupView(modifier: Modifier, onDone: () -> Unit = {}) {
},
title, detail, divider = index < steps.lastIndex,
) {
if (status == Status.TODO || status == Status.FAILED) {
val blocked = step == Step.SIGN_IN && AgentSetup.status[Step.INSTALL] != Status.DONE
if ((status == Status.TODO || status == Status.FAILED) && !blocked) {
val label = stringResource(if (status == Status.FAILED) R.string.agent_setup_retry else action(step))
val run = { if (step == Step.CONNECTION) pair(context) else AgentSetup.run(context, step) }
if (step.required) PrimaryButton(label, compact = true, onClick = run) else SecondaryButton(label, compact = true, onClick = run)