diff --git a/app/build.gradle b/app/build.gradle index 8f0ec3513e5480b4450e49fa07e23e6ec6899c01..33720e9d105083c9efb1879b176b99929e27783c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -75,7 +75,7 @@ dependencies { implementation 'androidx.constraintlayout:constraintlayout:2.1.4' //Matrix - implementation 'org.matrix.android:matrix-sdk-android:1.4.17' + implementation 'org.matrix.android:matrix-sdk-android:1.4.27' //Kotlin implementation "androidx.core:core-ktx:1.8.0" diff --git a/app/src/main/java/org/futo/circles/extensions/MatrixUserRoleExtensions.kt b/app/src/main/java/org/futo/circles/extensions/MatrixUserRoleExtensions.kt index 897cb54dd00cd869e79afce51f712f63a2933bcc..76b51d437879b79c49d7ff16413d21ee7c5b8ceb 100644 --- a/app/src/main/java/org/futo/circles/extensions/MatrixUserRoleExtensions.kt +++ b/app/src/main/java/org/futo/circles/extensions/MatrixUserRoleExtensions.kt @@ -2,6 +2,7 @@ package org.futo.circles.extensions import org.futo.circles.R import org.futo.circles.provider.MatrixSessionProvider +import org.matrix.android.sdk.api.query.QueryStringValue import org.matrix.android.sdk.api.session.events.model.EventType import org.matrix.android.sdk.api.session.events.model.toModel import org.matrix.android.sdk.api.session.getRoom @@ -63,7 +64,7 @@ fun PowerLevelsContent.getCurrentUserPowerLevel(): Int { fun getPowerLevelContent(roomId: String): PowerLevelsContent? { val session = MatrixSessionProvider.currentSession ?: return null val room = session.getRoom(roomId) ?: return null - return room.getStateEvent(EventType.STATE_ROOM_POWER_LEVELS)?.content.toModel<PowerLevelsContent>() + return room.getStateEvent(EventType.STATE_ROOM_POWER_LEVELS, QueryStringValue.IsEmpty)?.content.toModel<PowerLevelsContent>() } fun getCurrentUserPowerLevel(roomId: String): Int { diff --git a/app/src/main/java/org/futo/circles/feature/room/manage_members/ManageMembersDataSource.kt b/app/src/main/java/org/futo/circles/feature/room/manage_members/ManageMembersDataSource.kt index a84723947afadda6cee0423c4a52a31cee55931e..0120632fdc53465d1ab920de66379dc75890030f 100644 --- a/app/src/main/java/org/futo/circles/feature/room/manage_members/ManageMembersDataSource.kt +++ b/app/src/main/java/org/futo/circles/feature/room/manage_members/ManageMembersDataSource.kt @@ -3,6 +3,8 @@ package org.futo.circles.feature.room.manage_members import android.content.Context import androidx.lifecycle.asFlow +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.* import org.futo.circles.R import org.futo.circles.core.ExpandableItemsDataSource import org.futo.circles.extensions.createResult @@ -11,8 +13,6 @@ import org.futo.circles.mapping.toGroupMemberListItem import org.futo.circles.mapping.toInvitedUserListItem import org.futo.circles.model.* import org.futo.circles.provider.MatrixSessionProvider -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.flow.* import org.matrix.android.sdk.api.query.QueryStringValue import org.matrix.android.sdk.api.session.events.model.EventType import org.matrix.android.sdk.api.session.events.model.toContent @@ -28,7 +28,7 @@ class ManageMembersDataSource( private val roomId: String, private val type: CircleRoomTypeArg, private val context: Context -):ExpandableItemsDataSource { +) : ExpandableItemsDataSource { private val session = MatrixSessionProvider.currentSession private val room = session?.getRoom(roomId) @@ -62,7 +62,9 @@ class ManageMembersDataSource( } private fun getRoomMembersRoleFlow(): Flow<PowerLevelsContent> { - return room?.stateService()?.getStateEventLive(EventType.STATE_ROOM_POWER_LEVELS)?.asFlow() + return room?.stateService() + ?.getStateEventLive(EventType.STATE_ROOM_POWER_LEVELS, QueryStringValue.IsEmpty) + ?.asFlow() ?.mapNotNull { it.getOrNull()?.content.toModel<PowerLevelsContent>() } ?: flowOf() } diff --git a/app/src/main/java/org/futo/circles/feature/timeline/data_source/TimelineDataSource.kt b/app/src/main/java/org/futo/circles/feature/timeline/data_source/TimelineDataSource.kt index e1776757a75d07bde816995cf1c8d71d5ba9f6b7..26343accecaf8f984d06935c737534d6e4d7f7f0 100644 --- a/app/src/main/java/org/futo/circles/feature/timeline/data_source/TimelineDataSource.kt +++ b/app/src/main/java/org/futo/circles/feature/timeline/data_source/TimelineDataSource.kt @@ -9,6 +9,7 @@ import org.futo.circles.model.Post import org.futo.circles.provider.MatrixSessionProvider import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.mapNotNull +import org.matrix.android.sdk.api.query.QueryStringValue import org.matrix.android.sdk.api.session.events.model.EventType import org.matrix.android.sdk.api.session.events.model.toModel import org.matrix.android.sdk.api.session.getRoom @@ -30,7 +31,7 @@ class TimelineDataSource( val roomTitleLiveData = room?.getRoomSummaryLive()?.map { it.getOrNull()?.nameOrId() } val timelineEventsLiveData = MutableLiveData<List<Post>>() val accessLevelFlow = - room?.stateService()?.getStateEventLive(EventType.STATE_ROOM_POWER_LEVELS)?.asFlow() + room?.stateService()?.getStateEventLive(EventType.STATE_ROOM_POWER_LEVELS, QueryStringValue.IsEmpty)?.asFlow() ?.mapNotNull { it.getOrNull()?.content.toModel<PowerLevelsContent>() } ?: flowOf() private var timelines: MutableList<Timeline> = mutableListOf() diff --git a/app/src/main/java/org/futo/circles/provider/MatrixSessionProvider.kt b/app/src/main/java/org/futo/circles/provider/MatrixSessionProvider.kt index cd208f974cd7e293fb142d71156b6ad88078132f..a2904882a2c36b80e36b2391d3889de7a0e54606 100644 --- a/app/src/main/java/org/futo/circles/provider/MatrixSessionProvider.kt +++ b/app/src/main/java/org/futo/circles/provider/MatrixSessionProvider.kt @@ -30,7 +30,7 @@ object MatrixSessionProvider { private fun startSession(session: Session, listener: Session.Listener? = null) { listener?.let { session.addListener(it) } - currentSession = session.apply { open(); startSync(true) } + currentSession = session.apply { open(); syncService().startSync(true) } } suspend fun awaitForSessionStart(session: Session) =