From 29ae022931b1e3bb67fa750a830fcacb8b09b8ce Mon Sep 17 00:00:00 2001 From: Kevin Boulongne Date: Thu, 30 Jan 2025 13:06:49 +0100 Subject: [PATCH] refactor: Factorize Draft related ApiRepository functions --- .../infomaniak/mail/data/api/ApiRepository.kt | 33 +++++-------------- .../com/infomaniak/mail/ui/MainViewModel.kt | 4 +-- 2 files changed, 11 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/infomaniak/mail/data/api/ApiRepository.kt b/app/src/main/java/com/infomaniak/mail/data/api/ApiRepository.kt index 78af1c0bf8..67b7980262 100644 --- a/app/src/main/java/com/infomaniak/mail/data/api/ApiRepository.kt +++ b/app/src/main/java/com/infomaniak/mail/data/api/ApiRepository.kt @@ -58,7 +58,6 @@ import com.infomaniak.mail.data.models.thread.ThreadResult import com.infomaniak.mail.ui.newMessage.AiViewModel.Shortcut import com.infomaniak.mail.utils.Utils import io.realm.kotlin.ext.copyFromRealm -import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import okhttp3.MultipartBody import okhttp3.OkHttpClient @@ -170,37 +169,23 @@ object ApiRepository : ApiRepositoryCore() { } fun saveDraft(mailboxUuid: String, draft: Draft, okHttpClient: OkHttpClient): ApiResponse { - - val body = getDraftBody(draft) - - fun postDraft(): ApiResponse = callApi(ApiRoutes.draft(mailboxUuid), POST, body, okHttpClient) - - fun putDraft(uuid: String): ApiResponse = - callApi(ApiRoutes.draft(mailboxUuid, uuid), PUT, body, okHttpClient) - - return draft.remoteUuid?.let(::putDraft) ?: run(::postDraft) + return uploadDraft(mailboxUuid, draft, okHttpClient) } fun sendDraft(mailboxUuid: String, draft: Draft, okHttpClient: OkHttpClient): ApiResponse { - - val body = getDraftBody(draft) - - fun postDraft(): ApiResponse = callApi(ApiRoutes.draft(mailboxUuid), POST, body, okHttpClient) - - fun putDraft(uuid: String): ApiResponse = - callApi(ApiRoutes.draft(mailboxUuid, uuid), PUT, body, okHttpClient) - - return draft.remoteUuid?.let(::putDraft) ?: run(::postDraft) + return uploadDraft(mailboxUuid, draft, okHttpClient) } fun scheduleDraft(mailboxUuid: String, draft: Draft, okHttpClient: OkHttpClient): ApiResponse { + return uploadDraft(mailboxUuid, draft, okHttpClient) + } - val body = getDraftBody(draft) + private fun uploadDraft(mailboxUuid: String, draft: Draft, okHttpClient: OkHttpClient): ApiResponse { - fun postDraft(): ApiResponse = callApi(ApiRoutes.draft(mailboxUuid), POST, body, okHttpClient) + val body = getDraftBody(draft) - fun putDraft(uuid: String): ApiResponse = - callApi(ApiRoutes.draft(mailboxUuid, uuid), PUT, body, okHttpClient) + fun putDraft(uuid: String): ApiResponse = callApi(ApiRoutes.draft(mailboxUuid, uuid), PUT, body, okHttpClient) + fun postDraft(): ApiResponse = callApi(ApiRoutes.draft(mailboxUuid), POST, body, okHttpClient) return draft.remoteUuid?.let(::putDraft) ?: run(::postDraft) } @@ -252,7 +237,7 @@ object ApiRepository : ApiRepositoryCore() { return callApi(ApiRoutes.draft(mailboxUuid, remoteDraftUuid), DELETE) } - fun deleteScheduleDraft(scheduleAction: String): ApiResponse { + fun deleteScheduledDraft(scheduleAction: String): ApiResponse { return callApi(ApiRoutes.resource(scheduleAction), DELETE) } diff --git a/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt b/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt index f9ad1811d4..71d821ce73 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/MainViewModel.kt @@ -610,7 +610,7 @@ class MainViewModel @Inject constructor( fun deleteScheduleDraft(scheduleAction: String) = viewModelScope.launch(ioCoroutineContext) { val mailbox = currentMailbox.value!! - val apiResponse = ApiRepository.deleteScheduleDraft(scheduleAction) + val apiResponse = ApiRepository.deleteScheduledDraft(scheduleAction) if (apiResponse.isSuccess()) { val draftFolderId = folderController.getFolder(FolderRole.SCHEDULED_DRAFTS)!!.id @@ -662,7 +662,7 @@ class MainViewModel @Inject constructor( fun modifyDraft(scheduleAction: String, draftResource: String, onSuccess: () -> Unit) = viewModelScope.launch(ioCoroutineContext) { val mailbox = currentMailbox.value!! - val apiResponse = ApiRepository.deleteScheduleDraft(scheduleAction) + val apiResponse = ApiRepository.deleteScheduledDraft(scheduleAction) if (apiResponse.isSuccess()) { val draftFolderId = folderController.getFolder(FolderRole.SCHEDULED_DRAFTS)!!.id