Improve detection of completion for Link new device flow

The SDK emits a Done progress once complete, but our listener might have been deallocated before receiving the done.
This commit is contained in:
Hugh Nimmo-Smith 2026-04-28 15:19:03 +01:00
parent 997227b020
commit 723b7486bc
3 changed files with 5 additions and 4 deletions

View file

@ -145,10 +145,7 @@ class LinkNewDeviceFlowNode(
LinkMobileStep.Starting -> {
// This step is not received at the moment, so do nothing
}
LinkMobileStep.SyncingSecrets -> {
// LinkMobileStep.Done is not received at the moment, so consider that the flow is done here
callback.onDone()
}
LinkMobileStep.SyncingSecrets -> Unit
is LinkMobileStep.WaitingForAuth -> {
navigateToBrowser(linkMobileStep.verificationUri)
}

View file

@ -54,6 +54,8 @@ class RustLinkDesktopHandler(
}
}
)
// We emit Done in case the progress listener was deallocated before scan() sent the Done
_linkDesktopStep.emit(LinkDesktopStep.Done)
} catch (e: QrCodeDecodeException) {
Timber.tag(tag.value).w(e, "Invalid QR code scanned")
_linkDesktopStep.emit(

View file

@ -49,6 +49,8 @@ class RustLinkMobileHandler(
}
}
)
// We emit Done in case the progress listener was deallocated before generate() sent the Done
_linkMobileStep.emit(LinkMobileStep.Done)
} catch (e: HumanQrGrantLoginException) {
Timber.tag(tag.value).w(e, "Error during QR login grant")
_linkMobileStep.emit(LinkMobileStep.Error(e.map()))