mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-19 16:13:42 +02:00
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:
+50
@@ -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)
|
||||
]
|
||||
}))
|
||||
}
|
||||
}
|
||||
+23
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user