mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-07 21:09:46 +01:00
WIP Set up
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
This commit is contained in:
parent
5242f9cd2b
commit
68681b50de
@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Nextcloud Talk - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2024 Julius Linus <juliuslinus1@gmail.com>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package com.nextcloud.talk.chat.data.database
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Query
|
||||
import com.nextcloud.talk.chat.data.model.ChatMessageEntity
|
||||
|
||||
@Dao
|
||||
abstract class ChatDao {
|
||||
@Query(
|
||||
"SELECT * FROM Messages WHERE token = :roomToken"
|
||||
)
|
||||
abstract fun pullChatMessages(roomToken: String): List<ChatMessageEntity>
|
||||
}
|
@ -0,0 +1,85 @@
|
||||
/*
|
||||
* Nextcloud Talk - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2024 Julius Linus <juliuslinus1@gmail.com>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package com.nextcloud.talk.chat.data.model
|
||||
|
||||
import android.os.Parcelable
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.TypeConverters
|
||||
import com.nextcloud.talk.data.source.local.converters.HashMapHashMapConverter
|
||||
import com.nextcloud.talk.models.json.chat.ChatMessage
|
||||
import com.nextcloud.talk.models.json.converters.EnumSystemMessageTypeConverter
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
@Parcelize
|
||||
@Entity(tableName = "Messages", primaryKeys = ["id"])
|
||||
@TypeConverters(EnumSystemMessageTypeConverter::class, HashMapHashMapConverter::class)
|
||||
data class ChatMessageEntity(
|
||||
@ColumnInfo(name = "id")
|
||||
var jsonMessageId: Int = 0,
|
||||
|
||||
@ColumnInfo(name = "token")
|
||||
var token: String? = null,
|
||||
|
||||
// guests or users
|
||||
@ColumnInfo(name = "actorType")
|
||||
var actorType: String? = null,
|
||||
|
||||
@ColumnInfo(name = "actorId")
|
||||
var actorId: String? = null,
|
||||
|
||||
// send when crafting a message
|
||||
@ColumnInfo(name = "actorDisplayName")
|
||||
var actorDisplayName: String? = null,
|
||||
|
||||
@ColumnInfo(name = "timestamp")
|
||||
var timestamp: Long = 0,
|
||||
|
||||
// send when crafting a message, max 1000 lines
|
||||
@ColumnInfo(name = "message")
|
||||
var message: String? = null,
|
||||
|
||||
@ColumnInfo(name = "messageParameters")
|
||||
var messageParameters: HashMap<String?, HashMap<String?, String?>>? = null,
|
||||
|
||||
@ColumnInfo(name = "systemMessage")
|
||||
var systemMessageType: ChatMessage.SystemMessageType? = null,
|
||||
|
||||
@ColumnInfo(name = "isReplyable")
|
||||
var replyable: Boolean = false,
|
||||
|
||||
@ColumnInfo(name = "parent")
|
||||
var parentMessage: ChatMessage? = null,
|
||||
|
||||
@ColumnInfo(name = "messageType")
|
||||
var messageType: String? = null,
|
||||
|
||||
@ColumnInfo(name = "reactions")
|
||||
var reactions: LinkedHashMap<String, Int>? = null,
|
||||
|
||||
@ColumnInfo(name = "reactionsSelf")
|
||||
var reactionsSelf: ArrayList<String>? = null,
|
||||
|
||||
@ColumnInfo(name = "expirationTimestamp")
|
||||
var expirationTimestamp: Int = 0,
|
||||
|
||||
@ColumnInfo(name = "markdown")
|
||||
var renderMarkdown: Boolean? = null,
|
||||
|
||||
@ColumnInfo(name = "lastEditActorDisplayName")
|
||||
var lastEditActorDisplayName: String? = null,
|
||||
|
||||
@ColumnInfo(name = "lastEditActorId")
|
||||
var lastEditActorId: String? = null,
|
||||
|
||||
@ColumnInfo(name = "lastEditActorType")
|
||||
var lastEditActorType: String? = null,
|
||||
|
||||
@ColumnInfo(name = "lastEditTimestamp")
|
||||
var lastEditTimestamp: Long = 0
|
||||
) : Parcelable
|
@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Nextcloud Talk - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2024 Julius Linus <juliuslinus1@gmail.com>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package com.nextcloud.talk.chat.data.model
|
||||
|
||||
import android.os.Parcelable
|
||||
import com.bluelinelabs.logansquare.annotation.JsonField
|
||||
import com.bluelinelabs.logansquare.annotation.JsonObject
|
||||
import com.nextcloud.talk.models.json.chat.ChatMessage
|
||||
import com.nextcloud.talk.models.json.converters.EnumSystemMessageTypeConverter
|
||||
import kotlinx.parcelize.Parcelize
|
||||
|
||||
// TODO map it to ChatMessage
|
||||
@Parcelize
|
||||
@JsonObject
|
||||
data class ChatMessageJson(
|
||||
@JsonField(name = ["id"])
|
||||
var jsonMessageId: Int = 0,
|
||||
|
||||
@JsonField(name = ["token"])
|
||||
var token: String? = null,
|
||||
|
||||
// guests or users
|
||||
@JsonField(name = ["actorType"])
|
||||
var actorType: String? = null,
|
||||
|
||||
@JsonField(name = ["actorId"])
|
||||
var actorId: String? = null,
|
||||
|
||||
// send when crafting a message
|
||||
@JsonField(name = ["actorDisplayName"])
|
||||
var actorDisplayName: String? = null,
|
||||
|
||||
@JsonField(name = ["timestamp"])
|
||||
var timestamp: Long = 0,
|
||||
|
||||
// send when crafting a message, max 1000 lines
|
||||
@JsonField(name = ["message"])
|
||||
var message: String? = null,
|
||||
|
||||
@JsonField(name = ["messageParameters"])
|
||||
var messageParameters: HashMap<String?, HashMap<String?, String?>>? = null,
|
||||
|
||||
@JsonField(name = ["systemMessage"], typeConverter = EnumSystemMessageTypeConverter::class)
|
||||
var systemMessageType: ChatMessage.SystemMessageType? = null,
|
||||
|
||||
@JsonField(name = ["isReplyable"])
|
||||
var replyable: Boolean = false,
|
||||
|
||||
@JsonField(name = ["parent"])
|
||||
var parentMessage: ChatMessage? = null,
|
||||
|
||||
@JsonField(name = ["messageType"])
|
||||
var messageType: String? = null,
|
||||
|
||||
@JsonField(name = ["reactions"])
|
||||
var reactions: LinkedHashMap<String, Int>? = null,
|
||||
|
||||
@JsonField(name = ["reactionsSelf"])
|
||||
var reactionsSelf: ArrayList<String>? = null,
|
||||
|
||||
@JsonField(name = ["expirationTimestamp"])
|
||||
var expirationTimestamp: Int = 0,
|
||||
|
||||
@JsonField(name = ["markdown"])
|
||||
var renderMarkdown: Boolean? = null,
|
||||
|
||||
@JsonField(name = ["lastEditActorDisplayName"])
|
||||
var lastEditActorDisplayName: String? = null,
|
||||
|
||||
@JsonField(name = ["lastEditActorId"])
|
||||
var lastEditActorId: String? = null,
|
||||
|
||||
@JsonField(name = ["lastEditActorType"])
|
||||
var lastEditActorType: String? = null,
|
||||
|
||||
@JsonField(name = ["lastEditTimestamp"])
|
||||
var lastEditTimestamp: Long = 0
|
||||
) : Parcelable
|
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* Nextcloud Talk - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2024 Your Name <your@email.com>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package com.nextcloud.talk.chat.data.utils
|
||||
|
||||
class ChatMessageEntityMapper {
|
||||
|
||||
// TODO
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
/*
|
||||
* Nextcloud Talk - Android Client
|
||||
*
|
||||
* SPDX-FileCopyrightText: 2024 Your Name <your@email.com>
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package com.nextcloud.talk.chat.data.utils
|
||||
|
||||
class ChatMessageJsonMapper {
|
||||
|
||||
// TODO
|
||||
}
|
@ -28,6 +28,8 @@ import kotlinx.parcelize.Parcelize
|
||||
import java.security.MessageDigest
|
||||
import java.util.Date
|
||||
|
||||
// TODO remove all Json tags, map ChatMessageJson to this
|
||||
|
||||
@Parcelize
|
||||
@JsonObject
|
||||
data class ChatMessage(
|
||||
|
@ -8,6 +8,7 @@
|
||||
*/
|
||||
package com.nextcloud.talk.models.json.converters
|
||||
|
||||
import androidx.room.TypeConverter
|
||||
import com.bluelinelabs.logansquare.typeconverters.StringBasedTypeConverter
|
||||
import com.nextcloud.talk.models.json.chat.ChatMessage
|
||||
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.AUDIO_RECORDING_STARTED
|
||||
@ -75,6 +76,7 @@ import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.USER_RE
|
||||
*
|
||||
*/
|
||||
class EnumSystemMessageTypeConverter : StringBasedTypeConverter<ChatMessage.SystemMessageType>() {
|
||||
@TypeConverter
|
||||
override fun getFromString(string: String): ChatMessage.SystemMessageType {
|
||||
return when (string) {
|
||||
"conversation_created" -> CONVERSATION_CREATED
|
||||
@ -141,6 +143,7 @@ class EnumSystemMessageTypeConverter : StringBasedTypeConverter<ChatMessage.Syst
|
||||
}
|
||||
|
||||
@Suppress("Detekt.ComplexMethod")
|
||||
@TypeConverter
|
||||
override fun convertToString(`object`: ChatMessage.SystemMessageType?): String {
|
||||
return when (`object`) {
|
||||
null -> ""
|
||||
|
Loading…
Reference in New Issue
Block a user