mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-21 00:52:43 +02:00
#1098 - Various small tweaks.
This commit is contained in:
+7
-1
@@ -23,6 +23,8 @@ import SwiftUI
|
||||
enum MockUserSuggestionScreenState: MockScreenState, CaseIterable {
|
||||
case multipleResults
|
||||
|
||||
static private var members: [RoomMembersProviderMember]!
|
||||
|
||||
var screenType: Any.Type {
|
||||
MockUserSuggestionScreenState.self
|
||||
}
|
||||
@@ -46,7 +48,11 @@ enum MockUserSuggestionScreenState: MockScreenState, CaseIterable {
|
||||
@available(iOS 14.0, *)
|
||||
extension MockUserSuggestionScreenState: RoomMembersProviderProtocol {
|
||||
func fetchMembers(_ members: ([RoomMembersProviderMember]) -> Void) {
|
||||
members(generateUsersWithCount(10))
|
||||
if Self.members == nil {
|
||||
Self.members = generateUsersWithCount(10)
|
||||
}
|
||||
|
||||
members(Self.members)
|
||||
}
|
||||
|
||||
private func generateUsersWithCount(_ count: UInt) -> [RoomMembersProviderMember] {
|
||||
|
||||
@@ -74,21 +74,13 @@ class UserSuggestionService: UserSuggestionServiceProtocol {
|
||||
// MARK: - UserSuggestionServiceProtocol
|
||||
|
||||
func processTextMessage(_ textMessage: String?) {
|
||||
self.items.send([])
|
||||
self.currentTextTriggerSubject.send(nil)
|
||||
|
||||
guard let textMessage = textMessage, textMessage.count > 0 else {
|
||||
return
|
||||
}
|
||||
|
||||
let components = textMessage.components(separatedBy: .whitespaces)
|
||||
|
||||
guard let lastComponent = components.last else {
|
||||
return
|
||||
}
|
||||
|
||||
// Partial username should start with one and only one "@" character
|
||||
guard lastComponent.prefix(while: { $0 == "@" }).count == 1 else {
|
||||
guard let textMessage = textMessage,
|
||||
textMessage.count > 0,
|
||||
let lastComponent = textMessage.components(separatedBy: .whitespaces).last,
|
||||
lastComponent.prefix(while: { $0 == "@" }).count == 1 // Partial username should start with one and only one "@" character
|
||||
else {
|
||||
self.items.send([])
|
||||
self.currentTextTriggerSubject.send(nil)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,11 @@ import SwiftUI
|
||||
|
||||
@available(iOS 14.0, *)
|
||||
struct UserSuggestionList: View {
|
||||
private struct Constants {
|
||||
static let rowHeight: CGFloat = 60.0
|
||||
static let maxHeight: CGFloat = 300.0
|
||||
static let listItemPadding: CGFloat = 4.0
|
||||
}
|
||||
|
||||
// MARK: - Properties
|
||||
|
||||
@@ -30,9 +35,6 @@ struct UserSuggestionList: View {
|
||||
// MARK: Public
|
||||
|
||||
@ObservedObject var viewModel: UserSuggestionViewModel.Context
|
||||
// FIXME: This should be dynamic
|
||||
let rowHeight: CGFloat = 60.0
|
||||
let maxHeight: CGFloat = 300.0
|
||||
|
||||
var body: some View {
|
||||
BackgroundView {
|
||||
@@ -45,13 +47,12 @@ struct UserSuggestionList: View {
|
||||
displayName: item.displayName,
|
||||
userId: item.id
|
||||
)
|
||||
.padding([.top, .bottom], 4.0)
|
||||
.padding([.top, .bottom], Constants.listItemPadding)
|
||||
}
|
||||
}
|
||||
.listStyle(PlainListStyle())
|
||||
.environment(\.defaultMinListRowHeight, rowHeight)
|
||||
.frame(height: min(maxHeight, rowHeight * CGFloat(viewModel.viewState.items.count)))
|
||||
// .frame(maxHeight: maxHeight)
|
||||
.environment(\.defaultMinListRowHeight, Constants.rowHeight)
|
||||
.frame(height: min(Constants.maxHeight, Constants.rowHeight * CGFloat(viewModel.viewState.items.count)))
|
||||
.id(UUID()) // Rebuild the whole list on item changes. Fixes performance issues.
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user