Skip to content

Commit 4537a66

Browse files
committed
fix layout update
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent 82c15de commit 4537a66

5 files changed

Lines changed: 39 additions & 13 deletions

File tree

app/src/main/java/com/nextcloud/client/assistant/AssistantScreen.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -384,13 +384,11 @@ private fun TaskContent(
384384
items(taskList, key = { it.id }) { task ->
385385
TaskView(
386386
task,
387+
viewModel,
387388
capability,
388389
showTaskActions = {
389390
val newState = ScreenOverlayState.TaskActions(task)
390391
viewModel.updateScreenOverlayState(newState)
391-
},
392-
showTranslateScreen = {
393-
viewModel.updateScreenState(AssistantScreenState.Translation(it))
394392
}
395393
)
396394
Spacer(modifier = Modifier.height(8.dp))
@@ -485,7 +483,7 @@ private fun getMockConversationViewModel(): ConversationViewModel {
485483
)
486484
}
487485

488-
private fun getMockAssistantViewModel(giveEmptyTasks: Boolean): AssistantViewModel {
486+
fun getMockAssistantViewModel(giveEmptyTasks: Boolean): AssistantViewModel {
489487
val mockLocalRepository = MockAssistantLocalRepository()
490488
val mockRemoteRepository = MockAssistantRemoteRepository(giveEmptyTasks)
491489
return AssistantViewModel(

app/src/main/java/com/nextcloud/client/assistant/AssistantViewModel.kt

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ class AssistantViewModel(
6363
private val _snackbarMessageId = MutableStateFlow<Int?>(null)
6464
val snackbarMessageId: StateFlow<Int?> = _snackbarMessageId
6565

66+
private val _selectedTask = MutableStateFlow<Task?>(null)
67+
val selectedTask: StateFlow<Task?> = _selectedTask
68+
6669
private val _selectedTaskType = MutableStateFlow<TaskTypeData?>(null)
6770
val selectedTaskType: StateFlow<TaskTypeData?> = _selectedTaskType
6871

@@ -168,14 +171,18 @@ class AssistantViewModel(
168171
private fun observeScreenState() {
169172
viewModelScope.launch {
170173
combine(
174+
_selectedTask,
171175
_selectedTaskType,
172176
_chatMessages,
173177
_filteredTaskList
174-
) { selectedTask, chats, tasks ->
175-
val isChat = selectedTask?.isChat() == true
178+
) { selectedTask, selectedTaskType, chats, tasks ->
179+
val isChat = selectedTaskType?.isChat() == true
180+
val isTranslation =
181+
selectedTaskType?.isTranslate() == true && selectedTask?.type == "core:text2text:translate"
176182

177183
when {
178-
selectedTask == null -> AssistantScreenState.Loading
184+
selectedTaskType == null -> AssistantScreenState.Loading
185+
isTranslation -> AssistantScreenState.Translation(selectedTask)
179186
isChat && chats.isEmpty() -> AssistantScreenState.emptyChatList()
180187
isChat -> AssistantScreenState.ChatContent
181188
!isChat && (tasks == null || tasks.isEmpty()) -> AssistantScreenState.emptyTaskList()
@@ -362,6 +369,12 @@ class AssistantViewModel(
362369
}
363370
}
364371

372+
fun selectTask(task: Task) {
373+
_selectedTask.update {
374+
task
375+
}
376+
}
377+
365378
fun updateSnackbarMessage(value: Int?) {
366379
_snackbarMessageId.update {
367380
value

app/src/main/java/com/nextcloud/client/assistant/task/TaskView.kt

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ import androidx.compose.ui.text.style.TextAlign
3838
import androidx.compose.ui.tooling.preview.Preview
3939
import androidx.compose.ui.unit.dp
4040
import androidx.compose.ui.unit.sp
41+
import com.nextcloud.client.assistant.AssistantViewModel
42+
import com.nextcloud.client.assistant.getMockAssistantViewModel
43+
import com.nextcloud.client.assistant.model.AssistantScreenState
4144
import com.nextcloud.client.assistant.taskDetail.TaskDetailBottomSheet
4245
import com.nextcloud.utils.extensions.truncateWithEllipsis
4346
import com.owncloud.android.R
@@ -48,7 +51,7 @@ import com.owncloud.android.lib.resources.status.OCCapability
4851

4952
@Suppress("LongMethod", "MagicNumber")
5053
@Composable
51-
fun TaskView(task: Task, capability: OCCapability, showTaskActions: () -> Unit, showTranslateScreen: (Task) -> Unit) {
54+
fun TaskView(task: Task, viewModel: AssistantViewModel, capability: OCCapability, showTaskActions: () -> Unit) {
5255
var showTaskDetailBottomSheet by remember { mutableStateOf(false) }
5356

5457
Box {
@@ -58,8 +61,10 @@ fun TaskView(task: Task, capability: OCCapability, showTaskActions: () -> Unit,
5861
.clip(RoundedCornerShape(8.dp))
5962
.background(color = colorResource(R.color.task_container))
6063
.clickable {
64+
viewModel.selectTask(task)
65+
6166
if (task.type == "core:text2text:translate") {
62-
showTranslateScreen(task)
67+
viewModel.updateScreenState(AssistantScreenState.Translation(task))
6368
} else {
6469
showTaskDetailBottomSheet = true
6570
}
@@ -145,12 +150,11 @@ private fun TaskViewPreview() {
145150
1707692337,
146151
1707692337
147152
),
153+
viewModel = getMockAssistantViewModel(true),
148154
OCCapability().apply {
149155
versionMayor = 30
150156
},
151157
showTaskActions = {
152-
},
153-
showTranslateScreen = {
154158
}
155159
)
156160
}

app/src/main/java/com/nextcloud/client/assistant/translate/TranslationScreen.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import androidx.compose.foundation.layout.fillMaxSize
1515
import androidx.compose.foundation.layout.fillMaxWidth
1616
import androidx.compose.foundation.layout.heightIn
1717
import androidx.compose.foundation.layout.padding
18+
import androidx.compose.foundation.layout.size
1819
import androidx.compose.foundation.layout.width
1920
import androidx.compose.foundation.lazy.LazyColumn
2021
import androidx.compose.material3.DropdownMenu
@@ -33,6 +34,7 @@ import androidx.compose.runtime.getValue
3334
import androidx.compose.runtime.mutableStateOf
3435
import androidx.compose.runtime.remember
3536
import androidx.compose.runtime.setValue
37+
import androidx.compose.ui.Alignment
3638
import androidx.compose.ui.Modifier
3739
import androidx.compose.ui.graphics.Color
3840
import androidx.compose.ui.res.painterResource
@@ -127,7 +129,8 @@ private fun TranslationSection(
127129
Row(
128130
modifier = Modifier
129131
.padding(16.dp)
130-
.clickable { onStateChange(state.copy(isExpanded = !state.isExpanded)) }
132+
.clickable { onStateChange(state.copy(isExpanded = !state.isExpanded)) },
133+
verticalAlignment = Alignment.CenterVertically
131134
) {
132135
Text(
133136
text = stringResource(labelId),
@@ -139,6 +142,14 @@ private fun TranslationSection(
139142
text = state.language?.name ?: "",
140143
style = MaterialTheme.typography.labelLarge
141144
)
145+
Icon(
146+
painter = painterResource(R.drawable.ic_baseline_arrow_drop_down_24),
147+
contentDescription = "dropdown icon",
148+
modifier = Modifier
149+
.padding(start = 4.dp)
150+
.size(16.dp),
151+
tint = MaterialTheme.colorScheme.onSurfaceVariant
152+
)
142153

143154
DropdownMenu(
144155
expanded = state.isExpanded,

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
<string name="assistant_screen_select_task">Please select task</string>
7474

7575
<!-- Translation Screen -->
76-
<string name="translation_screen_label_from">Source language: </string>
76+
<string name="translation_screen_label_from">Translate from: </string>
7777
<string name="translation_screen_label_to">Translate to: </string>
7878
<string name="translation_screen_hint_source">Enter text to translate…</string>
7979
<string name="translation_screen_hint_target">Translation will appear here…</string>

0 commit comments

Comments
 (0)