@@ -41,10 +41,8 @@ import androidx.compose.runtime.DisposableEffect
4141import androidx.compose.runtime.LaunchedEffect
4242import androidx.compose.runtime.collectAsState
4343import androidx.compose.runtime.getValue
44- import androidx.compose.runtime.mutableStateOf
4544import androidx.compose.runtime.remember
4645import androidx.compose.runtime.rememberCoroutineScope
47- import androidx.compose.runtime.setValue
4846import androidx.compose.ui.Alignment
4947import androidx.compose.ui.Modifier
5048import androidx.compose.ui.graphics.ColorFilter
@@ -60,8 +58,8 @@ import com.nextcloud.client.assistant.conversation.ConversationScreen
6058import com.nextcloud.client.assistant.conversation.ConversationViewModel
6159import com.nextcloud.client.assistant.conversation.repository.MockConversationRemoteRepository
6260import com.nextcloud.client.assistant.extensions.getInputTitle
63- import com.nextcloud.client.assistant.model.AssistantScreenState
6461import com.nextcloud.client.assistant.model.AssistantPage
62+ import com.nextcloud.client.assistant.model.AssistantScreenState
6563import com.nextcloud.client.assistant.model.ScreenOverlayState
6664import com.nextcloud.client.assistant.repository.local.MockAssistantLocalRepository
6765import com.nextcloud.client.assistant.repository.remote.MockAssistantRemoteRepository
@@ -76,7 +74,6 @@ import com.owncloud.android.R
7674import com.owncloud.android.lib.resources.assistant.v2.model.Task
7775import com.owncloud.android.lib.resources.assistant.v2.model.TaskTypeData
7876import com.owncloud.android.lib.resources.status.OCCapability
79- import com.owncloud.android.utils.ClipboardUtil
8077import kotlinx.coroutines.delay
8178import kotlinx.coroutines.launch
8279
@@ -115,17 +112,18 @@ fun AssistantScreen(
115112 }
116113
117114 LaunchedEffect (selectedText) {
118- if (selectedText.isNullOrEmpty()) {
119- return @LaunchedEffect
120- }
121-
122- if (pagerState.currentPage == AssistantPage .Conversation .id) {
123- pagerState.scrollToPage(AssistantPage .Content .id)
124- }
115+ selectedText?.let {
116+ if (it.isBlank()) {
117+ return @LaunchedEffect
118+ }
125119
126- ClipboardUtil .copyToClipboard(activity, selectedText, false )
120+ if (pagerState.currentPage == AssistantPage .Conversation .id) {
121+ pagerState.scrollToPage(AssistantPage .Content .id)
122+ }
127123
128- snackbarHostState.showSnackbar(activity.getString(R .string.assistant_screen_text_selected))
124+ viewModel.updateInputBarText(it)
125+ snackbarHostState.showSnackbar(activity.getString(R .string.assistant_screen_text_selected))
126+ }
129127 }
130128
131129 LaunchedEffect (sessionId) {
@@ -193,7 +191,7 @@ fun AssistantScreen(
193191 },
194192 bottomBar = {
195193 if (! taskTypes.isNullOrEmpty()) {
196- ChatInputBar (
194+ InputBar (
197195 sessionId,
198196 selectedTaskType,
199197 viewModel
@@ -253,9 +251,9 @@ fun AssistantScreen(
253251
254252@Suppress(" LongMethod" )
255253@Composable
256- private fun ChatInputBar (sessionId : Long? , selectedTaskType : TaskTypeData ? , viewModel : AssistantViewModel ) {
254+ private fun InputBar (sessionId : Long? , selectedTaskType : TaskTypeData ? , viewModel : AssistantViewModel ) {
257255 val scope = rememberCoroutineScope()
258- var text by remember { mutableStateOf( " " ) }
256+ val text by viewModel.inputBarText.collectAsState()
259257
260258 Surface (
261259 tonalElevation = 3 .dp,
@@ -284,7 +282,7 @@ private fun ChatInputBar(sessionId: Long?, selectedTaskType: TaskTypeData?, view
284282 ) {
285283 OutlinedTextField (
286284 value = text,
287- onValueChange = { text = it },
285+ onValueChange = { viewModel.updateInputBarText(it) },
288286 modifier = Modifier
289287 .weight(1f )
290288 .padding(end = 8 .dp),
@@ -311,7 +309,7 @@ private fun ChatInputBar(sessionId: Long?, selectedTaskType: TaskTypeData?, view
311309
312310 scope.launch {
313311 delay(CHAT_INPUT_DELAY )
314- text = " "
312+ viewModel.updateInputBarText( " " )
315313 }
316314 }
317315 ) {
0 commit comments