* refactor Conversation -> Convo

* extract Message and Convo mappers to core/domain module
* improve reply container text
This commit is contained in:
2025-12-17 17:16:02 +03:00
parent 7b6571f208
commit 45ee0acea5
125 changed files with 2361 additions and 2005 deletions
@@ -16,7 +16,7 @@ import dev.meloda.fast.network.interceptor.VersionInterceptor
import dev.meloda.fast.network.service.account.AccountService
import dev.meloda.fast.network.service.audios.AudiosService
import dev.meloda.fast.network.service.auth.AuthService
import dev.meloda.fast.network.service.conversations.ConversationsService
import dev.meloda.fast.network.service.convos.ConvosService
import dev.meloda.fast.network.service.files.FilesService
import dev.meloda.fast.network.service.friends.FriendsService
import dev.meloda.fast.network.service.longpoll.LongPollService
@@ -80,7 +80,7 @@ val networkModule = module {
single { service(AccountService::class.java) }
single { service(AudiosService::class.java) }
single { service(ConversationsService::class.java) }
single { service(ConvosService::class.java) }
single { service(FilesService::class.java) }
single { service(LongPollService::class.java) }
single { service(MessagesService::class.java) }
@@ -1,61 +1,61 @@
package dev.meloda.fast.network.service.conversations
package dev.meloda.fast.network.service.convos
import com.slack.eithernet.ApiResult
import dev.meloda.fast.model.api.responses.ConversationsDeleteResponse
import dev.meloda.fast.model.api.responses.ConversationsGetByIdResponse
import dev.meloda.fast.model.api.responses.ConversationsGetResponse
import dev.meloda.fast.model.api.responses.ConvosDeleteResponse
import dev.meloda.fast.model.api.responses.ConvosGetByIdResponse
import dev.meloda.fast.model.api.responses.ConvosGetResponse
import dev.meloda.fast.network.ApiResponse
import dev.meloda.fast.network.RestApiError
import retrofit2.http.FieldMap
import retrofit2.http.FormUrlEncoded
import retrofit2.http.POST
interface ConversationsService {
interface ConvosService {
@FormUrlEncoded
@POST(ConversationsUrls.GET)
suspend fun getConversations(
@POST(ConvosUrls.GET)
suspend fun getConvos(
@FieldMap params: Map<String, String>
): ApiResult<ApiResponse<ConversationsGetResponse>, RestApiError>
): ApiResult<ApiResponse<ConvosGetResponse>, RestApiError>
@FormUrlEncoded
@POST(ConversationsUrls.GET_BY_ID)
suspend fun getConversationsById(
@POST(ConvosUrls.GET_BY_ID)
suspend fun getConvosById(
@FieldMap params: Map<String, String>
): ApiResult<ApiResponse<ConversationsGetByIdResponse>, RestApiError>
): ApiResult<ApiResponse<ConvosGetByIdResponse>, RestApiError>
@FormUrlEncoded
@POST(ConversationsUrls.DELETE)
@POST(ConvosUrls.DELETE)
suspend fun delete(
@FieldMap params: Map<String, String>
): ApiResult<ApiResponse<ConversationsDeleteResponse>, RestApiError>
): ApiResult<ApiResponse<ConvosDeleteResponse>, RestApiError>
@FormUrlEncoded
@POST(ConversationsUrls.PIN)
@POST(ConvosUrls.PIN)
suspend fun pin(
@FieldMap params: Map<String, String>
): ApiResult<ApiResponse<Int>, RestApiError>
@FormUrlEncoded
@POST(ConversationsUrls.UNPIN)
@POST(ConvosUrls.UNPIN)
suspend fun unpin(
@FieldMap params: Map<String, String>
): ApiResult<ApiResponse<Int>, RestApiError>
@FormUrlEncoded
@POST(ConversationsUrls.REORDER_PINNED)
@POST(ConvosUrls.REORDER_PINNED)
suspend fun reorderPinned(
@FieldMap params: Map<String, String>
): ApiResult<ApiResponse<Int>, RestApiError>
@FormUrlEncoded
@POST(ConversationsUrls.ARCHIVE)
@POST(ConvosUrls.ARCHIVE)
suspend fun archive(
@FieldMap params: Map<String, String>
): ApiResult<ApiResponse<Int>, RestApiError>
@FormUrlEncoded
@POST(ConversationsUrls.UNARCHIVE)
@POST(ConvosUrls.UNARCHIVE)
suspend fun unarchive(
@FieldMap params: Map<String, String>
): ApiResult<ApiResponse<Int>, RestApiError>
@@ -1,8 +1,8 @@
package dev.meloda.fast.network.service.conversations
package dev.meloda.fast.network.service.convos
import dev.meloda.fast.common.AppConstants
object ConversationsUrls {
object ConvosUrls {
private const val URL = AppConstants.URL_API
@@ -6,7 +6,7 @@ import dev.meloda.fast.model.api.data.VkLongPollData
import dev.meloda.fast.model.api.data.VkMessageData
import dev.meloda.fast.model.api.responses.MessagesCreateChatResponse
import dev.meloda.fast.model.api.responses.MessagesGetByIdResponse
import dev.meloda.fast.model.api.responses.MessagesGetConversationMembersResponse
import dev.meloda.fast.model.api.responses.MessagesGetConvoMembersResponse
import dev.meloda.fast.model.api.responses.MessagesGetHistoryAttachmentsResponse
import dev.meloda.fast.model.api.responses.MessagesGetHistoryResponse
import dev.meloda.fast.model.api.responses.MessagesGetReadPeersResponse
@@ -99,10 +99,10 @@ interface MessagesService {
): ApiResult<ApiResponse<VkChatData>, RestApiError>
@FormUrlEncoded
@POST(MessagesUrls.GET_CONVERSATIONS_MEMBERS)
suspend fun getConversationMembers(
@POST(MessagesUrls.GET_CONVOS_MEMBERS)
suspend fun getConvoMembers(
@FieldMap params: Map<String, String>
): ApiResult<ApiResponse<MessagesGetConversationMembersResponse>, RestApiError>
): ApiResult<ApiResponse<MessagesGetConvoMembersResponse>, RestApiError>
@FormUrlEncoded
@POST(MessagesUrls.REMOVE_CHAT_USER)
@@ -18,7 +18,7 @@ object MessagesUrls {
const val GET_BY_ID = "$URL/messages.getById"
const val MARK_AS_READ = "$URL/messages.markAsRead"
const val GET_CHAT = "$URL/messages.getChat"
const val GET_CONVERSATIONS_MEMBERS = "$URL/messages.getConversationMembers"
const val GET_CONVOS_MEMBERS = "$URL/messages.getConversationMembers"
const val REMOVE_CHAT_USER = "$URL/messages.removeChatUser"
const val GET_HISTORY_ATTACHMENTS = "$URL/messages.getHistoryAttachments"
const val CREATE_CHAT = "$URL/messages.createChat"