Use suggestions window controller in share options view

Signed-off-by: Claudio Cambra <claudio.cambra@nextcloud.com>
This commit is contained in:
Claudio Cambra 2024-04-03 20:46:01 +08:00
parent 07b6391688
commit db20e44850
3 changed files with 25 additions and 6 deletions

View file

@ -35,6 +35,22 @@ class ShareOptionsView: NSView {
@IBOutlet private weak var circleShare: NSMenuItem!
@IBOutlet private weak var talkConversationShare: NSMenuItem!
var kit: NextcloudKit? {
didSet {
Logger.shareOptionsView.info("Setting up the kit.")
guard let kit = kit else {
Logger.shareOptionsView.error("Could not configure suggestions data source.")
return
}
suggestionsWindowController.dataSource = ShareeSuggestionsDataSource(kit: kit)
suggestionsWindowController.parentTextField = shareRecipientTextField
suggestionsTextFieldDelegate.suggestionsWindowController = suggestionsWindowController
shareRecipientTextField.delegate = suggestionsTextFieldDelegate
suggestionsWindowController.begin(for: shareRecipientTextField)
}
}
var dataSource: ShareTableViewDataSource?
var controller: ShareController? {
didSet {
@ -72,6 +88,8 @@ class ShareOptionsView: NSView {
}
}
private var cancellable: AnyCancellable?
private var suggestionsWindowController = SuggestionsWindowController()
private var suggestionsTextFieldDelegate = SuggestionsTextFieldDelegate()
private func update() {
guard let share = controller?.share else {
@ -161,7 +179,7 @@ class ShareOptionsView: NSView {
expirationDatePicker.isHidden = expirationDateCheckbox.state == .off
}
func setAllFields(enabled: Bool) {
private func setAllFields(enabled: Bool) {
shareTypePicker.isEnabled = enabled
shareRecipientTextField.isEnabled = enabled
labelTextField.isEnabled = enabled
@ -235,12 +253,12 @@ class ShareOptionsView: NSView {
Logger.shareOptionsView.info("Creating new share!")
guard let dataSource = dataSource,
let kit = dataSource.kit,
let kit = kit,
let itemServerRelativePath = dataSource.itemServerRelativePath
else {
Logger.shareOptionsView.error("Cannot create new share due to missing data.")
Logger.shareOptionsView.error("dataSource: \(self.dataSource)")
Logger.shareOptionsView.error("kit: \(self.dataSource?.kit)")
Logger.shareOptionsView.error("kit: \(self.kit)")
Logger.shareOptionsView.error(
"path: \(self.dataSource?.itemServerRelativePath ?? "")"
)

View file

@ -111,6 +111,8 @@ class ShareViewController: NSViewController, ShareViewDataSourceUIDelegate {
}
@IBAction func createShare(_ sender: Any) {
guard let kit = shareDataSource.kit else { return }
optionsView.kit = kit
optionsView.createMode = true
tableView.deselectAll(self)
if !splitView.arrangedSubviews.contains(optionsView) {
@ -137,11 +139,11 @@ class ShareViewController: NSViewController, ShareViewDataSourceUIDelegate {
}
splitView.removeArrangedSubview(optionsView)
optionsView.isHidden = true
}
func showOptions(share: NKShare) {
guard let kit = shareDataSource.kit else { return }
optionsView.kit = kit
optionsView.controller = ShareController(share: share, kit: kit)
if !splitView.arrangedSubviews.contains(optionsView) {
splitView.addArrangedSubview(optionsView)

View file

@ -8,11 +8,10 @@
import Foundation
import NextcloudKit
import OSLog
import SuggestionsTextFieldKit
class ShareeSuggestionsDataSource: SuggestionsDataSource {
let kit: NextcloudKit
var suggestions: [SuggestionsTextFieldKit.Suggestion] = []
var suggestions: [Suggestion] = []
var inputString: String = "" {
didSet { Task { await updateSuggestions() } }
}