Files
letro-ios/ElementX/Sources/Mocks/InvitedRoomProxyMock.swift
2026-05-06 13:04:11 +02:00

91 lines
2.9 KiB
Swift

//
// Copyright 2025 Element Creations Ltd.
// Copyright 2024-2025 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
// Please see LICENSE files in the repository root for full details.
//
import Combine
import Foundation
import MatrixRustSDK
@MainActor
struct InvitedRoomProxyMockConfiguration {
var id = UUID().uuidString
var name: String?
var avatarURL: URL?
var isSpace = false
var members: [RoomMemberProxyMock] = .allMembers
var inviter: RoomMemberProxyMock = .mockAlice
}
extension InvitedRoomProxyMock {
@MainActor
convenience init(_ configuration: InvitedRoomProxyMockConfiguration) {
self.init()
id = configuration.id
inviter = configuration.inviter
info = RoomInfoProxyMock(configuration)
rejectInvitationReturnValue = .success(())
}
}
extension RoomInfoProxyMock {
@MainActor convenience init(_ configuration: InvitedRoomProxyMockConfiguration) {
self.init()
id = configuration.id
isEncrypted = false
creators = []
displayName = configuration.name
rawName = nil
topic = nil
avatarURL = configuration.avatarURL
isDirect = false
isSpace = configuration.isSpace
successor = nil
isFavourite = false
canonicalAlias = nil
alternativeAliases = []
membership = .knocked
inviter = .init(configuration.inviter)
heroes = []
activeMembersCount = configuration.members.filter { $0.membership == .join || $0.membership == .invite }.count
invitedMembersCount = configuration.members.filter { $0.membership == .invite }.count
joinedMembersCount = configuration.members.filter { $0.membership == .join }.count
highlightCount = 0
notificationCount = 0
cachedUserDefinedNotificationMode = nil
hasRoomCall = false
activeRoomCallParticipants = []
isMarkedUnread = false
unreadMessagesCount = 0
unreadNotificationsCount = 0
unreadMentionsCount = 0
pinnedEventIDs = []
joinRule = .invite
historyVisibility = .shared
powerLevels = RoomPowerLevelsProxyMock(configuration: .init())
}
}
private extension RoomMember {
init(_ proxy: RoomMemberProxyProtocol) {
self.init(userId: proxy.userID,
displayName: proxy.displayName,
avatarUrl: proxy.avatarURL?.absoluteString,
membership: proxy.membership,
isNameAmbiguous: proxy.disambiguatedDisplayName != proxy.displayName,
powerLevel: proxy.powerLevel.rustPowerLevel,
isIgnored: proxy.isIgnored,
suggestedRoleForPowerLevel: proxy.role.rustRole,
membershipChangeReason: proxy.membershipChangeReason,
isServiceMember: false)
}
}