Skip to content

Commit dd2b09a

Browse files
committed
fix ux
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent d216afd commit dd2b09a

3 files changed

Lines changed: 47 additions & 14 deletions

File tree

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

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,23 @@ sealed class TranslationScreenState(
2121
open val targetHintMessageId: Int?
2222
)
2323

24+
data object Uninitialized : TranslationScreenState(
25+
taskTypeData = TaskTypeData(null, "", null, mapOf(), mapOf()),
26+
source = TranslationSideState(
27+
text = "",
28+
language = null,
29+
isTarget = false
30+
),
31+
target = TranslationSideState(
32+
text = "",
33+
language = null,
34+
isTarget = true
35+
),
36+
fabVisibility = false,
37+
shimmer = false,
38+
targetHintMessageId = null
39+
)
40+
2441
data class NewTranslation(
2542
override val taskTypeData: TaskTypeData,
2643
override val source: TranslationSideState,
@@ -117,6 +134,9 @@ fun TranslationScreenState.withShimmer(shimmer: Boolean): TranslationScreenState
117134
is NewTranslation -> copy(shimmer = shimmer)
118135
is ExistingTranslation -> copy(shimmer = shimmer)
119136
is EditedTranslation -> copy(shimmer = shimmer)
137+
Uninitialized -> {
138+
Uninitialized
139+
}
120140
}
121141

122142
fun TranslationScreenState.withTargetText(text: String): TranslationScreenState = when (this) {
@@ -126,12 +146,18 @@ fun TranslationScreenState.withTargetText(text: String): TranslationScreenState
126146
target = target.copy(text = text),
127147
shimmer = shimmer
128148
)
149+
129150
is ExistingTranslation -> copy(
130151
target = target.copy(text = text)
131152
)
153+
132154
is EditedTranslation -> copy(
133155
target = target.copy(text = text)
134156
)
157+
158+
Uninitialized -> {
159+
Uninitialized
160+
}
135161
}
136162

137163
fun TranslationScreenState.withSource(newSource: TranslationSideState): TranslationScreenState = when (this) {
@@ -142,18 +168,27 @@ fun TranslationScreenState.withSource(newSource: TranslationSideState): Translat
142168
target = target,
143169
shimmer = shimmer
144170
)
171+
145172
is EditedTranslation -> copy(source = newSource)
173+
Uninitialized -> {
174+
Uninitialized
175+
}
146176
}
147177

148178
fun TranslationScreenState.withTarget(newTarget: TranslationSideState): TranslationScreenState = when (this) {
149179
is NewTranslation -> {
150180
copy(target = newTarget)
151181
}
182+
152183
is ExistingTranslation -> EditedTranslation(
153184
taskTypeData = taskTypeData,
154185
source = source,
155186
target = newTarget,
156187
shimmer = shimmer
157188
)
189+
158190
is EditedTranslation -> copy(target = newTarget)
191+
Uninitialized -> {
192+
Uninitialized
193+
}
159194
}

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

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ class TranslationViewModel(private val remoteRepository: AssistantRemoteReposito
3131
private const val MAX_RETRY = 3
3232
}
3333

34-
private lateinit var _screenState: MutableStateFlow<TranslationScreenState>
34+
private var _screenState =
35+
MutableStateFlow<TranslationScreenState>(Uninitialized)
3536
val screenState: StateFlow<TranslationScreenState>
3637
get() = _screenState
3738

@@ -53,10 +54,6 @@ class TranslationViewModel(private val remoteRepository: AssistantRemoteReposito
5354
} else {
5455
val translatedText = task.output?.output ?: ""
5556
this.translatedText = translatedText
56-
57-
viewModelScope.launch {
58-
pollTranslationResult()
59-
}
6057
MutableStateFlow(ExistingTranslation.create(taskTypeData, textToTranslate, translatedText))
6158
}
6259
}
@@ -70,17 +67,12 @@ class TranslationViewModel(private val remoteRepository: AssistantRemoteReposito
7067

7168
val model = taskTypeData.toTranslationModel()
7269

73-
if (model == null) {
74-
updateSnackbarMessage(R.string.translation_screen_error_message)
75-
return@launch
76-
}
77-
7870
val input = TranslationRequest(
7971
input = textToTranslate,
8072
originLanguage = originLanguage.code,
8173
targetLanguage = targetLanguage.code,
82-
maxTokens = model.maxTokens,
83-
model = model.model
74+
maxTokens = 0.0,
75+
model = model?.model ?: ""
8476
)
8577

8678
val result = remoteRepository.translate(input, taskTypeData)
@@ -92,13 +84,20 @@ class TranslationViewModel(private val remoteRepository: AssistantRemoteReposito
9284
}
9385
}
9486

87+
@Suppress("ReturnCount")
9588
private suspend fun pollTranslationResult() {
89+
val screenStateValue = _screenState.value
90+
if (screenStateValue is Uninitialized) {
91+
return
92+
}
93+
9694
val taskTypeId = taskTypeData.id ?: return
95+
val input = screenStateValue.source.text
9796

9897
repeat(MAX_RETRY) { attempt ->
9998
val translationTasks = remoteRepository.getTaskList(taskTypeId)
10099
val translationResult = translationTasks
101-
?.find { it.id == task?.id }
100+
?.find { it.input?.input == input }
102101
?.output
103102
?.output
104103

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@
8787
<string name="translation_screen_translating">Translating…</string>
8888
<string name="translation_screen_start_to_translate_task">Press the button to translate</string>
8989
<string name="translation_screen_hint_source">Enter text to translate…</string>
90-
<string name="translation_screen_error_message">Translation model not exists.</string>
9190
<string name="translation_screen_task_processing">Translation is taking longer than expected.</string>
9291

9392
<!-- Conversation Screen -->

0 commit comments

Comments
 (0)