4850 bring leaving space experience in line with web (#6062)

* Bring leaving space experience in line with Web #4850

- Done
This commit is contained in:
Gil Eluard
2022-04-27 13:31:14 +02:00
committed by GitHub
parent 2b5989bc9b
commit 987eb7d5c0
23 changed files with 537 additions and 60 deletions
@@ -0,0 +1,50 @@
//
// Copyright 2022 New Vector Ltd
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import Foundation
class MatrixItemChooserDirectChildrenDataSource: MatrixItemChooserDataSource {
// MARK: - Private
private let parentId: String
// MARK: - Setup
init(parentId: String) {
self.parentId = parentId
}
// MARK: - MatrixItemChooserDataSource
var preselectedItemIds: Set<String>? { nil }
func sections(with session: MXSession, completion: @escaping (Result<[MatrixListItemSectionData], Error>) -> Void) {
let space = session.spaceService.getSpace(withId: parentId)
let children: [MatrixListItemData] = space?.childRoomIds.compactMap({ roomId in
guard let room = session.room(withRoomId: roomId), !room.isDirect else {
return nil
}
return MatrixListItemData(mxRoom: room, spaceService: session.spaceService)
}) ?? []
completion(Result(catching: {
[
MatrixListItemSectionData(items: children)
]
}))
}
}
@@ -61,6 +61,13 @@ class MatrixItemChooserService: MatrixItemChooserServiceProtocol {
var loadingText: String? {
itemsProcessor.loadingText
}
var itemCount: Int {
var itemCount = 0
for section in sections {
itemCount += section.items.count
}
return itemCount
}
// MARK: - Setup
@@ -118,6 +125,22 @@ class MatrixItemChooserService: MatrixItemChooserServiceProtocol {
}
}
}
func selectAllItems() {
var newSelection: Set<String> = Set()
for section in sections {
for item in section.items {
newSelection.insert(item.id)
}
}
self.selectedItemIds = newSelection
selectedItemIdsSubject.send(selectedItemIds)
}
func deselectAllItems() {
self.selectedItemIds = Set()
selectedItemIdsSubject.send(selectedItemIds)
}
// MARK: - Private