feat: implement onboarding flow and improve ADB error handling - #541
feat: implement onboarding flow and improve ADB error handling#541rteyssandier wants to merge 6 commits into
Conversation
snappdevelopment
left a comment
There was a problem hiding this comment.
Very cool feature! The new UI looks really nice. I left some comments, because I got stuck a couple times.
| @@ -102,7 +121,19 @@ class SettingsViewModel( | |||
|
|
|||
| fun saveAdbPath() { | |||
There was a problem hiding this comment.
To test this, I changed my adb path to an invalid one. I got the red error message in on the settings screen and also in the top app bar. Then I chose my valid path again and clicked the "save" button, but the errors didn't disappear. Only when I clicked on the "test" button, they disappeared.
| shape = FloconTheme.shapes.large, | ||
| modifier = Modifier | ||
| .fillMaxWidth() | ||
| .animateContentSize(animationSpec = tween(durationMillis = 300)) |
There was a problem hiding this comment.
The content animates up and down vertically. While it looks pretty nice, it also moves the buttons up and down which is a bit inconvenient. I wonder if it makes more sense to keep it at a fixed height and instead make the content scrollable. Then it wouldn't move around that much.
| containerColor = Color.Transparent | ||
| ) { | ||
| Text( | ||
| text = "Close", |
There was a problem hiding this comment.
The close button doesn't work for me. Nothing happens 🤔
It also took me a while to see this button tbh. Maybe it can be more prominent and say "Skip Onboarding" or "Close Onboarding"?
| if (detected && _currentStep.value == OnboardingStep.LaunchApp) { | ||
| goToStep(OnboardingStep.Success) | ||
| } |
There was a problem hiding this comment.
When I got to step 3 my app was already running. I got stuck at that step, because this flow doesn't emit again when the step changes. I think we need to combine the appsState and currentStep flows here to not get stuck.
| for (i in 5 downTo 1) { | ||
| _successCountdown.value = i | ||
| delay(1000) | ||
| } |
There was a problem hiding this comment.
I got stuck here in step 4. The countdown went down to 1, but then nothing happened. I can't see why though.
Maybe it is the same issue as with the "Close" button. Maybe navigationState.menu(NetworkRoutes.Main) doesn't work?
| @@ -54,20 +60,31 @@ class MessagesServerDelegate( | |||
| } | |||
There was a problem hiding this comment.
Reseting the the error when the scope gets cancelled might be a good idea. With something like this:
launch {
try {
awaitCancellation()
} finally {
_serverError.value = null
}
}
Introduces a centralized LogManager to track application events, exposed through a new "Logs" tab in the Settings screen. Additionally, updates the Settings UI to use a side-drawer layout and improves ADB process feedback by logging success and error states.
Reverts the navigation3 library to the stable 1.1.1 release to resolve compatibility or stability issues encountered with the alpha version.
Introduces an `AdbForwardStatus` to track the health of reverse port forwarding in the `SettingsRepository`. Updates the Settings UI to display the current connection status and refines log entries with timestamps for better debugging.
Refactor the appearance settings to use a card-based layout and update the theme selector with improved visual feedback, including hover states and descriptive icons for each theme option.
Introduce an initial onboarding wizard to guide users through ADB and SDK configuration. Add system-wide ADB health monitoring, including a new error state in the top bar to alert users of connection issues and provide direct access to the configuration settings.
5ed0c6f to
ccba237
Compare
The dedicated logs pane is removed to streamline the settings interface. The About section is refactored to allow for direct access to the onboarding flow.
Introduce an initial onboarding wizard to guide users through ADB and SDK configuration. Add system-wide ADB health monitoring, including a new error state in the top bar to alert users of connection issues and provide direct access to the configuration settings.