Merge pull request #3769 from nextcloud/feature/noid/federationInvitationFixes

Feature/noid/federation invitation fixes
This commit is contained in:
Julius Linus 2024-03-28 08:03:51 -05:00 committed by GitHub
commit 57e1fd9b91
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 47 additions and 47 deletions

View File

@ -3799,7 +3799,7 @@ class ChatActivity :
chatMessage.isFormerOneToOneConversation = chatMessage.isFormerOneToOneConversation =
(currentConversation?.type == ConversationType.FORMER_ONE_TO_ONE) (currentConversation?.type == ConversationType.FORMER_ONE_TO_ONE)
chatMessage.activeUser = conversationUser chatMessage.activeUser = conversationUser
chatMessage.roomToken = roomToken chatMessage.token = roomToken
} }
if (adapter != null) { if (adapter != null) {

View File

@ -83,7 +83,11 @@ class ConversationsListViewModel @Inject constructor(
} }
override fun onNext(invitationsModel: InvitationsModel) { override fun onNext(invitationsModel: InvitationsModel) {
if (invitationsModel.user.userId?.equals(userManager.currentUser.blockingGet().userId) == true) { val currentUser = userManager.currentUser.blockingGet()
if (invitationsModel.user.userId?.equals(currentUser.userId) == true &&
invitationsModel.user.baseUrl?.equals(currentUser.baseUrl) == true
) {
if (invitationsModel.invitations.isNotEmpty()) { if (invitationsModel.invitations.isNotEmpty()) {
_getFederationInvitationsViewState.value = GetFederationInvitationsSuccessState(true) _getFederationInvitationsViewState.value = GetFederationInvitationsSuccessState(true)
} else { } else {

View File

@ -136,7 +136,7 @@ fun ImageView.loadFederatedUserAvatar(message: ChatMessage): io.reactivex.dispos
return loadFederatedUserAvatar( return loadFederatedUserAvatar(
message.activeUser!!, message.activeUser!!,
message.activeUser!!.baseUrl!!, message.activeUser!!.baseUrl!!,
message.roomToken, message.token!!,
cloudId, cloudId,
darkTheme, darkTheme,
requestBigSize, requestBigSize,

View File

@ -32,6 +32,7 @@ import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity import com.nextcloud.talk.activities.BaseActivity
import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.chat.ChatActivity
import com.nextcloud.talk.conversationlist.ConversationsListActivity import com.nextcloud.talk.conversationlist.ConversationsListActivity
import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ActivityInvitationsBinding import com.nextcloud.talk.databinding.ActivityInvitationsBinding
@ -39,6 +40,7 @@ import com.nextcloud.talk.invitation.adapters.InvitationsAdapter
import com.nextcloud.talk.invitation.data.ActionEnum import com.nextcloud.talk.invitation.data.ActionEnum
import com.nextcloud.talk.invitation.data.Invitation import com.nextcloud.talk.invitation.data.Invitation
import com.nextcloud.talk.invitation.viewmodels.InvitationsViewModel import com.nextcloud.talk.invitation.viewmodels.InvitationsViewModel
import com.nextcloud.talk.utils.bundle.BundleKeys
import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew
import javax.inject.Inject import javax.inject.Inject
@ -151,17 +153,12 @@ class InvitationsActivity : BaseActivity() {
is InvitationsViewModel.InvitationActionSuccessState -> { is InvitationsViewModel.InvitationActionSuccessState -> {
if (state.action == ActionEnum.ACCEPT) { if (state.action == ActionEnum.ACCEPT) {
// val bundle = Bundle() val bundle = Bundle()
// bundle.putString(BundleKeys.KEY_ROOM_TOKEN, ????) // ??? bundle.putString(BundleKeys.KEY_ROOM_TOKEN, state.invitation.localToken)
// val chatIntent = Intent(context, ChatActivity::class.java)
// val chatIntent = Intent(context, ChatActivity::class.java) chatIntent.putExtras(bundle)
// chatIntent.putExtras(bundle) chatIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
// chatIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) startActivity(chatIntent)
// startActivity(chatIntent)
val intent = Intent(this, ConversationsListActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
startActivity(intent)
} else { } else {
// adapter.currentList.remove(state.invitation) // adapter.currentList.remove(state.invitation)
// adapter.notifyDataSetChanged() // leads to UnsupportedOperationException ?! // adapter.notifyDataSetChanged() // leads to UnsupportedOperationException ?!

View File

@ -21,15 +21,15 @@
package com.nextcloud.talk.invitation.data package com.nextcloud.talk.invitation.data
data class Invitation( data class Invitation(
var id: Int, var id: Int = 0,
var userId: String, var state: Int = 0,
var state: Int, var localCloudId: String? = null,
var localRoomId: Int, var localToken: String? = null,
var accessToken: String?, var remoteAttendeeId: Int = 0,
var remoteServerUrl: String, var remoteServerUrl: String? = null,
var remoteToken: String, var remoteToken: String? = null,
var remoteAttendeeId: Int, var roomName: String? = null,
var inviterCloudId: String, var userId: String? = null,
var inviterDisplayName: String, var inviterCloudId: String? = null,
var roomName: String var inviterDisplayName: String? = null
) )

View File

@ -66,16 +66,16 @@ class InvitationsRepositoryImpl(private val ncApi: NcApi) :
filteredInvitations.map { invitation -> filteredInvitations.map { invitation ->
Invitation( Invitation(
invitation.id, invitation.id,
invitation.userId!!,
invitation.state, invitation.state,
invitation.localRoomId, invitation.localCloudId!!,
invitation.accessToken!!, invitation.localToken!!,
invitation.remoteAttendeeId,
invitation.remoteServerUrl!!, invitation.remoteServerUrl!!,
invitation.remoteToken!!, invitation.remoteToken!!,
invitation.remoteAttendeeId, invitation.roomName!!,
invitation.userId!!,
invitation.inviterCloudId!!, invitation.inviterCloudId!!,
invitation.inviterDisplayName!!, invitation.inviterDisplayName!!
invitation.roomName!!
) )
} }
) )

View File

@ -159,9 +159,7 @@ data class ChatMessage(
var hiddenByCollapse: Boolean = false, var hiddenByCollapse: Boolean = false,
var openWhenDownloaded: Boolean = true, var openWhenDownloaded: Boolean = true
var roomToken: String = ""
) : Parcelable, MessageContentType, MessageContentType.Image { ) : Parcelable, MessageContentType, MessageContentType.Image {

View File

@ -29,27 +29,28 @@ import kotlinx.parcelize.Parcelize
data class Invitation( data class Invitation(
@JsonField(name = ["id"]) @JsonField(name = ["id"])
var id: Int = 0, var id: Int = 0,
@JsonField(name = ["userId"])
var userId: String? = null,
@JsonField(name = ["state"]) @JsonField(name = ["state"])
var state: Int = 0, var state: Int = 0,
@JsonField(name = ["localRoomId"]) @JsonField(name = ["localCloudId"])
var localRoomId: Int = 0, var localCloudId: String? = null,
@JsonField(name = ["accessToken"]) @JsonField(name = ["localToken"])
var accessToken: String? = null, var localToken: String? = null,
@JsonField(name = ["remoteAttendeeId"])
var remoteAttendeeId: Int = 0,
@JsonField(name = ["remoteServerUrl"]) @JsonField(name = ["remoteServerUrl"])
var remoteServerUrl: String? = null, var remoteServerUrl: String? = null,
@JsonField(name = ["remoteToken"]) @JsonField(name = ["remoteToken"])
var remoteToken: String? = null, var remoteToken: String? = null,
@JsonField(name = ["remoteAttendeeId"]) @JsonField(name = ["roomName"])
var remoteAttendeeId: Int = 0, var roomName: String? = null,
@JsonField(name = ["userId"])
var userId: String? = null,
@JsonField(name = ["inviterCloudId"]) @JsonField(name = ["inviterCloudId"])
var inviterCloudId: String? = null, var inviterCloudId: String? = null,
@JsonField(name = ["inviterDisplayName"]) @JsonField(name = ["inviterDisplayName"])
var inviterDisplayName: String? = null, var inviterDisplayName: String? = null
@JsonField(name = ["roomName"])
var roomName: String? = null
) : Parcelable { ) : Parcelable {
// This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject' // This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
constructor() : this(0, null, 0, 0, null, null, null, 0, null, null, null) constructor() : this(0, 0, null, null, 0, null, null, null, null, null, null)
} }

View File

@ -138,7 +138,7 @@ class MessageUtils(val context: Context) {
themingContext, themingContext,
messageStringInternal, messageStringInternal,
id!!, id!!,
message.roomToken, message.token,
individualHashMap["name"]!!, individualHashMap["name"]!!,
individualHashMap["type"]!!, individualHashMap["type"]!!,
message.activeUser!!, message.activeUser!!,