forked from shadowfacts/Tusker
parent
34dccf1f37
commit
7117ce6320
|
@ -57,6 +57,8 @@ class ComposeAttachmentsViewController: UITableViewController {
|
||||||
|
|
||||||
heightConstraint = tableView.heightAnchor.constraint(equalToConstant: tableView.contentSize.height)
|
heightConstraint = tableView.heightAnchor.constraint(equalToConstant: tableView.contentSize.height)
|
||||||
heightConstraint.isActive = true
|
heightConstraint.isActive = true
|
||||||
|
|
||||||
|
pasteConfiguration = UIPasteConfiguration(forAccepting: UIImage.self)
|
||||||
}
|
}
|
||||||
|
|
||||||
override func viewWillAppear(_ animated: Bool) {
|
override func viewWillAppear(_ animated: Bool) {
|
||||||
|
@ -65,8 +67,11 @@ class ComposeAttachmentsViewController: UITableViewController {
|
||||||
}
|
}
|
||||||
|
|
||||||
func setAttachments(_ attachments: [CompositionAttachment]) {
|
func setAttachments(_ attachments: [CompositionAttachment]) {
|
||||||
|
tableView.performBatchUpdates({
|
||||||
|
tableView.deleteRows(at: self.attachments.indices.map { IndexPath(row: $0, section: 0) }, with: .automatic)
|
||||||
self.attachments = attachments
|
self.attachments = attachments
|
||||||
tableView.reloadData()
|
tableView.insertRows(at: self.attachments.indices.map { IndexPath(row: $0, section: 0) }, with: .automatic)
|
||||||
|
})
|
||||||
updateHeightConstraint()
|
updateHeightConstraint()
|
||||||
delegate?.composeRequiresAttachmentDescriptionsDidChange()
|
delegate?.composeRequiresAttachmentDescriptionsDidChange()
|
||||||
}
|
}
|
||||||
|
@ -89,6 +94,35 @@ class ComposeAttachmentsViewController: UITableViewController {
|
||||||
cell.setEnabled(isAddAttachmentsButtonEnabled())
|
cell.setEnabled(isAddAttachmentsButtonEnabled())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override func canPaste(_ itemProviders: [NSItemProvider]) -> Bool {
|
||||||
|
switch mastodonController.instance.instanceType {
|
||||||
|
case .pleroma:
|
||||||
|
return true
|
||||||
|
case .mastodon:
|
||||||
|
return itemProviders.count + attachments.count <= 4
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override func paste(itemProviders: [NSItemProvider]) {
|
||||||
|
for provider in itemProviders {
|
||||||
|
provider.loadObject(ofClass: UIImage.self) { (object, error) in
|
||||||
|
if let error = error {
|
||||||
|
fatalError("Couldn't load image from NSItemProvider: \(error)")
|
||||||
|
}
|
||||||
|
guard let image = object as? UIImage else {
|
||||||
|
fatalError("Couldn't convert object from NSItemProvider to UIImage")
|
||||||
|
}
|
||||||
|
|
||||||
|
DispatchQueue.main.async {
|
||||||
|
let attachment = CompositionAttachment(data: .image(image))
|
||||||
|
self.attachments.append(attachment)
|
||||||
|
self.tableView.insertRows(at: [IndexPath(row: self.attachments.count - 1, section: 0)], with: .automatic)
|
||||||
|
self.updateHeightConstraint()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func uploadAll(stepProgress: @escaping () -> Void, completion: @escaping (_ success: Bool, _ uploadedAttachments: [Attachment]) -> Void) {
|
func uploadAll(stepProgress: @escaping () -> Void, completion: @escaping (_ success: Bool, _ uploadedAttachments: [Attachment]) -> Void) {
|
||||||
let group = DispatchGroup()
|
let group = DispatchGroup()
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,8 @@ class ComposeViewController: UIViewController {
|
||||||
composeAttachmentsViewController.tableView.translatesAutoresizingMaskIntoConstraints = false
|
composeAttachmentsViewController.tableView.translatesAutoresizingMaskIntoConstraints = false
|
||||||
embedChild(composeAttachmentsViewController, in: composeAttachmentsContainerView)
|
embedChild(composeAttachmentsViewController, in: composeAttachmentsContainerView)
|
||||||
|
|
||||||
|
pasteConfiguration = composeAttachmentsViewController.pasteConfiguration
|
||||||
|
|
||||||
NotificationCenter.default.addObserver(self, selector: #selector(contentWarningTextFieldDidChange), name: UITextField.textDidChangeNotification, object: contentWarningTextField)
|
NotificationCenter.default.addObserver(self, selector: #selector(contentWarningTextFieldDidChange), name: UITextField.textDidChangeNotification, object: contentWarningTextField)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,6 +331,14 @@ class ComposeViewController: UIViewController {
|
||||||
xcbSession?.complete(with: .cancel)
|
xcbSession?.complete(with: .cancel)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override func canPaste(_ itemProviders: [NSItemProvider]) -> Bool {
|
||||||
|
return composeAttachmentsViewController.canPaste(itemProviders)
|
||||||
|
}
|
||||||
|
|
||||||
|
override func paste(itemProviders: [NSItemProvider]) {
|
||||||
|
composeAttachmentsViewController.paste(itemProviders: itemProviders)
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - Interaction
|
// MARK: - Interaction
|
||||||
|
|
||||||
@objc func showSaveAndClosePrompt() {
|
@objc func showSaveAndClosePrompt() {
|
||||||
|
|
Loading…
Reference in New Issue