Adapt to new DM definition changes in the SDK (#6748)
* Set `DmRoomDefinition.TwoPeople` in `ClientBuilder`. This applies the 'direct and with at most 2 non-service members' rule to what the SDK should consider a DM. * Map `RoomInfo.isDm` from the SDK * Map `NotificationData.isDm` from `NotificationInfo.roomInfo.isDm` * Remove `RoomIsDmCheck` file as its extension functions are now redundant. Move `Room.isDm` helper function to `BaseRoom`. * Map `isDm` in `SpaceRoom` from the SDK too * Replace `isDirect` with `isDm` where possible * Map `RoomMember.isServiceMember` from the SDK and use it to tell apart normal members of a room from service members (i.e. `RoomMembersState.getDirectRoomMember`)
This commit is contained in:
parent
a38b7a61ad
commit
4975f61eb8
66 changed files with 115 additions and 232 deletions
|
|
@ -42,7 +42,6 @@ import io.element.android.libraries.matrix.api.encryption.identity.IdentityState
|
|||
import io.element.android.libraries.matrix.api.notificationsettings.NotificationSettingsService
|
||||
import io.element.android.libraries.matrix.api.room.JoinedRoom
|
||||
import io.element.android.libraries.matrix.api.room.RoomMember
|
||||
import io.element.android.libraries.matrix.api.room.isDm
|
||||
import io.element.android.libraries.matrix.api.room.join.JoinRule
|
||||
import io.element.android.libraries.matrix.api.room.powerlevels.canEditRolesAndPermissions
|
||||
import io.element.android.libraries.matrix.api.room.powerlevels.permissionsAsState
|
||||
|
|
@ -53,7 +52,6 @@ import io.element.android.libraries.preferences.api.store.AppPreferencesStore
|
|||
import io.element.android.libraries.ui.strings.CommonStrings
|
||||
import io.element.android.services.analytics.api.AnalyticsService
|
||||
import io.element.android.services.analyticsproviders.api.trackers.captureInteraction
|
||||
import kotlinx.collections.immutable.toImmutableList
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
|
|
@ -145,7 +143,7 @@ class RoomDetailsPresenter(
|
|||
}
|
||||
RoomDetailsEvent.UnmuteNotification -> {
|
||||
scope.launch(dispatchers.io) {
|
||||
notificationSettingsService.unmuteRoom(room.roomId, isEncrypted, room.isOneToOne)
|
||||
notificationSettingsService.unmuteRoom(room.roomId, isEncrypted, room.isDm())
|
||||
}
|
||||
}
|
||||
is RoomDetailsEvent.SetFavorite -> scope.setFavorite(event.isFavorite)
|
||||
|
|
@ -184,7 +182,7 @@ class RoomDetailsPresenter(
|
|||
isFavorite = isFavorite,
|
||||
displayRolesAndPermissionsSettings = !isDm && permissions.canEditRolesAndPermissions,
|
||||
isPublic = joinRule == JoinRule.Public,
|
||||
heroes = roomInfo.heroes.toImmutableList(),
|
||||
heroes = roomInfo.heroes,
|
||||
pinnedMessagesCount = pinnedMessagesCount,
|
||||
snackbarMessage = snackbarMessage,
|
||||
canShowKnockRequests = canShowKnockRequests,
|
||||
|
|
|
|||
|
|
@ -74,6 +74,7 @@ fun aDmRoomMember(
|
|||
isIgnored: Boolean = false,
|
||||
role: RoomMember.Role = RoomMember.Role.User,
|
||||
membershipChangeReason: String? = null,
|
||||
isServiceMember: Boolean = false,
|
||||
) = RoomMember(
|
||||
userId = userId,
|
||||
displayName = displayName,
|
||||
|
|
@ -83,7 +84,8 @@ fun aDmRoomMember(
|
|||
powerLevel = powerLevel,
|
||||
isIgnored = isIgnored,
|
||||
role = role,
|
||||
membershipChangeReason = membershipChangeReason
|
||||
membershipChangeReason = membershipChangeReason,
|
||||
isServiceMember = isServiceMember,
|
||||
)
|
||||
|
||||
fun aRoomDetailsState(
|
||||
|
|
|
|||
|
|
@ -128,6 +128,7 @@ fun aRoomMember(
|
|||
isIgnored: Boolean = false,
|
||||
role: RoomMember.Role = RoomMember.Role.User,
|
||||
membershipChangeReason: String? = null,
|
||||
isServiceMember: Boolean = false,
|
||||
) = RoomMember(
|
||||
userId = userId,
|
||||
displayName = displayName,
|
||||
|
|
@ -138,6 +139,7 @@ fun aRoomMember(
|
|||
isIgnored = isIgnored,
|
||||
role = role,
|
||||
membershipChangeReason = membershipChangeReason,
|
||||
isServiceMember = isServiceMember,
|
||||
)
|
||||
|
||||
fun aRoomMemberList() = persistentListOf(
|
||||
|
|
|
|||
|
|
@ -160,7 +160,7 @@ class RoomNotificationSettingsPresenter(
|
|||
suspend {
|
||||
val isEncrypted = room.info().isEncrypted ?: room.getUpdatedIsEncrypted().getOrThrow()
|
||||
pendingModeState.value = null
|
||||
notificationSettingsService.getRoomNotificationSettings(room.roomId, isEncrypted, room.isOneToOne).getOrThrow()
|
||||
notificationSettingsService.getRoomNotificationSettings(room.roomId, isEncrypted, room.isDm()).getOrThrow()
|
||||
}.runCatchingUpdatingState(roomNotificationSettings)
|
||||
}
|
||||
|
||||
|
|
@ -170,7 +170,7 @@ class RoomNotificationSettingsPresenter(
|
|||
val isEncrypted = room.info().isEncrypted ?: room.getUpdatedIsEncrypted().getOrThrow()
|
||||
defaultRoomNotificationMode.value = notificationSettingsService.getDefaultRoomNotificationMode(
|
||||
isEncrypted,
|
||||
room.isOneToOne
|
||||
room.isDm()
|
||||
).getOrThrow()
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ class RoomDetailsPresenterTest {
|
|||
givenRoomInfo(
|
||||
aRoomInfo(
|
||||
isEncrypted = true,
|
||||
isDirect = true,
|
||||
isDm = true,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
@ -284,7 +284,7 @@ class RoomDetailsPresenterTest {
|
|||
givenRoomInfo(
|
||||
aRoomInfo(
|
||||
isEncrypted = true,
|
||||
isDirect = true,
|
||||
isDm = true,
|
||||
)
|
||||
)
|
||||
}
|
||||
|
|
@ -307,7 +307,6 @@ class RoomDetailsPresenterTest {
|
|||
val myRoomMember = aRoomMember(A_SESSION_ID)
|
||||
val otherRoomMember = aRoomMember(A_USER_ID_2)
|
||||
val room = aJoinedRoom(
|
||||
isDirect = true,
|
||||
topic = null,
|
||||
roomPermissions = roomPermissions(),
|
||||
userDisplayNameResult = { Result.success(A_USER_NAME) },
|
||||
|
|
@ -325,7 +324,7 @@ class RoomDetailsPresenterTest {
|
|||
|
||||
givenRoomInfo(
|
||||
aRoomInfo(
|
||||
isDirect = true,
|
||||
isDm = true,
|
||||
activeMembersCount = 2,
|
||||
topic = null,
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue