From f3071e79e6789e19d32bd9be5fa7aecbe64e95b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joris=20Pelgr=C3=B6m?= Date: Tue, 30 Jan 2024 19:43:49 +0100 Subject: [PATCH] Wear Assist: show login when logged out, scroll first item into view (#4174) - Update Assist on Wear to automatically open the login screen when logged out, instead of asking the user to close and login, to prevent text being cut off issues - Add another item at the top of Assist on Wear to allow the pipeline selector to be scrolled into the center of the screen (the first item cannot be scrolled into the center of the screen) --- .../companion/android/conversation/ConversationActivity.kt | 4 ++++ .../companion/android/conversation/ConversationViewModel.kt | 2 ++ .../companion/android/conversation/views/ConversationView.kt | 5 ++++- 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/wear/src/main/java/io/homeassistant/companion/android/conversation/ConversationActivity.kt b/wear/src/main/java/io/homeassistant/companion/android/conversation/ConversationActivity.kt index 6b5898ad0ec..b84943f12b3 100755 --- a/wear/src/main/java/io/homeassistant/companion/android/conversation/ConversationActivity.kt +++ b/wear/src/main/java/io/homeassistant/companion/android/conversation/ConversationActivity.kt @@ -17,6 +17,7 @@ import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import androidx.lifecycle.lifecycleScope import dagger.hilt.android.AndroidEntryPoint import io.homeassistant.companion.android.conversation.views.LoadAssistView +import io.homeassistant.companion.android.home.HomeActivity import kotlinx.coroutines.launch @AndroidEntryPoint @@ -53,6 +54,9 @@ class ConversationActivity : ComponentActivity() { val launchIntent = conversationViewModel.onCreate(hasRecordingPermission()) if (launchIntent) { launchVoiceInputIntent() + } else if (!conversationViewModel.isRegistered()) { + startActivity(HomeActivity.newInstance(this@ConversationActivity)) + finish() } } diff --git a/wear/src/main/java/io/homeassistant/companion/android/conversation/ConversationViewModel.kt b/wear/src/main/java/io/homeassistant/companion/android/conversation/ConversationViewModel.kt index 46e6812c222..ba3dc57b497 100755 --- a/wear/src/main/java/io/homeassistant/companion/android/conversation/ConversationViewModel.kt +++ b/wear/src/main/java/io/homeassistant/companion/android/conversation/ConversationViewModel.kt @@ -129,6 +129,8 @@ class ConversationViewModel @Inject constructor( return false } + fun isRegistered(): Boolean = serverManager.isRegistered() + override fun getInput(): AssistInputMode = inputMode override fun setInput(inputMode: AssistInputMode) { diff --git a/wear/src/main/java/io/homeassistant/companion/android/conversation/views/ConversationView.kt b/wear/src/main/java/io/homeassistant/companion/android/conversation/views/ConversationView.kt index 82123693199..fc1e83c6a30 100755 --- a/wear/src/main/java/io/homeassistant/companion/android/conversation/views/ConversationView.kt +++ b/wear/src/main/java/io/homeassistant/companion/android/conversation/views/ConversationView.kt @@ -121,7 +121,7 @@ fun ConversationResultView( val scrollState = rememberScalingLazyListState() LaunchedEffect(conversation.size) { scrollState.scrollToItem( - if (inputMode != AssistViewModelBase.AssistInputMode.BLOCKED) conversation.size else (conversation.size - 1) + if (inputMode != AssistViewModelBase.AssistInputMode.BLOCKED) (conversation.size + 1) else conversation.size ) } if (hapticFeedback) { @@ -135,6 +135,9 @@ fun ConversationResultView( } ThemeLazyColumn(state = scrollState) { + item { + Spacer(Modifier.size(1.dp)) // This exists to allow the next item to be centered + } item { if (currentPipeline != null) { val textColor = LocalContentColor.current.copy(alpha = 0.38f) // disabled/hint alpha