From a632765cce9448a1ac46730705ea3d8b62f3a820 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Mon, 12 Aug 2024 12:40:05 +0200 Subject: [PATCH] set values to not nullable in ConversationEntity.kt wherever this makes sense remove roomId from Conversation (deprecated. only token should be used) Signed-off-by: Marcel Hibbe --- .../nextcloud/talk/activities/CallActivity.kt | 2 +- .../talk/adapters/items/ConversationItem.kt | 2 +- .../com/nextcloud/talk/chat/ChatActivity.kt | 18 ++-- .../talk/contacts/ContactsActivity.kt | 4 +- .../talk/contacts/ContactsActivityCompose.kt | 2 +- .../ConversationsListActivity.kt | 4 +- .../database/mappers/ConversationMapUtils.kt | 50 ++++----- .../data/database/model/ChatBlockEntity.kt | 2 + .../data/database/model/ChatMessageEntity.kt | 4 +- .../data/database/model/ConversationEntity.kt | 44 ++++---- .../talk/models/domain/ConversationModel.kt | 100 +++++++++--------- .../models/json/conversations/Conversation.kt | 5 +- .../adapters/OpenConversationsAdapter.kt | 2 +- .../data/OpenConversation.kt | 2 +- .../data/OpenConversationsRepositoryImpl.kt | 2 +- .../ui/bottom/sheet/ProfileBottomSheet.kt | 2 +- .../dialog/ConversationsListBottomDialog.kt | 2 +- .../ApplicationWideCurrentRoomHolder.java | 18 ++-- 18 files changed, 134 insertions(+), 131 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt index d14f3c4d7..f0b746be0 100644 --- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.kt @@ -1734,7 +1734,7 @@ class CallActivity : CallBaseActivity() { private fun setInitialApplicationWideCurrentRoomHolderValues(conversation: Conversation) { ApplicationWideCurrentRoomHolder.getInstance().userInRoom = conversationUser ApplicationWideCurrentRoomHolder.getInstance().session = conversation.sessionId - ApplicationWideCurrentRoomHolder.getInstance().currentRoomId = conversation.roomId + // ApplicationWideCurrentRoomHolder.getInstance().currentRoomId = conversation.roomId ApplicationWideCurrentRoomHolder.getInstance().currentRoomToken = conversation.token ApplicationWideCurrentRoomHolder.getInstance().callStartTime = conversation.callStartTime } diff --git a/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt b/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt index 728f79792..c3b2af79f 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt +++ b/app/src/main/java/com/nextcloud/talk/adapters/items/ConversationItem.kt @@ -54,7 +54,7 @@ class ConversationItem( ISectionable, IFilterable { private var header: GenericTextHeaderItem? = null - private val chatMessage = model.lastMessageViaConversationList?.asModel() + private val chatMessage = model.lastMessage?.asModel() constructor( conversation: ConversationModel, diff --git a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt index f079f95e0..987d36958 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt @@ -291,7 +291,7 @@ class ChatActivity : var newMessagesCount = 0 var startCallFromNotification: Boolean = false var startCallFromRoomSwitch: Boolean = false - lateinit var roomId: String + // lateinit var roomId: String var voiceOnly: Boolean = true private lateinit var path: String @@ -460,7 +460,7 @@ class ChatActivity : private fun handleIntent(intent: Intent) { val extras: Bundle? = intent.extras - roomId = extras?.getString(KEY_ROOM_ID).orEmpty() + // roomId = extras?.getString(KEY_ROOM_ID).orEmpty() roomToken = extras?.getString(KEY_ROOM_TOKEN).orEmpty() sharedText = extras?.getString(BundleKeys.KEY_SHARED_TEXT).orEmpty() @@ -619,7 +619,7 @@ class ChatActivity : sessionIdAfterRoomJoined = currentConversation!!.sessionId ApplicationWideCurrentRoomHolder.getInstance().session = currentConversation!!.sessionId - ApplicationWideCurrentRoomHolder.getInstance().currentRoomId = currentConversation!!.roomId + // ApplicationWideCurrentRoomHolder.getInstance().currentRoomId = currentConversation!!.roomId ApplicationWideCurrentRoomHolder.getInstance().currentRoomToken = currentConversation!!.token ApplicationWideCurrentRoomHolder.getInstance().userInRoom = conversationUser @@ -738,7 +738,7 @@ class ChatActivity : is ChatViewModel.CreateRoomSuccessState -> { val bundle = Bundle() bundle.putString(KEY_ROOM_TOKEN, state.roomOverall.ocs!!.data!!.token) - bundle.putString(KEY_ROOM_ID, state.roomOverall.ocs!!.data!!.roomId) + // bundle.putString(KEY_ROOM_ID, state.roomOverall.ocs!!.data!!.roomId) leaveRoom { val chatIntent = Intent(context, ChatActivity::class.java) @@ -2345,12 +2345,12 @@ class ChatActivity : private fun joinRoomWithPassword() { // if ApplicationWideCurrentRoomHolder contains a session (because a call is active), then keep the sessionId - if (ApplicationWideCurrentRoomHolder.getInstance().currentRoomId == - currentConversation!!.roomId + if (ApplicationWideCurrentRoomHolder.getInstance().currentRoomToken == + currentConversation!!.token ) { sessionIdAfterRoomJoined = ApplicationWideCurrentRoomHolder.getInstance().session - ApplicationWideCurrentRoomHolder.getInstance().currentRoomId = roomId + // ApplicationWideCurrentRoomHolder.getInstance().currentRoomId = roomId ApplicationWideCurrentRoomHolder.getInstance().currentRoomToken = roomToken ApplicationWideCurrentRoomHolder.getInstance().userInRoom = conversationUser } @@ -2908,7 +2908,7 @@ class ChatActivity : currentConversation?.let { val bundle = Bundle() bundle.putString(KEY_ROOM_TOKEN, roomToken) - bundle.putString(KEY_ROOM_ID, roomId) + // bundle.putString(KEY_ROOM_ID, roomId) bundle.putString(BundleKeys.KEY_CONVERSATION_PASSWORD, roomPassword) bundle.putString(BundleKeys.KEY_MODIFIED_BASE_URL, conversationUser?.baseUrl!!) bundle.putString(KEY_CONVERSATION_NAME, it.displayName) @@ -3043,7 +3043,7 @@ class ChatActivity : val bundle = Bundle() bundle.putBoolean(BundleKeys.KEY_FORWARD_MSG_FLAG, true) bundle.putString(BundleKeys.KEY_FORWARD_MSG_TEXT, message?.text) - bundle.putString(BundleKeys.KEY_FORWARD_HIDE_SOURCE_ROOM, roomId) + bundle.putString(BundleKeys.KEY_FORWARD_HIDE_SOURCE_ROOM, roomToken) val intent = Intent(this, ConversationsListActivity::class.java) intent.putExtras(bundle) diff --git a/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivity.kt b/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivity.kt index ae9ac6c2e..44dc4227c 100644 --- a/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivity.kt @@ -338,7 +338,7 @@ class ContactsActivity : override fun onNext(roomOverall: RoomOverall) { val bundle = Bundle() bundle.putString(BundleKeys.KEY_ROOM_TOKEN, roomOverall.ocs!!.data!!.token) - bundle.putString(BundleKeys.KEY_ROOM_ID, roomOverall.ocs!!.data!!.roomId) + // bundle.putString(BundleKeys.KEY_ROOM_ID, roomOverall.ocs!!.data!!.roomId) val chatIntent = Intent(context, ChatActivity::class.java) chatIntent.putExtras(bundle) @@ -804,7 +804,7 @@ class ContactsActivity : override fun onNext(roomOverall: RoomOverall) { val bundle = Bundle() bundle.putString(BundleKeys.KEY_ROOM_TOKEN, roomOverall.ocs!!.data!!.token) - bundle.putString(BundleKeys.KEY_ROOM_ID, roomOverall.ocs!!.data!!.roomId) + // bundle.putString(BundleKeys.KEY_ROOM_ID, roomOverall.ocs!!.data!!.roomId) val chatIntent = Intent(context, ChatActivity::class.java) chatIntent.putExtras(bundle) diff --git a/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt b/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt index 75fc8c1bd..ec229ee07 100644 --- a/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt +++ b/app/src/main/java/com/nextcloud/talk/contacts/ContactsActivityCompose.kt @@ -220,7 +220,7 @@ fun ContactItemRow(contact: AutocompleteUser, contactsViewModel: ContactsViewMod val conversation = (roomUiState as RoomUiState.Success).conversation val bundle = Bundle() bundle.putString(BundleKeys.KEY_ROOM_TOKEN, conversation?.token) - bundle.putString(BundleKeys.KEY_ROOM_ID, conversation?.roomId) + // bundle.putString(BundleKeys.KEY_ROOM_ID, conversation?.roomId) val chatIntent = Intent(context, ChatActivity::class.java) chatIntent.putExtras(bundle) chatIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) diff --git a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt index 70d18f179..66ec2502f 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationlist/ConversationsListActivity.kt @@ -775,7 +775,7 @@ class ConversationsListActivity : private fun addToConversationItems(conversation: ConversationModel) { if (intent.getStringExtra(KEY_FORWARD_HIDE_SOURCE_ROOM) != null && - intent.getStringExtra(KEY_FORWARD_HIDE_SOURCE_ROOM) == conversation.roomId + intent.getStringExtra(KEY_FORWARD_HIDE_SOURCE_ROOM) == conversation.token ) { return } @@ -1456,7 +1456,7 @@ class ConversationsListActivity : val bundle = Bundle() bundle.putString(KEY_ROOM_TOKEN, selectedConversation!!.token) - bundle.putString(KEY_ROOM_ID, selectedConversation!!.roomId) + // bundle.putString(KEY_ROOM_ID, selectedConversation!!.roomId) bundle.putString(KEY_SHARED_TEXT, textToPaste) if (selectedMessageId != null) { bundle.putString(BundleKeys.KEY_MESSAGE_ID, selectedMessageId) diff --git a/app/src/main/java/com/nextcloud/talk/data/database/mappers/ConversationMapUtils.kt b/app/src/main/java/com/nextcloud/talk/data/database/mappers/ConversationMapUtils.kt index f6893735b..37d8fbced 100644 --- a/app/src/main/java/com/nextcloud/talk/data/database/mappers/ConversationMapUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/data/database/mappers/ConversationMapUtils.kt @@ -32,7 +32,7 @@ fun ConversationModel.asEntity() = lastActivity = lastActivity, unreadMessages = unreadMessages, unreadMention = unreadMention, - // lastMessageId = lastMessage?.id?.toLong(), + lastMessage = lastMessage?.let { LoganSquare.serialize(lastMessage) }, objectType = objectType, notificationLevel = notificationLevel, conversationReadOnlyState = conversationReadOnlyState, @@ -81,8 +81,8 @@ fun ConversationEntity.asModel() = lastActivity = lastActivity, unreadMessages = unreadMessages, unreadMention = unreadMention, - lastMessageViaConversationList = lastMessageJson?.let - { LoganSquare.parse(lastMessageJson, ChatMessageJson::class.java) }, + lastMessage = lastMessage?.let + { LoganSquare.parse(lastMessage, ChatMessageJson::class.java) }, objectType = objectType, notificationLevel = notificationLevel, conversationReadOnlyState = conversationReadOnlyState, @@ -116,36 +116,36 @@ fun Conversation.asEntity(accountId: Long) = ConversationEntity( internalId = "$accountId@$token", accountId = accountId, - token = token, - name = name, - displayName = displayName, - description = description, - type = type, + token = token!!, + name = name!!, + displayName = displayName!!, + description = description!!, + type = type!!, lastPing = lastPing, - participantType = participantType, + participantType = participantType!!, hasPassword = hasPassword, - sessionId = sessionId, - actorId = actorId, - actorType = actorType, + sessionId = sessionId!!, + actorId = actorId!!, + actorType = actorType!!, favorite = favorite, lastActivity = lastActivity, unreadMessages = unreadMessages, unreadMention = unreadMention, - lastMessageJson = lastMessage?.let { LoganSquare.serialize(lastMessage) }, - objectType = objectType, - notificationLevel = notificationLevel, - conversationReadOnlyState = conversationReadOnlyState, - lobbyState = lobbyState, - lobbyTimer = lobbyTimer, + lastMessage = lastMessage?.let { LoganSquare.serialize(lastMessage) }, + objectType = objectType!!, + notificationLevel = notificationLevel!!, + conversationReadOnlyState = conversationReadOnlyState!!, + lobbyState = lobbyState!!, + lobbyTimer = lobbyTimer!!, lastReadMessage = lastReadMessage, lastCommonReadMessage = lastCommonReadMessage, hasCall = hasCall, callFlag = callFlag, canStartCall = canStartCall, - canLeaveConversation = canLeaveConversation, - canDeleteConversation = canDeleteConversation, - unreadMentionDirect = unreadMentionDirect, - notificationCalls = notificationCalls, + canLeaveConversation = canLeaveConversation!!, + canDeleteConversation = canDeleteConversation!!, + unreadMentionDirect = unreadMentionDirect!!, + notificationCalls = notificationCalls!!, permissions = permissions, messageExpiration = messageExpiration, status = status, @@ -153,9 +153,9 @@ fun Conversation.asEntity(accountId: Long) = statusMessage = statusMessage, statusClearAt = statusClearAt, callRecording = callRecording, - avatarVersion = avatarVersion, - hasCustomAvatar = hasCustomAvatar, - callStartTime = callStartTime, + avatarVersion = avatarVersion!!, + hasCustomAvatar = hasCustomAvatar!!, + callStartTime = callStartTime!!, recordingConsentRequired = recordingConsentRequired, remoteServer = remoteServer, remoteToken = remoteToken diff --git a/app/src/main/java/com/nextcloud/talk/data/database/model/ChatBlockEntity.kt b/app/src/main/java/com/nextcloud/talk/data/database/model/ChatBlockEntity.kt index 7559edabc..75ef7627b 100644 --- a/app/src/main/java/com/nextcloud/talk/data/database/model/ChatBlockEntity.kt +++ b/app/src/main/java/com/nextcloud/talk/data/database/model/ChatBlockEntity.kt @@ -11,6 +11,8 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.PrimaryKey +// ChatBlockEntity.kt:26: internalConversationId column references a foreign key but it is not part of an index. This may trigger full table scans whenever parent table is modified so you are highly advised to create an index that covers this column. + @Entity( tableName = "ChatBlocks", foreignKeys = [ diff --git a/app/src/main/java/com/nextcloud/talk/data/database/model/ChatMessageEntity.kt b/app/src/main/java/com/nextcloud/talk/data/database/model/ChatMessageEntity.kt index 48e0f105b..956559ee3 100644 --- a/app/src/main/java/com/nextcloud/talk/data/database/model/ChatMessageEntity.kt +++ b/app/src/main/java/com/nextcloud/talk/data/database/model/ChatMessageEntity.kt @@ -47,7 +47,7 @@ data class ChatMessageEntity( @ColumnInfo(name = "systemMessage") var systemMessageType: ChatMessage.SystemMessageType? = null, @ColumnInfo(name = "messageType") var messageType: String? = null, @ColumnInfo(name = "isReplyable") var replyable: Boolean = false, - // TODO: add "referenceId" + // missing/not needed: referenceId @ColumnInfo(name = "message") var message: String? = null, @ColumnInfo(name = "messageParameters") var messageParameters: HashMap>? = null, @ColumnInfo(name = "expirationTimestamp") var expirationTimestamp: Int = 0, @@ -60,5 +60,5 @@ data class ChatMessageEntity( @ColumnInfo(name = "lastEditActorDisplayName") var lastEditActorDisplayName: String? = null, @ColumnInfo(name = "lastEditTimestamp") var lastEditTimestamp: Long? = 0, @ColumnInfo(name = "deleted") var deleted: Boolean = false, - // TODO: add "silent" + // missing/not needed: silent ) diff --git a/app/src/main/java/com/nextcloud/talk/data/database/model/ConversationEntity.kt b/app/src/main/java/com/nextcloud/talk/data/database/model/ConversationEntity.kt index 7f2691a5c..6ea20a62e 100644 --- a/app/src/main/java/com/nextcloud/talk/data/database/model/ConversationEntity.kt +++ b/app/src/main/java/com/nextcloud/talk/data/database/model/ConversationEntity.kt @@ -44,49 +44,49 @@ data class ConversationEntity( // "unread message" etc only match a specific account. // If multiple talk app accounts have the same conversation, it is stored as another dataset, which is // exactly what we want for this case. - @ColumnInfo(name = "token") var token: String?, - @ColumnInfo(name = "type") var type: ConversationEnums.ConversationType? = null, - @ColumnInfo(name = "name") var name: String? = null, - @ColumnInfo(name = "displayName") var displayName: String? = null, - @ColumnInfo(name = "description") var description: String? = null, - @ColumnInfo(name = "participantType") var participantType: Participant.ParticipantType? = null, + @ColumnInfo(name = "token") var token: String, + @ColumnInfo(name = "type") var type: ConversationEnums.ConversationType, + @ColumnInfo(name = "name") var name: String, + @ColumnInfo(name = "displayName") var displayName: String, + @ColumnInfo(name = "description") var description: String, + @ColumnInfo(name = "participantType") var participantType: Participant.ParticipantType, // missing/not needed: attendeeId // missing/not needed: attendeePin - @ColumnInfo(name = "actorType") var actorType: String? = null, - @ColumnInfo(name = "actorId") var actorId: String? = null, + @ColumnInfo(name = "actorType") var actorType: String, + @ColumnInfo(name = "actorId") var actorId: String, @ColumnInfo(name = "permissions") var permissions: Int = 0, // missing/not needed: attendeePermissions // missing/not needed: callPermissions // missing/not needed: defaultPermissions // missing/not needed: participantInCall // missing/not needed: participantFlags - @ColumnInfo(name = "readOnly") var conversationReadOnlyState: ConversationEnums.ConversationReadOnlyState? = null, + @ColumnInfo(name = "readOnly") var conversationReadOnlyState: ConversationEnums.ConversationReadOnlyState, // missing/not needed: listable @ColumnInfo(name = "messageExpiration") var messageExpiration: Int = 0, // missing/not needed: count // missing/not needed: numGuests @ColumnInfo(name = "lastPing") var lastPing: Long = 0, - @ColumnInfo(name = "sessionId") var sessionId: String? = null, + @ColumnInfo(name = "sessionId") var sessionId: String, @ColumnInfo(name = "hasPassword") var hasPassword: Boolean = false, @ColumnInfo(name = "hasCall") var hasCall: Boolean = false, @ColumnInfo(name = "callFlag") var callFlag: Int = 0, @ColumnInfo(name = "canStartCall") var canStartCall: Boolean = false, - @ColumnInfo(name = "canDeleteConversation") var canDeleteConversation: Boolean? = null, - @ColumnInfo(name = "canLeaveConversation") var canLeaveConversation: Boolean? = null, + @ColumnInfo(name = "canDeleteConversation") var canDeleteConversation: Boolean, + @ColumnInfo(name = "canLeaveConversation") var canLeaveConversation: Boolean, @ColumnInfo(name = "lastActivity") var lastActivity: Long = 0, @ColumnInfo(name = "isFavorite") var favorite: Boolean = false, - @ColumnInfo(name = "notificationLevel") var notificationLevel: ConversationEnums.NotificationLevel? = null, - @ColumnInfo(name = "lobbyState") var lobbyState: ConversationEnums.LobbyState? = null, - @ColumnInfo(name = "lobbyTimer") var lobbyTimer: Long? = null, + @ColumnInfo(name = "notificationLevel") var notificationLevel: ConversationEnums.NotificationLevel, + @ColumnInfo(name = "lobbyState") var lobbyState: ConversationEnums.LobbyState, + @ColumnInfo(name = "lobbyTimer") var lobbyTimer: Long = 0, // missing/not needed: sipEnabled // missing/not needed: canEnableSIP @ColumnInfo(name = "unreadMessages") var unreadMessages: Int = 0, @ColumnInfo(name = "unreadMention") var unreadMention: Boolean = false, - @ColumnInfo(name = "unreadMentionDirect") var unreadMentionDirect: Boolean? = null, + @ColumnInfo(name = "unreadMentionDirect") var unreadMentionDirect: Boolean, @ColumnInfo(name = "lastReadMessage") var lastReadMessage: Int = 0, @ColumnInfo(name = "lastCommonReadMessage") var lastCommonReadMessage: Int = 0, - @ColumnInfo(name = "lastMessageJson") var lastMessageJson: String? = null, - @ColumnInfo(name = "objectType") var objectType: ConversationEnums.ObjectType? = null, + @ColumnInfo(name = "lastMessage") var lastMessage: String? = null, + @ColumnInfo(name = "objectType") var objectType: ConversationEnums.ObjectType, // missing/not needed: objectId // missing/not needed: breakoutRoomMode // missing/not needed: breakoutRoomStatus @@ -94,13 +94,13 @@ data class ConversationEntity( @ColumnInfo(name = "statusIcon") var statusIcon: String? = null, @ColumnInfo(name = "statusMessage") var statusMessage: String? = null, @ColumnInfo(name = "statusClearAt") var statusClearAt: Long? = 0, - @ColumnInfo(name = "avatarVersion") var avatarVersion: String? = null, - @ColumnInfo(name = "isCustomAvatar") var hasCustomAvatar: Boolean? = null, - @ColumnInfo(name = "callStartTime") var callStartTime: Long? = null, + @ColumnInfo(name = "avatarVersion") var avatarVersion: String, + @ColumnInfo(name = "isCustomAvatar") var hasCustomAvatar: Boolean, + @ColumnInfo(name = "callStartTime") var callStartTime: Long = 0, @ColumnInfo(name = "callRecording") var callRecording: Int = 0, @ColumnInfo(name = "recordingConsent") var recordingConsentRequired: Int = 0, - @ColumnInfo(name = "notificationCalls") var notificationCalls: Int? = null, + @ColumnInfo(name = "notificationCalls") var notificationCalls: Int = 0, @ColumnInfo(name = "remoteServer") var remoteServer: String? = null, @ColumnInfo(name = "remoteToken") var remoteToken: String? = null ) diff --git a/app/src/main/java/com/nextcloud/talk/models/domain/ConversationModel.kt b/app/src/main/java/com/nextcloud/talk/models/domain/ConversationModel.kt index 480e78d03..2da0f9db4 100644 --- a/app/src/main/java/com/nextcloud/talk/models/domain/ConversationModel.kt +++ b/app/src/main/java/com/nextcloud/talk/models/domain/ConversationModel.kt @@ -16,38 +16,37 @@ import com.nextcloud.talk.models.json.participants.Participant class ConversationModel( var internalId: String, var accountId: Long, - var roomId: String? = null, - var token: String? = null, - var name: String? = null, - var displayName: String? = null, - var description: String? = null, - var type: ConversationEnums.ConversationType? = null, + // var roomId: String? = null, + var token: String, + var name: String, + var displayName: String, + var description: String, + var type: ConversationEnums.ConversationType, var lastPing: Long = 0, - var participantType: Participant.ParticipantType? = null, + var participantType: Participant.ParticipantType, var hasPassword: Boolean = false, - var sessionId: String? = null, - var actorId: String? = null, - var actorType: String? = null, - var password: String? = null, + var sessionId: String, + var actorId: String, + var actorType: String, var favorite: Boolean = false, var lastActivity: Long = 0, var unreadMessages: Int = 0, var unreadMention: Boolean = false, - var lastMessageViaConversationList: ChatMessageJson? = null, - var objectType: ConversationEnums.ObjectType? = null, - var notificationLevel: ConversationEnums.NotificationLevel? = null, - var conversationReadOnlyState: ConversationEnums.ConversationReadOnlyState? = null, - var lobbyState: ConversationEnums.LobbyState? = null, - var lobbyTimer: Long? = null, + var lastMessage: ChatMessageJson? = null, + var objectType: ConversationEnums.ObjectType, + var notificationLevel: ConversationEnums.NotificationLevel, + var conversationReadOnlyState: ConversationEnums.ConversationReadOnlyState, + var lobbyState: ConversationEnums.LobbyState, + var lobbyTimer: Long, var lastReadMessage: Int = 0, var lastCommonReadMessage: Int = 0, var hasCall: Boolean = false, var callFlag: Int = 0, var canStartCall: Boolean = false, - var canLeaveConversation: Boolean? = null, - var canDeleteConversation: Boolean? = null, - var unreadMentionDirect: Boolean? = null, - var notificationCalls: Int? = null, + var canLeaveConversation: Boolean, + var canDeleteConversation: Boolean, + var unreadMentionDirect: Boolean, + var notificationCalls: Int, var permissions: Int = 0, var messageExpiration: Int = 0, var status: String? = null, @@ -55,12 +54,15 @@ class ConversationModel( var statusMessage: String? = null, var statusClearAt: Long? = 0, var callRecording: Int = 0, - var avatarVersion: String? = null, - var hasCustomAvatar: Boolean? = null, - var callStartTime: Long? = null, + var avatarVersion: String, + var hasCustomAvatar: Boolean, + var callStartTime: Long, var recordingConsentRequired: Int = 0, var remoteServer: String? = null, var remoteToken: String? = null, + + // attributes that don't come from API. This should be changed?! + var password: String? = null, ) { companion object { @@ -68,46 +70,46 @@ class ConversationModel( return ConversationModel( internalId = user.id!!.toString() + "@" + conversation.token, accountId = user.id!!, - roomId = conversation.roomId, - token = conversation.token, - name = conversation.name, - displayName = conversation.displayName, - description = conversation.description, - type = conversation.type?.let { ConversationEnums.ConversationType.valueOf(it.name) }, + // roomId = conversation.roomId, + token = conversation.token!!, + name = conversation.name!!, + displayName = conversation.displayName!!, + description = conversation.description!!, + type = conversation.type.let { ConversationEnums.ConversationType.valueOf(it!!.name) }, lastPing = conversation.lastPing, - participantType = conversation.participantType?.let { Participant.ParticipantType.valueOf(it.name) }, + participantType = conversation.participantType.let { Participant.ParticipantType.valueOf(it!!.name) }, hasPassword = conversation.hasPassword, - sessionId = conversation.sessionId, - actorId = conversation.actorId, - actorType = conversation.actorType, + sessionId = conversation.sessionId!!, + actorId = conversation.actorId!!, + actorType = conversation.actorType!!, password = conversation.password, favorite = conversation.favorite, lastActivity = conversation.lastActivity, unreadMessages = conversation.unreadMessages, unreadMention = conversation.unreadMention, - // lastMessage = conversation.lastMessage, to do... - objectType = conversation.objectType?.let { ConversationEnums.ObjectType.valueOf(it.name) }, - notificationLevel = conversation.notificationLevel?.let { + lastMessage = conversation.lastMessage, + objectType = conversation.objectType.let { ConversationEnums.ObjectType.valueOf(it!!.name) }, + notificationLevel = conversation.notificationLevel.let { ConversationEnums.NotificationLevel.valueOf( - it.name + it!!.name ) }, - conversationReadOnlyState = conversation.conversationReadOnlyState?.let { + conversationReadOnlyState = conversation.conversationReadOnlyState.let { ConversationEnums.ConversationReadOnlyState.valueOf( - it.name + it!!.name ) }, - lobbyState = conversation.lobbyState?.let { ConversationEnums.LobbyState.valueOf(it.name) }, - lobbyTimer = conversation.lobbyTimer, + lobbyState = conversation.lobbyState.let { ConversationEnums.LobbyState.valueOf(it!!.name) }, + lobbyTimer = conversation.lobbyTimer!!, lastReadMessage = conversation.lastReadMessage, lastCommonReadMessage = conversation.lastCommonReadMessage, hasCall = conversation.hasCall, callFlag = conversation.callFlag, canStartCall = conversation.canStartCall, - canLeaveConversation = conversation.canLeaveConversation, - canDeleteConversation = conversation.canDeleteConversation, - unreadMentionDirect = conversation.unreadMentionDirect, - notificationCalls = conversation.notificationCalls, + canLeaveConversation = conversation.canLeaveConversation!!, + canDeleteConversation = conversation.canDeleteConversation!!, + unreadMentionDirect = conversation.unreadMentionDirect!!, + notificationCalls = conversation.notificationCalls!!, permissions = conversation.permissions, messageExpiration = conversation.messageExpiration, status = conversation.status, @@ -115,9 +117,9 @@ class ConversationModel( statusMessage = conversation.statusMessage, statusClearAt = conversation.statusClearAt, callRecording = conversation.callRecording, - avatarVersion = conversation.avatarVersion, - hasCustomAvatar = conversation.hasCustomAvatar, - callStartTime = conversation.callStartTime, + avatarVersion = conversation.avatarVersion!!, + hasCustomAvatar = conversation.hasCustomAvatar!!, + callStartTime = conversation.callStartTime!!, recordingConsentRequired = conversation.recordingConsentRequired, remoteServer = conversation.remoteServer, remoteToken = conversation.remoteToken diff --git a/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.kt b/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.kt index 17b563aa4..fae0225ca 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.kt +++ b/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.kt @@ -28,8 +28,8 @@ import kotlinx.parcelize.Parcelize @Parcelize @JsonObject data class Conversation( - @JsonField(name = ["id"]) - var roomId: String? = null, + // @JsonField(name = ["id"]) + // var roomId: String? = null, @JsonField(name = ["token"]) var token: String? = null, @JsonField(name = ["name"]) @@ -67,7 +67,6 @@ data class Conversation( @JsonField(name = ["unreadMention"]) var unreadMention: Boolean = false, - // TODO get this from Json -> map to ChatMessage and fix error @JsonField(name = ["lastMessage"]) var lastMessage: ChatMessageJson? = null, diff --git a/app/src/main/java/com/nextcloud/talk/openconversations/adapters/OpenConversationsAdapter.kt b/app/src/main/java/com/nextcloud/talk/openconversations/adapters/OpenConversationsAdapter.kt index 645b49c5f..2fdc128cc 100644 --- a/app/src/main/java/com/nextcloud/talk/openconversations/adapters/OpenConversationsAdapter.kt +++ b/app/src/main/java/com/nextcloud/talk/openconversations/adapters/OpenConversationsAdapter.kt @@ -76,6 +76,6 @@ object ConversationsCallback : DiffUtil.ItemCallback() { } override fun areContentsTheSame(oldItem: OpenConversation, newItem: OpenConversation): Boolean { - return oldItem.roomId == newItem.roomId + return oldItem.roomToken == newItem.roomToken } } diff --git a/app/src/main/java/com/nextcloud/talk/openconversations/data/OpenConversation.kt b/app/src/main/java/com/nextcloud/talk/openconversations/data/OpenConversation.kt index 33918185d..65d272e51 100644 --- a/app/src/main/java/com/nextcloud/talk/openconversations/data/OpenConversation.kt +++ b/app/src/main/java/com/nextcloud/talk/openconversations/data/OpenConversation.kt @@ -7,7 +7,7 @@ package com.nextcloud.talk.openconversations.data data class OpenConversation( - var roomId: String, + // var roomId: String, var roomToken: String, var displayName: String, var description: String? diff --git a/app/src/main/java/com/nextcloud/talk/openconversations/data/OpenConversationsRepositoryImpl.kt b/app/src/main/java/com/nextcloud/talk/openconversations/data/OpenConversationsRepositoryImpl.kt index 156d0f4e5..5edbf922d 100644 --- a/app/src/main/java/com/nextcloud/talk/openconversations/data/OpenConversationsRepositoryImpl.kt +++ b/app/src/main/java/com/nextcloud/talk/openconversations/data/OpenConversationsRepositoryImpl.kt @@ -32,7 +32,7 @@ class OpenConversationsRepositoryImpl(private val ncApi: NcApi, currentUserProvi return OpenConversationsModel( conversations.map { conversation -> OpenConversation( - conversation.roomId!!, + // conversation.roomId!!, conversation.token!!, conversation.name!!, conversation.description ?: "" diff --git a/app/src/main/java/com/nextcloud/talk/ui/bottom/sheet/ProfileBottomSheet.kt b/app/src/main/java/com/nextcloud/talk/ui/bottom/sheet/ProfileBottomSheet.kt index e6bfa53a0..5684e9ff1 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/bottom/sheet/ProfileBottomSheet.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/bottom/sheet/ProfileBottomSheet.kt @@ -140,7 +140,7 @@ class ProfileBottomSheet(val ncApi: NcApi, val userModel: User, val viewThemeUti override fun onNext(roomOverall: RoomOverall) { val bundle = Bundle() bundle.putString(BundleKeys.KEY_ROOM_TOKEN, roomOverall.ocs!!.data!!.token) - bundle.putString(BundleKeys.KEY_ROOM_ID, roomOverall.ocs!!.data!!.roomId) + // bundle.putString(BundleKeys.KEY_ROOM_ID, roomOverall.ocs!!.data!!.roomId) val chatIntent = Intent(context, ChatActivity::class.java) chatIntent.putExtras(bundle) diff --git a/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt b/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt index 5b1e7fe23..1ca4054ca 100644 --- a/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt +++ b/app/src/main/java/com/nextcloud/talk/ui/dialog/ConversationsListBottomDialog.kt @@ -312,7 +312,7 @@ class ConversationsListBottomDialog( private fun markConversationAsRead() { val messageId = if (conversation.remoteServer.isNullOrEmpty()) { - conversation.lastMessageViaConversationList?.id + conversation.lastMessage?.id } else { null } diff --git a/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java b/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java index 3d8039e65..515bae063 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java +++ b/app/src/main/java/com/nextcloud/talk/utils/singletons/ApplicationWideCurrentRoomHolder.java @@ -14,7 +14,7 @@ public class ApplicationWideCurrentRoomHolder { public static final String TAG = "ApplicationWideCurrentRoomHolder"; private static final ApplicationWideCurrentRoomHolder holder = new ApplicationWideCurrentRoomHolder(); - private String currentRoomId = ""; +// private String currentRoomId = ""; private String currentRoomToken = ""; private User userInRoom = new User(); private boolean inCall = false; @@ -29,7 +29,7 @@ public class ApplicationWideCurrentRoomHolder { public void clear() { Log.d(TAG, "ApplicationWideCurrentRoomHolder was cleared"); - currentRoomId = ""; +// currentRoomId = ""; userInRoom = new User(); inCall = false; isDialing = false; @@ -45,13 +45,13 @@ public class ApplicationWideCurrentRoomHolder { this.currentRoomToken = currentRoomToken; } - public String getCurrentRoomId() { - return currentRoomId; - } - - public void setCurrentRoomId(String currentRoomId) { - this.currentRoomId = currentRoomId; - } +// public String getCurrentRoomId() { +// return currentRoomId; +// } +// +// public void setCurrentRoomId(String currentRoomId) { +// this.currentRoomId = currentRoomId; +// } public User getUserInRoom() { return userInRoom;