@@ -7,8 +7,11 @@ enum class ApiEvent(val value: Int) {
|
||||
MESSAGE_EDIT(5),
|
||||
MESSAGE_READ_INCOMING(6),
|
||||
MESSAGE_READ_OUTGOING(7),
|
||||
CHAT_CLEAR_FLAGS(10),
|
||||
CHAT_SET_FLAGS(12),
|
||||
MESSAGES_DELETED(13),
|
||||
PIN_UNPIN_CONVERSATION(20),
|
||||
CHAT_MAJOR_CHANGED(20),
|
||||
CHAT_MINOR_CHANGED(21),
|
||||
TYPING(63),
|
||||
AUDIO_MESSAGE_RECORDING(64),
|
||||
PHOTO_UPLOADING(65),
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package dev.meloda.fast.model
|
||||
|
||||
enum class ConversationFlags(val value: Int) {
|
||||
DISABLE_PUSH(16),
|
||||
DISABLE_SOUND(32),
|
||||
INCOMING_CHAT_REQUEST(256),
|
||||
DECLINED_CHAT_REQUEST(512),
|
||||
MENTION(1024),
|
||||
HIDE_CHAT_FROM_SEARCH(2048),
|
||||
BUSINESS_CHAT(8192),
|
||||
MARKED_MESSAGE(16384), // mention or disappearing message
|
||||
DO_NOT_NOTIFY_MENTIONS_ALL_ONLINE(262144),
|
||||
DO_NOT_NOTIFY_ALL_MENTIONS(524288),
|
||||
MARKED_AS_UNREAD(1048576),
|
||||
ARCHIVED(8388608),
|
||||
CALL_IN_PROGRESS(16777216),
|
||||
}
|
||||
@@ -1,35 +1,27 @@
|
||||
package dev.meloda.fast.model
|
||||
|
||||
import dev.meloda.fast.model.api.domain.VkMessage
|
||||
|
||||
sealed interface LongPollEvent {
|
||||
|
||||
data class VkMessageNewEvent(val message: VkMessage) : LongPollEvent
|
||||
|
||||
data class VkMessageEditEvent(val message: VkMessage) : LongPollEvent
|
||||
|
||||
data class VkMessageReadIncomingEvent(
|
||||
val peerId: Int,
|
||||
val messageId: Int,
|
||||
val unreadCount: Int,
|
||||
) : LongPollEvent
|
||||
|
||||
data class VkMessageReadOutgoingEvent(
|
||||
val peerId: Int,
|
||||
val messageId: Int,
|
||||
val unreadCount: Int,
|
||||
) : LongPollEvent
|
||||
|
||||
data class VkConversationPinStateChangedEvent(
|
||||
val peerId: Int,
|
||||
val majorId: Int,
|
||||
) : LongPollEvent
|
||||
|
||||
data class Interaction(
|
||||
val interactionType: InteractionType,
|
||||
val peerId: Int,
|
||||
val userIds: List<Int>,
|
||||
val totalCount: Int,
|
||||
val timestamp: Int
|
||||
) : LongPollEvent
|
||||
enum class LongPollEvent {
|
||||
MESSAGE_SET_FLAGS,
|
||||
MESSAGE_CLEAR_FLAGS,
|
||||
MESSAGE_NEW,
|
||||
MESSAGE_EDITED,
|
||||
INCOMING_MESSAGE_READ,
|
||||
OUTGOING_MESSAGE_READ,
|
||||
CHAT_SET_FLAGS,
|
||||
CHAT_CLEAR_FLAGS,
|
||||
CHAT_MAJOR_CHANGED,
|
||||
CHAT_MINOR_CHANGED,
|
||||
TYPING,
|
||||
AUDIO_MESSAGE_RECORDING,
|
||||
PHOTO_UPLOADING,
|
||||
VIDEO_UPLOADING,
|
||||
FILE_UPLOADING,
|
||||
UNREAD_COUNTER_UPDATE,
|
||||
MARKED_AS_IMPORTANT,
|
||||
MARKED_AS_SPAM,
|
||||
MARKED_AS_NOT_SPAM,
|
||||
MESSAGE_DELETED,
|
||||
MESSAGE_RESTORED,
|
||||
AUDIO_MESSAGE_LISTENED,
|
||||
CHAT_CLEARED
|
||||
}
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
package dev.meloda.fast.model
|
||||
|
||||
import dev.meloda.fast.model.api.domain.VkMessage
|
||||
|
||||
sealed interface LongPollParsedEvent {
|
||||
|
||||
data class NewMessage(val message: VkMessage) : LongPollParsedEvent
|
||||
|
||||
data class MessageEdited(val message: VkMessage) : LongPollParsedEvent
|
||||
|
||||
data class IncomingMessageRead(
|
||||
val peerId: Int,
|
||||
val messageId: Int,
|
||||
val unreadCount: Int,
|
||||
) : LongPollParsedEvent
|
||||
|
||||
data class OutgoingMessageRead(
|
||||
val peerId: Int,
|
||||
val messageId: Int,
|
||||
val unreadCount: Int,
|
||||
) : LongPollParsedEvent
|
||||
|
||||
data class ChatMajorChanged(
|
||||
val peerId: Int,
|
||||
val majorId: Int,
|
||||
) : LongPollParsedEvent
|
||||
|
||||
data class ChatMinorChanged(
|
||||
val peerId: Int,
|
||||
val minorId: Int
|
||||
) : LongPollParsedEvent
|
||||
|
||||
data class Interaction(
|
||||
val interactionType: InteractionType,
|
||||
val peerId: Int,
|
||||
val userIds: List<Int>,
|
||||
val totalCount: Int,
|
||||
val timestamp: Int
|
||||
) : LongPollParsedEvent
|
||||
|
||||
data class UnreadCounter(
|
||||
val unread: Int,
|
||||
val unreadUnmuted: Int,
|
||||
val showOnlyMuted: Boolean,
|
||||
val business: Int,
|
||||
val archive: Int,
|
||||
val archiveUnmuted: Int,
|
||||
val archiveMentions: Int
|
||||
) : LongPollParsedEvent
|
||||
|
||||
data class MessageMarkedAsImportant(
|
||||
val peerId: Int,
|
||||
val messageId: Int,
|
||||
val marked: Boolean
|
||||
) : LongPollParsedEvent
|
||||
|
||||
data class MessageMarkedAsSpam(
|
||||
val peerId: Int,
|
||||
val messageId: Int
|
||||
) : LongPollParsedEvent
|
||||
|
||||
data class MessageMarkedAsNotSpam(
|
||||
val message: VkMessage
|
||||
) : LongPollParsedEvent
|
||||
|
||||
data class MessageDeleted(
|
||||
val peerId: Int,
|
||||
val messageId: Int,
|
||||
val forAll: Boolean
|
||||
) : LongPollParsedEvent
|
||||
|
||||
data class MessageRestored(
|
||||
val message: VkMessage
|
||||
) : LongPollParsedEvent
|
||||
|
||||
data class AudioMessageListened(
|
||||
val peerId: Int,
|
||||
val messageId: Int
|
||||
) : LongPollParsedEvent
|
||||
|
||||
data class ChatCleared(
|
||||
val peerId: Int,
|
||||
val toMessageId: Int
|
||||
): LongPollParsedEvent
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package dev.meloda.fast.model
|
||||
|
||||
enum class MessageFlags(val value: Int) {
|
||||
UNREAD(1),
|
||||
OUTGOING(2),
|
||||
IMPORTANT(8),
|
||||
SPAM(64),
|
||||
DELETED(128),
|
||||
AUDIO_LISTENED(4096),
|
||||
FROM_GROUP_CHAT(8192),
|
||||
CANCEL_SPAM(32768),
|
||||
DELETED_FOR_ALL(131072),
|
||||
DO_NOT_SHOW_NOTIFICATION(1048576),
|
||||
MESSAGE_WITH_REPLY(2097152),
|
||||
REACTION(16777216);
|
||||
|
||||
companion object {
|
||||
|
||||
fun parse(mask: Int): List<MessageFlags> {
|
||||
val flags = mutableListOf<MessageFlags>()
|
||||
|
||||
entries.forEach { flag ->
|
||||
if (mask and flag.value > 0) {
|
||||
flags.add(flag)
|
||||
}
|
||||
}
|
||||
|
||||
return flags
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user