Skip to content

Commit 1530ed3

Browse files
committed
add translation logic
Signed-off-by: alperozturk96 <alper_ozturk@proton.me>
1 parent dbb9234 commit 1530ed3

4 files changed

Lines changed: 42 additions & 21 deletions

File tree

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

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import com.nextcloud.client.assistant.repository.remote.AssistantRemoteRepositor
1616
import com.nextcloud.utils.TimeConstants.MILLIS_PER_SECOND
1717
import com.nextcloud.utils.extensions.isHuman
1818
import com.owncloud.android.R
19+
import com.owncloud.android.lib.common.operations.RemoteOperationResult
1920
import com.owncloud.android.lib.common.utils.Log_OC
2021
import com.owncloud.android.lib.resources.assistant.chat.model.ChatMessage
2122
import com.owncloud.android.lib.resources.assistant.chat.model.ChatMessageRequest
@@ -188,32 +189,35 @@ class AssistantViewModel(
188189
}
189190

190191
fun translate(textToTranslate: String, originLanguage: TranslationLanguage, targetLanguage: TranslationLanguage) {
191-
val task = _selectedTaskType.value
192-
if (task == null) {
193-
_snackbarMessageId.update {
194-
R.string.assistant_screen_select_task
192+
viewModelScope.launch(Dispatchers.IO) {
193+
val task = _selectedTaskType.value
194+
if (task == null) {
195+
_snackbarMessageId.update {
196+
R.string.assistant_screen_select_task
197+
}
198+
return@launch
195199
}
196-
return
197-
}
198200

199-
val model = task.toTranslationModel()
201+
val model = task.toTranslationModel()
200202

201-
if (model == null) {
202-
_snackbarMessageId.update {
203-
R.string.translation_screen_error_message
203+
if (model == null) {
204+
_snackbarMessageId.update {
205+
R.string.translation_screen_error_message
206+
}
207+
return@launch
204208
}
205-
return
206-
}
207209

208-
val input = TranslationRequest(
209-
input = textToTranslate,
210-
originLanguage = originLanguage.code,
211-
targetLanguage = targetLanguage.code,
212-
maxTokens = model.maxTokens,
213-
model = model.model
214-
).toJson()
210+
val input = TranslationRequest(
211+
input = textToTranslate,
212+
originLanguage = originLanguage.code,
213+
targetLanguage = targetLanguage.code,
214+
maxTokens = model.maxTokens,
215+
model = model.model
216+
)
215217

216-
createTask(input, task)
218+
val result = remoteRepository.translate(input, task)
219+
handleTaskCreation(result)
220+
}
217221
}
218222

219223
// region chat
@@ -261,6 +265,10 @@ class AssistantViewModel(
261265
// region task
262266
fun createTask(input: String, taskType: TaskTypeData) = viewModelScope.launch(Dispatchers.IO) {
263267
val result = remoteRepository.createTask(input, taskType)
268+
handleTaskCreation(result)
269+
}
270+
271+
private suspend fun handleTaskCreation(result: RemoteOperationResult<*>) {
264272
val message = if (result.isSuccess) {
265273
R.string.assistant_screen_task_create_success_message
266274
} else {

app/src/main/java/com/nextcloud/client/assistant/repository/remote/AssistantRemoteRepository.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.owncloud.android.lib.resources.assistant.chat.model.Session
1515
import com.owncloud.android.lib.resources.assistant.chat.model.SessionTask
1616
import com.owncloud.android.lib.resources.assistant.v2.model.Task
1717
import com.owncloud.android.lib.resources.assistant.v2.model.TaskTypeData
18+
import com.owncloud.android.lib.resources.assistant.v2.model.TranslationRequest
1819

1920
interface AssistantRemoteRepository {
2021
suspend fun getTaskTypes(): List<TaskTypeData>?
@@ -36,4 +37,6 @@ interface AssistantRemoteRepository {
3637
suspend fun generateSession(sessionId: String): SessionTask?
3738

3839
suspend fun checkGeneration(taskId: String, sessionId: String): ChatMessage?
40+
41+
suspend fun translate(input: TranslationRequest, taskType: TaskTypeData): RemoteOperationResult<Void>
3942
}

app/src/main/java/com/nextcloud/client/assistant/repository/remote/AssistantRemoteRepositoryImpl.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,13 @@ import com.owncloud.android.lib.resources.assistant.v1.GetTaskListRemoteOperatio
2727
import com.owncloud.android.lib.resources.assistant.v1.GetTaskTypesRemoteOperationV1
2828
import com.owncloud.android.lib.resources.assistant.v1.model.toV2
2929
import com.owncloud.android.lib.resources.assistant.v2.CreateTaskRemoteOperationV2
30+
import com.owncloud.android.lib.resources.assistant.v2.CreateTranslationTaskRemoteOperation
3031
import com.owncloud.android.lib.resources.assistant.v2.DeleteTaskRemoteOperationV2
3132
import com.owncloud.android.lib.resources.assistant.v2.GetTaskListRemoteOperationV2
3233
import com.owncloud.android.lib.resources.assistant.v2.GetTaskTypesRemoteOperationV2
3334
import com.owncloud.android.lib.resources.assistant.v2.model.Task
3435
import com.owncloud.android.lib.resources.assistant.v2.model.TaskTypeData
36+
import com.owncloud.android.lib.resources.assistant.v2.model.TranslationRequest
3537
import com.owncloud.android.lib.resources.status.NextcloudVersion
3638
import com.owncloud.android.lib.resources.status.OCCapability
3739
import kotlinx.coroutines.Dispatchers
@@ -124,4 +126,9 @@ class AssistantRemoteRepositoryImpl(private val client: NextcloudClient, capabil
124126
val result = CheckGenerationRemoteOperation(taskId, sessionId).execute(client)
125127
if (result.isSuccess) result.resultData else null
126128
}
129+
130+
override suspend fun translate(input: TranslationRequest, taskType: TaskTypeData): RemoteOperationResult<Void> =
131+
withContext(Dispatchers.IO) {
132+
CreateTranslationTaskRemoteOperation(input, taskType).execute(client)
133+
}
127134
}

app/src/main/java/com/nextcloud/client/assistant/repository/remote/MockAssistantRemoteRepository.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import com.owncloud.android.lib.resources.assistant.v2.model.Task
1818
import com.owncloud.android.lib.resources.assistant.v2.model.TaskInput
1919
import com.owncloud.android.lib.resources.assistant.v2.model.TaskOutput
2020
import com.owncloud.android.lib.resources.assistant.v2.model.TaskTypeData
21+
import com.owncloud.android.lib.resources.assistant.v2.model.TranslationRequest
2122

2223
@Suppress("MagicNumber")
2324
class MockAssistantRemoteRepository(private val giveEmptyTasks: Boolean = false) : AssistantRemoteRepository {
@@ -68,12 +69,14 @@ class MockAssistantRemoteRepository(private val giveEmptyTasks: Boolean = false)
6869
}
6970

7071
override suspend fun deleteTask(id: Long): RemoteOperationResult<Void> =
71-
RemoteOperationResult<Void>(RemoteOperationResult.ResultCode.OK)
72+
RemoteOperationResult(RemoteOperationResult.ResultCode.OK)
7273
override suspend fun fetchChatMessages(id: Long): List<ChatMessage> = emptyList()
7374
override suspend fun sendChatMessage(request: ChatMessageRequest): ChatMessage? = null
7475
override suspend fun createConversation(title: String): CreateConversation? = null
7576
override suspend fun checkSession(sessionId: String): Session? = null
7677
override suspend fun generateSession(sessionId: String): SessionTask? = null
7778

7879
override suspend fun checkGeneration(taskId: String, sessionId: String): ChatMessage? = null
80+
override suspend fun translate(input: TranslationRequest, taskType: TaskTypeData): RemoteOperationResult<Void> =
81+
RemoteOperationResult(RemoteOperationResult.ResultCode.OK)
7982
}

0 commit comments

Comments
 (0)