mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 03:29:28 +01:00
save "silent" in chat messages (incl DB)
Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
parent
3fdaa4bdcd
commit
f665b1c116
@ -2,7 +2,7 @@
|
|||||||
"formatVersion": 1,
|
"formatVersion": 1,
|
||||||
"database": {
|
"database": {
|
||||||
"version": 13,
|
"version": 13,
|
||||||
"identityHash": "ec1e16b220080592a488165e493b4f89",
|
"identityHash": "a521f027909f69f4c7d1855f84a2e67f",
|
||||||
"entities": [
|
"entities": [
|
||||||
{
|
{
|
||||||
"tableName": "User",
|
"tableName": "User",
|
||||||
@ -450,7 +450,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"tableName": "ChatMessages",
|
"tableName": "ChatMessages",
|
||||||
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`internalId` TEXT NOT NULL, `accountId` INTEGER NOT NULL, `token` TEXT NOT NULL, `id` INTEGER NOT NULL, `internalConversationId` TEXT NOT NULL, `actorDisplayName` TEXT NOT NULL, `message` TEXT NOT NULL, `actorId` TEXT NOT NULL, `actorType` TEXT NOT NULL, `deleted` INTEGER NOT NULL, `expirationTimestamp` INTEGER NOT NULL, `isReplyable` INTEGER NOT NULL, `lastEditActorDisplayName` TEXT, `lastEditActorId` TEXT, `lastEditActorType` TEXT, `lastEditTimestamp` INTEGER, `markdown` INTEGER, `messageParameters` TEXT, `messageType` TEXT NOT NULL, `parent` INTEGER, `reactions` TEXT, `reactionsSelf` TEXT, `referenceId` TEXT, `systemMessage` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, `isTemporary` INTEGER NOT NULL, `sendingFailed` INTEGER NOT NULL, PRIMARY KEY(`internalId`), FOREIGN KEY(`internalConversationId`) REFERENCES `Conversations`(`internalId`) ON UPDATE CASCADE ON DELETE CASCADE )",
|
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`internalId` TEXT NOT NULL, `accountId` INTEGER NOT NULL, `token` TEXT NOT NULL, `id` INTEGER NOT NULL, `internalConversationId` TEXT NOT NULL, `actorDisplayName` TEXT NOT NULL, `message` TEXT NOT NULL, `actorId` TEXT NOT NULL, `actorType` TEXT NOT NULL, `deleted` INTEGER NOT NULL, `expirationTimestamp` INTEGER NOT NULL, `isReplyable` INTEGER NOT NULL, `isTemporary` INTEGER NOT NULL, `lastEditActorDisplayName` TEXT, `lastEditActorId` TEXT, `lastEditActorType` TEXT, `lastEditTimestamp` INTEGER, `markdown` INTEGER, `messageParameters` TEXT, `messageType` TEXT NOT NULL, `parent` INTEGER, `reactions` TEXT, `reactionsSelf` TEXT, `referenceId` TEXT, `sendingFailed` INTEGER NOT NULL, `silent` INTEGER NOT NULL, `systemMessage` TEXT NOT NULL, `timestamp` INTEGER NOT NULL, PRIMARY KEY(`internalId`), FOREIGN KEY(`internalConversationId`) REFERENCES `Conversations`(`internalId`) ON UPDATE CASCADE ON DELETE CASCADE )",
|
||||||
"fields": [
|
"fields": [
|
||||||
{
|
{
|
||||||
"fieldPath": "internalId",
|
"fieldPath": "internalId",
|
||||||
@ -524,6 +524,12 @@
|
|||||||
"affinity": "INTEGER",
|
"affinity": "INTEGER",
|
||||||
"notNull": true
|
"notNull": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "isTemporary",
|
||||||
|
"columnName": "isTemporary",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"fieldPath": "lastEditActorDisplayName",
|
"fieldPath": "lastEditActorDisplayName",
|
||||||
"columnName": "lastEditActorDisplayName",
|
"columnName": "lastEditActorDisplayName",
|
||||||
@ -590,6 +596,18 @@
|
|||||||
"affinity": "TEXT",
|
"affinity": "TEXT",
|
||||||
"notNull": false
|
"notNull": false
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "sendingFailed",
|
||||||
|
"columnName": "sendingFailed",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"fieldPath": "silent",
|
||||||
|
"columnName": "silent",
|
||||||
|
"affinity": "INTEGER",
|
||||||
|
"notNull": true
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"fieldPath": "systemMessageType",
|
"fieldPath": "systemMessageType",
|
||||||
"columnName": "systemMessage",
|
"columnName": "systemMessage",
|
||||||
@ -601,18 +619,6 @@
|
|||||||
"columnName": "timestamp",
|
"columnName": "timestamp",
|
||||||
"affinity": "INTEGER",
|
"affinity": "INTEGER",
|
||||||
"notNull": true
|
"notNull": true
|
||||||
},
|
|
||||||
{
|
|
||||||
"fieldPath": "isTemporary",
|
|
||||||
"columnName": "isTemporary",
|
|
||||||
"affinity": "INTEGER",
|
|
||||||
"notNull": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"fieldPath": "sendingFailed",
|
|
||||||
"columnName": "sendingFailed",
|
|
||||||
"affinity": "INTEGER",
|
|
||||||
"notNull": true
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"primaryKey": {
|
"primaryKey": {
|
||||||
@ -737,7 +743,7 @@
|
|||||||
"views": [],
|
"views": [],
|
||||||
"setupQueries": [
|
"setupQueries": [
|
||||||
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
|
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
|
||||||
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'ec1e16b220080592a488165e493b4f89')"
|
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, 'a521f027909f69f4c7d1855f84a2e67f')"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -105,6 +105,7 @@ interface ChatMessageRepository : LifecycleAwareManager {
|
|||||||
message: CharSequence,
|
message: CharSequence,
|
||||||
displayName: String,
|
displayName: String,
|
||||||
replyTo: Int,
|
replyTo: Int,
|
||||||
|
sendWithoutNotification: Boolean,
|
||||||
referenceId: String
|
referenceId: String
|
||||||
): Flow<Result<ChatMessage?>>
|
): Flow<Result<ChatMessage?>>
|
||||||
|
|
||||||
|
@ -119,7 +119,9 @@ data class ChatMessage(
|
|||||||
|
|
||||||
var referenceId: String? = null,
|
var referenceId: String? = null,
|
||||||
|
|
||||||
var sendingFailed: Boolean = true
|
var sendingFailed: Boolean = true,
|
||||||
|
|
||||||
|
var silent: Boolean = false
|
||||||
|
|
||||||
) : MessageContentType,
|
) : MessageContentType,
|
||||||
MessageContentType.Image {
|
MessageContentType.Image {
|
||||||
|
@ -929,7 +929,7 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
it.message,
|
it.message,
|
||||||
it.actorDisplayName,
|
it.actorDisplayName,
|
||||||
it.parentMessageId?.toIntOrZero() ?: 0,
|
it.parentMessageId?.toIntOrZero() ?: 0,
|
||||||
false,
|
it.silent,
|
||||||
it.referenceId.orEmpty()
|
it.referenceId.orEmpty()
|
||||||
).collect { result ->
|
).collect { result ->
|
||||||
if (result.isSuccess) {
|
if (result.isSuccess) {
|
||||||
@ -951,6 +951,7 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
message: CharSequence,
|
message: CharSequence,
|
||||||
displayName: String,
|
displayName: String,
|
||||||
replyTo: Int,
|
replyTo: Int,
|
||||||
|
sendWithoutNotification: Boolean,
|
||||||
referenceId: String
|
referenceId: String
|
||||||
): Flow<Result<ChatMessage?>> =
|
): Flow<Result<ChatMessage?>> =
|
||||||
flow {
|
flow {
|
||||||
@ -959,6 +960,7 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
internalConversationId,
|
internalConversationId,
|
||||||
message.toString(),
|
message.toString(),
|
||||||
replyTo,
|
replyTo,
|
||||||
|
sendWithoutNotification,
|
||||||
referenceId
|
referenceId
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -980,6 +982,7 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
internalConversationId: String,
|
internalConversationId: String,
|
||||||
message: String,
|
message: String,
|
||||||
replyTo: Int,
|
replyTo: Int,
|
||||||
|
sendWithoutNotification: Boolean,
|
||||||
referenceId: String
|
referenceId: String
|
||||||
): ChatMessageEntity {
|
): ChatMessageEntity {
|
||||||
val currentTimeMillies = System.currentTimeMillis()
|
val currentTimeMillies = System.currentTimeMillis()
|
||||||
@ -1007,12 +1010,13 @@ class OfflineFirstChatRepository @Inject constructor(
|
|||||||
parentMessageId = parentMessageId,
|
parentMessageId = parentMessageId,
|
||||||
systemMessageType = ChatMessage.SystemMessageType.DUMMY,
|
systemMessageType = ChatMessage.SystemMessageType.DUMMY,
|
||||||
replyable = false,
|
replyable = false,
|
||||||
timestamp = System.currentTimeMillis() / MILLIES,
|
timestamp = currentTimeMillies / MILLIES,
|
||||||
expirationTimestamp = 0,
|
expirationTimestamp = 0,
|
||||||
actorDisplayName = currentUser.displayName!!,
|
actorDisplayName = currentUser.displayName!!,
|
||||||
referenceId = referenceId,
|
referenceId = referenceId,
|
||||||
isTemporary = true,
|
isTemporary = true,
|
||||||
sendingFailed = false
|
sendingFailed = false,
|
||||||
|
silent = sendWithoutNotification
|
||||||
)
|
)
|
||||||
return entity
|
return entity
|
||||||
}
|
}
|
||||||
|
@ -134,6 +134,7 @@ class MessageInputViewModel @Inject constructor(
|
|||||||
message,
|
message,
|
||||||
displayName,
|
displayName,
|
||||||
replyTo,
|
replyTo,
|
||||||
|
sendWithoutNotification,
|
||||||
referenceId
|
referenceId
|
||||||
).collect { result ->
|
).collect { result ->
|
||||||
if (result.isSuccess) {
|
if (result.isSuccess) {
|
||||||
|
@ -39,7 +39,8 @@ fun ChatMessageJson.asEntity(accountId: Long) =
|
|||||||
lastEditActorType = lastEditActorType,
|
lastEditActorType = lastEditActorType,
|
||||||
lastEditTimestamp = lastEditTimestamp,
|
lastEditTimestamp = lastEditTimestamp,
|
||||||
deleted = deleted,
|
deleted = deleted,
|
||||||
referenceId = referenceId
|
referenceId = referenceId,
|
||||||
|
silent = silent
|
||||||
)
|
)
|
||||||
|
|
||||||
fun ChatMessageEntity.asModel() =
|
fun ChatMessageEntity.asModel() =
|
||||||
@ -68,7 +69,8 @@ fun ChatMessageEntity.asModel() =
|
|||||||
referenceId = referenceId,
|
referenceId = referenceId,
|
||||||
isTemporary = isTemporary,
|
isTemporary = isTemporary,
|
||||||
sendingFailed = sendingFailed,
|
sendingFailed = sendingFailed,
|
||||||
readStatus = ReadStatus.NONE
|
readStatus = ReadStatus.NONE,
|
||||||
|
silent = silent
|
||||||
)
|
)
|
||||||
|
|
||||||
fun ChatMessageJson.asModel() =
|
fun ChatMessageJson.asModel() =
|
||||||
@ -94,5 +96,6 @@ fun ChatMessageJson.asModel() =
|
|||||||
lastEditActorType = lastEditActorType,
|
lastEditActorType = lastEditActorType,
|
||||||
lastEditTimestamp = lastEditTimestamp,
|
lastEditTimestamp = lastEditTimestamp,
|
||||||
isDeleted = deleted,
|
isDeleted = deleted,
|
||||||
referenceId = referenceId
|
referenceId = referenceId,
|
||||||
|
silent = silent
|
||||||
)
|
)
|
||||||
|
@ -65,7 +65,7 @@ data class ChatMessageEntity(
|
|||||||
@ColumnInfo(name = "reactionsSelf") var reactionsSelf: ArrayList<String>? = null,
|
@ColumnInfo(name = "reactionsSelf") var reactionsSelf: ArrayList<String>? = null,
|
||||||
@ColumnInfo(name = "referenceId") var referenceId: String? = null,
|
@ColumnInfo(name = "referenceId") var referenceId: String? = null,
|
||||||
@ColumnInfo(name = "sendingFailed") var sendingFailed: Boolean = false,
|
@ColumnInfo(name = "sendingFailed") var sendingFailed: Boolean = false,
|
||||||
|
@ColumnInfo(name = "silent") var silent: Boolean = false,
|
||||||
@ColumnInfo(name = "systemMessage") var systemMessageType: ChatMessage.SystemMessageType,
|
@ColumnInfo(name = "systemMessage") var systemMessageType: ChatMessage.SystemMessageType,
|
||||||
@ColumnInfo(name = "timestamp") var timestamp: Long = 0
|
@ColumnInfo(name = "timestamp") var timestamp: Long = 0
|
||||||
// missing/not needed: silent
|
|
||||||
)
|
)
|
||||||
|
@ -292,5 +292,14 @@ object Migrations {
|
|||||||
} catch (e: SQLException) {
|
} catch (e: SQLException) {
|
||||||
Log.i("Migrations", "Something went wrong when adding column sendingFailed to table ChatMessages")
|
Log.i("Migrations", "Something went wrong when adding column sendingFailed to table ChatMessages")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
db.execSQL(
|
||||||
|
"ALTER TABLE ChatMessages " +
|
||||||
|
"ADD COLUMN silent INTEGER NOT NULL DEFAULT 0;"
|
||||||
|
)
|
||||||
|
} catch (e: SQLException) {
|
||||||
|
Log.i("Migrations", "Something went wrong when adding column silent to table ChatMessages")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,5 +43,6 @@ data class ChatMessageJson(
|
|||||||
@JsonField(name = ["lastEditActorType"]) var lastEditActorType: String? = null,
|
@JsonField(name = ["lastEditActorType"]) var lastEditActorType: String? = null,
|
||||||
@JsonField(name = ["lastEditTimestamp"]) var lastEditTimestamp: Long? = 0,
|
@JsonField(name = ["lastEditTimestamp"]) var lastEditTimestamp: Long? = 0,
|
||||||
@JsonField(name = ["deleted"]) var deleted: Boolean = false,
|
@JsonField(name = ["deleted"]) var deleted: Boolean = false,
|
||||||
@JsonField(name = ["referenceId"]) var referenceId: String? = null
|
@JsonField(name = ["referenceId"]) var referenceId: String? = null,
|
||||||
|
@JsonField(name = ["silent"]) var silent: Boolean = false,
|
||||||
) : Parcelable
|
) : Parcelable
|
||||||
|
Loading…
Reference in New Issue
Block a user