mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-29 12:46:58 +02:00
Enable user mentions in Rich Text Editor
This commit is contained in:
@@ -229,12 +229,14 @@ enum ComposerViewAction: Equatable {
|
||||
case contentDidChange(isEmpty: Bool)
|
||||
case linkTapped(linkAction: LinkAction)
|
||||
case storeSelection(selection: NSRange)
|
||||
case suggestion(pattern: SuggestionPattern?)
|
||||
}
|
||||
|
||||
enum ComposerViewModelResult: Equatable {
|
||||
case cancel
|
||||
case contentDidChange(isEmpty: Bool)
|
||||
case linkTapped(LinkAction: LinkAction)
|
||||
case suggestion(pattern: SuggestionPattern?)
|
||||
}
|
||||
|
||||
final class LinkActionWrapper: NSObject {
|
||||
@@ -245,3 +247,12 @@ final class LinkActionWrapper: NSObject {
|
||||
super.init()
|
||||
}
|
||||
}
|
||||
|
||||
final class SuggestionPatternWrapper: NSObject {
|
||||
let suggestionPattern: SuggestionPattern?
|
||||
|
||||
init(_ suggestionPattern: SuggestionPattern?) {
|
||||
self.suggestionPattern = suggestionPattern
|
||||
super.init()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -248,6 +248,9 @@ struct Composer: View {
|
||||
wysiwygViewModel.maximised = false
|
||||
}
|
||||
}
|
||||
.onChange(of: wysiwygViewModel.suggestionPattern) { newValue in
|
||||
sendMentionPattern(pattern: newValue)
|
||||
}
|
||||
}
|
||||
|
||||
private func storeCurrentSelection() {
|
||||
@@ -258,6 +261,10 @@ struct Composer: View {
|
||||
let linkAction = wysiwygViewModel.getLinkAction()
|
||||
viewModel.send(viewAction: .linkTapped(linkAction: linkAction))
|
||||
}
|
||||
|
||||
private func sendMentionPattern(pattern: SuggestionPattern?) {
|
||||
viewModel.send(viewAction: .suggestion(pattern: pattern))
|
||||
}
|
||||
}
|
||||
|
||||
private extension WysiwygComposerViewModel {
|
||||
|
||||
@@ -90,6 +90,8 @@ final class ComposerViewModel: ComposerViewModelType, ComposerViewModelProtocol
|
||||
callback?(.linkTapped(LinkAction: linkAction))
|
||||
case let .storeSelection(selection):
|
||||
selectionToRestore = selection
|
||||
case let .suggestion(pattern: pattern):
|
||||
callback?(.suggestion(pattern: pattern))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user