Remove the protocol for SpaceServiceRoom given its a struct type. (#5000)

* Remove the protocol for SpaceServiceRoom given its a struct type.

* Fix a few missed mocks in the unit tests.
This commit is contained in:
Doug
2026-01-26 09:45:46 +00:00
committed by GitHub
parent 3b231339cd
commit 06f37dacae
46 changed files with 459 additions and 545 deletions
@@ -22,14 +22,14 @@ struct SpaceScreenCoordinatorParameters {
enum SpaceScreenCoordinatorAction {
case selectSpace(SpaceRoomListProxyProtocol)
case selectUnjoinedSpace(SpaceServiceRoomProtocol)
case selectUnjoinedSpace(SpaceServiceRoom)
case selectRoom(roomID: String)
case leftSpace
case displayMembers(roomProxy: JoinedRoomProxyProtocol)
case displaySpaceSettings(roomProxy: JoinedRoomProxyProtocol)
case displayRolesAndPermissions(roomProxy: JoinedRoomProxyProtocol)
case addExistingChildren
case displayCreateChildRoomFlow(space: SpaceServiceRoomProtocol)
case displayCreateChildRoomFlow(space: SpaceServiceRoom)
}
final class SpaceScreenCoordinator: CoordinatorProtocol {
@@ -10,24 +10,24 @@ import SwiftUI
enum SpaceScreenViewModelAction {
case selectSpace(SpaceRoomListProxyProtocol)
case selectUnjoinedSpace(SpaceServiceRoomProtocol)
case selectUnjoinedSpace(SpaceServiceRoom)
case selectRoom(roomID: String)
case leftSpace
case presentRolesAndPermissions(roomProxy: JoinedRoomProxyProtocol)
case displayMembers(roomProxy: JoinedRoomProxyProtocol)
case displaySpaceSettings(roomProxy: JoinedRoomProxyProtocol)
case addExistingChildren
case displayCreateChildRoomFlow(space: SpaceServiceRoomProtocol)
case displayCreateChildRoomFlow(space: SpaceServiceRoom)
}
struct SpaceScreenViewState: BindableState {
var space: SpaceServiceRoomProtocol
var space: SpaceServiceRoom
var permalink: URL?
var roomProxy: JoinedRoomProxyProtocol?
var paginationState: PaginationState = .idle
var rooms: [SpaceServiceRoomProtocol]
var rooms: [SpaceServiceRoom]
var selectedSpaceRoomID: String?
var joiningRoomIDs: Set<String> = []
@@ -47,7 +47,7 @@ struct SpaceScreenViewState: BindableState {
rooms.isEmpty && paginationState == .endReached && canEditChildren
}
var visibleRooms: [SpaceServiceRoomProtocol] {
var visibleRooms: [SpaceServiceRoom] {
if editMode == .inactive {
rooms
} else {
@@ -182,7 +182,7 @@ class SpaceScreenViewModel: SpaceScreenViewModelType, SpaceScreenViewModelProtoc
}
}
private func join(_ spaceServiceRoom: SpaceServiceRoomProtocol) async {
private func join(_ spaceServiceRoom: SpaceServiceRoom) async {
state.joiningRoomIDs.insert(spaceServiceRoom.id)
defer { state.joiningRoomIDs.remove(spaceServiceRoom.id) }
@@ -194,7 +194,7 @@ class SpaceScreenViewModel: SpaceScreenViewModelType, SpaceScreenViewModelProtoc
// We don't want to show the space room after joining it this way 🤷‍♂️
}
private func selectSpace(_ spaceServiceRoom: SpaceServiceRoomProtocol) async {
private func selectSpace(_ spaceServiceRoom: SpaceServiceRoom) async {
switch await spaceServiceProxy.spaceRoomList(spaceID: spaceServiceRoom.id) {
case .success(let spaceRoomListProxy):
actionsSubject.send(.selectSpace(spaceRoomListProxy))
@@ -210,15 +210,15 @@ struct SpaceScreen_Previews: PreviewProvider, TestablePreview {
appSettings.spaceSettingsEnabled = true
appSettings.createSpaceEnabled = true
let spaceServiceRoom = SpaceServiceRoomMock(.init(id: "!eng-space:matrix.org",
name: "Engineering Team",
isSpace: true,
childrenCount: 30,
joinedMembersCount: 76,
heroes: [.mockDan, .mockBob, .mockCharlie, .mockVerbose],
topic: "Description of the space goes right here. Lorem ipsum dolor sit amet consectetur. Leo viverra morbi habitant in.",
canonicalAlias: "#engineering-team:element.io",
joinRule: .knockRestricted(rules: [.roomMembership(roomId: "")])))
let spaceServiceRoom = SpaceServiceRoom.mock(id: "!eng-space:matrix.org",
name: "Engineering Team",
isSpace: true,
childrenCount: 30,
joinedMembersCount: 76,
heroes: [.mockDan, .mockBob, .mockCharlie, .mockVerbose],
topic: "Description of the space goes right here. Lorem ipsum dolor sit amet consectetur. Leo viverra morbi habitant in.",
canonicalAlias: "#engineering-team:element.io",
joinRule: .knockRestricted(rules: [.roomMembership(roomId: "")]))
let spaceRoomListProxy = SpaceRoomListProxyMock(.init(spaceServiceRoom: spaceServiceRoom,
initialSpaceRooms: isNewSpace ? [] : .mockSpaceList))