mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-07-31 13:49:59 +00:00
ios: correct list of members possible to mention in support scope (#5870)
This commit is contained in:
@@ -89,7 +89,7 @@ struct ChatView: View {
|
||||
ZStack(alignment: .bottomTrailing) {
|
||||
chatItemsList()
|
||||
if let groupInfo = chat.chatInfo.groupInfo, !composeState.message.isEmpty {
|
||||
GroupMentionsView(groupInfo: groupInfo, composeState: $composeState, selectedRange: $selectedRange, keyboardVisible: $keyboardVisible)
|
||||
GroupMentionsView(im: im, groupInfo: groupInfo, composeState: $composeState, selectedRange: $selectedRange, keyboardVisible: $keyboardVisible)
|
||||
}
|
||||
FloatingButtons(im: im, theme: theme, scrollView: scrollView, chat: chat, loadingMoreItems: $loadingMoreItems, loadingTopItems: $loadingTopItems, requestedTopScroll: $requestedTopScroll, loadingBottomItems: $loadingBottomItems, requestedBottomScroll: $requestedBottomScroll, animatedScrollingInProgress: $animatedScrollingInProgress, listState: scrollView.listState, model: floatingButtonModel, reloadItems: {
|
||||
mergedItems.boxedValue = MergedItems.create(im, revealedItems)
|
||||
|
||||
@@ -17,6 +17,7 @@ let MAX_VISIBLE_MEMBER_ROWS: CGFloat = 4.8
|
||||
struct GroupMentionsView: View {
|
||||
@EnvironmentObject var m: ChatModel
|
||||
@EnvironmentObject var theme: AppTheme
|
||||
var im: ItemsModel
|
||||
var groupInfo: GroupInfo
|
||||
@Binding var composeState: ComposeState
|
||||
@Binding var selectedRange: NSRange
|
||||
@@ -93,12 +94,31 @@ struct GroupMentionsView: View {
|
||||
currentMessage = composeState.message
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func contextMemberFilter(_ member: GroupMember) -> Bool {
|
||||
switch im.secondaryIMFilter {
|
||||
case nil:
|
||||
return true
|
||||
case let .groupChatScopeContext(groupScopeInfo):
|
||||
switch (groupScopeInfo) {
|
||||
case let .memberSupport(groupMember_):
|
||||
if let scopeMember = groupMember_ {
|
||||
return member.memberRole >= .moderator || member.groupMemberId == scopeMember.groupMemberId
|
||||
} else {
|
||||
return member.memberRole >= .moderator
|
||||
}
|
||||
}
|
||||
case .msgContentTagContext:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
private func filteredMembers() -> [GMember] {
|
||||
let s = mentionName.lowercased()
|
||||
return s.isEmpty
|
||||
? sortedMembers
|
||||
: sortedMembers.filter { $0.wrapped.localAliasAndFullName.localizedLowercase.contains(s) }
|
||||
return sortedMembers.filter {
|
||||
contextMemberFilter($0.wrapped)
|
||||
&& (s.isEmpty || $0.wrapped.localAliasAndFullName.localizedLowercase.contains(s))
|
||||
}
|
||||
}
|
||||
|
||||
private func messageChanged(_ msg: String, _ parsedMsg: [FormattedText], _ range: NSRange) {
|
||||
|
||||
Reference in New Issue
Block a user