a shit ton features, improvements and fixes in messages history screen and others

This commit is contained in:
2025-03-29 02:51:49 +03:00
parent da9644cde1
commit f02822a011
35 changed files with 1341 additions and 476 deletions
@@ -46,8 +46,8 @@ inline fun <T> State<T>.processState(
) {
when (this) {
is State.Error -> {
error(this)
any()
error(this)
}
State.Idle -> idle()
@@ -55,8 +55,8 @@ inline fun <T> State<T>.processState(
State.Loading -> loading()
is State.Success -> {
success(data)
any()
success(data)
}
}
}
@@ -56,15 +56,22 @@ interface MessagesRepository {
peerId: Int
): ApiResult<Int, RestApiErrorDomain>
suspend fun storeMessages(messages: List<VkMessage>)
suspend fun markAsImportant(
peerId: Int,
messageIds: List<Int>?,
conversationMessageIds: List<Int>?,
important: Boolean
): ApiResult<List<Int>, RestApiErrorDomain>
// suspend fun markAsImportant(
// params: MessagesMarkAsImportantRequest
// ): ApiResult<List<Int>, RestApiErrorDomain>
//
// suspend fun delete(
// params: MessagesDeleteRequest
// ): ApiResult<Unit, RestApiErrorDomain>
suspend fun delete(
peerId: Int,
messageIds: List<Int>?,
conversationMessageIds: List<Int>?,
spam: Boolean,
deleteForAll: Boolean
): ApiResult<List<Any>, RestApiErrorDomain>
suspend fun storeMessages(messages: List<VkMessage>)
//
// suspend fun edit(
// params: MessagesEditRequest
@@ -16,13 +16,15 @@ import dev.meloda.fast.model.api.domain.VkAttachmentHistoryMessage
import dev.meloda.fast.model.api.domain.VkMessage
import dev.meloda.fast.model.api.domain.asEntity
import dev.meloda.fast.model.api.requests.MessagesCreateChatRequest
import dev.meloda.fast.model.api.requests.MessagesDeleteRequest
import dev.meloda.fast.model.api.requests.MessagesGetByIdRequest
import dev.meloda.fast.model.api.requests.MessagesGetHistoryAttachmentsRequest
import dev.meloda.fast.model.api.requests.MessagesGetHistoryRequest
import dev.meloda.fast.model.api.requests.MessagesMarkAsImportantRequest
import dev.meloda.fast.model.api.requests.MessagesMarkAsReadRequest
import dev.meloda.fast.model.api.requests.MessagesPinMessageRequest
import dev.meloda.fast.model.api.requests.MessagesSendRequest
import dev.meloda.fast.model.api.requests.MessagesUnPinMessageRequest
import dev.meloda.fast.model.api.requests.MessagesUnpinMessageRequest
import dev.meloda.fast.network.RestApiErrorDomain
import dev.meloda.fast.network.mapApiDefault
import dev.meloda.fast.network.mapApiResult
@@ -240,10 +242,40 @@ class MessagesRepositoryImpl(
override suspend fun unpin(
peerId: Int
): ApiResult<Int, RestApiErrorDomain> = withContext(Dispatchers.IO) {
val requestModel = MessagesUnPinMessageRequest(peerId = peerId)
val requestModel = MessagesUnpinMessageRequest(peerId = peerId)
messagesService.unpin(requestModel.map).mapApiDefault()
}
override suspend fun markAsImportant(
peerId: Int,
messageIds: List<Int>?,
conversationMessageIds: List<Int>?,
important: Boolean
): ApiResult<List<Int>, RestApiErrorDomain> = withContext(Dispatchers.IO) {
val requestModel = MessagesMarkAsImportantRequest(
messagesIds = messageIds.orEmpty(),
important = important
)
messagesService.markAsImportant(requestModel.map).mapApiDefault()
}
override suspend fun delete(
peerId: Int,
messageIds: List<Int>?,
conversationMessageIds: List<Int>?,
spam: Boolean,
deleteForAll: Boolean
): ApiResult<List<Any>, RestApiErrorDomain> = withContext(Dispatchers.IO) {
val requestModel = MessagesDeleteRequest(
peerId = peerId,
messagesIds = messageIds,
conversationsMessagesIds = conversationMessageIds,
isSpam = spam,
deleteForAll = deleteForAll
)
messagesService.delete(requestModel.map).mapApiDefault()
}
override suspend fun storeMessages(messages: List<VkMessage>) {
messageDao.insertAll(messages.map(VkMessage::asEntity))
}