mirror of
https://github.com/nextcloud/talk-android
synced 2025-07-07 12:59:55 +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.security.MessageDigest
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
|
// TODO remove all Json tags, map ChatMessageJson to this
|
||||||
|
|
||||||
@Parcelize
|
@Parcelize
|
||||||
@JsonObject
|
@JsonObject
|
||||||
data class ChatMessage(
|
data class ChatMessage(
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.nextcloud.talk.models.json.converters
|
package com.nextcloud.talk.models.json.converters
|
||||||
|
|
||||||
|
import androidx.room.TypeConverter
|
||||||
import com.bluelinelabs.logansquare.typeconverters.StringBasedTypeConverter
|
import com.bluelinelabs.logansquare.typeconverters.StringBasedTypeConverter
|
||||||
import com.nextcloud.talk.models.json.chat.ChatMessage
|
import com.nextcloud.talk.models.json.chat.ChatMessage
|
||||||
import com.nextcloud.talk.models.json.chat.ChatMessage.SystemMessageType.AUDIO_RECORDING_STARTED
|
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>() {
|
class EnumSystemMessageTypeConverter : StringBasedTypeConverter<ChatMessage.SystemMessageType>() {
|
||||||
|
@TypeConverter
|
||||||
override fun getFromString(string: String): ChatMessage.SystemMessageType {
|
override fun getFromString(string: String): ChatMessage.SystemMessageType {
|
||||||
return when (string) {
|
return when (string) {
|
||||||
"conversation_created" -> CONVERSATION_CREATED
|
"conversation_created" -> CONVERSATION_CREATED
|
||||||
@ -141,6 +143,7 @@ class EnumSystemMessageTypeConverter : StringBasedTypeConverter<ChatMessage.Syst
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Suppress("Detekt.ComplexMethod")
|
@Suppress("Detekt.ComplexMethod")
|
||||||
|
@TypeConverter
|
||||||
override fun convertToString(`object`: ChatMessage.SystemMessageType?): String {
|
override fun convertToString(`object`: ChatMessage.SystemMessageType?): String {
|
||||||
return when (`object`) {
|
return when (`object`) {
|
||||||
null -> ""
|
null -> ""
|
||||||
|
Loading…
Reference in New Issue
Block a user