forked from shadowfacts/Tusker
Add image descriptions
This commit is contained in:
parent
fc69b9684b
commit
3170b83b82
|
@ -1 +1 @@
|
||||||
Subproject commit b3653523af6b15fae5e3f8d425304c93d9bef9c7
|
Subproject commit cfece3083acfeda2f124a84dc35f268682681d49
|
|
@ -98,6 +98,7 @@ class ComposeViewController: UIViewController {
|
||||||
|
|
||||||
func addMedia(for image: UIImage) {
|
func addMedia(for image: UIImage) {
|
||||||
let mediaView = ComposeMediaView(image: image)
|
let mediaView = ComposeMediaView(image: image)
|
||||||
|
mediaView.delegate = self
|
||||||
mediaStackView.addArrangedSubview(mediaView)
|
mediaStackView.addArrangedSubview(mediaView)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -184,13 +185,13 @@ class ComposeViewController: UIViewController {
|
||||||
var attachments: [Attachment?] = []
|
var attachments: [Attachment?] = []
|
||||||
let group = DispatchGroup()
|
let group = DispatchGroup()
|
||||||
for view in mediaStackView.arrangedSubviews {
|
for view in mediaStackView.arrangedSubviews {
|
||||||
guard let imageView = view as? UIImageView,
|
guard let mediaView = view as? ComposeMediaView,
|
||||||
let image = imageView.image,
|
let image = mediaView.image,
|
||||||
let data = image.pngData() else { continue }
|
let data = image.pngData() else { continue }
|
||||||
let index = attachments.count
|
let index = attachments.count
|
||||||
attachments.append(nil)
|
attachments.append(nil)
|
||||||
group.enter()
|
group.enter()
|
||||||
let req = Media.upload(media: .png(data))
|
let req = Media.upload(media: .png(data), description: mediaView.mediaDescription)
|
||||||
MastodonController.shared.client.run(req) { result in
|
MastodonController.shared.client.run(req) { result in
|
||||||
guard case let .success(attachment, _) = result else { fatalError() }
|
guard case let .success(attachment, _) = result else { fatalError() }
|
||||||
attachments[index] = attachment
|
attachments[index] = attachment
|
||||||
|
@ -243,3 +244,18 @@ extension ComposeViewController: UIImagePickerControllerDelegate, UINavigationCo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extension ComposeViewController: ComposeMediaViewDelegate {
|
||||||
|
func editDescription(for media: ComposeMediaView) {
|
||||||
|
let alertController = UIAlertController(title: "Media Description", message: nil, preferredStyle: .alert)
|
||||||
|
alertController.addTextField { textField in
|
||||||
|
textField.text = media.mediaDescription
|
||||||
|
}
|
||||||
|
alertController.addAction(UIAlertAction(title: "Confirm", style: .default, handler: { _ in
|
||||||
|
let description = alertController.textFields![0].text
|
||||||
|
media.mediaDescription = description
|
||||||
|
}))
|
||||||
|
alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
|
||||||
|
present(alertController, animated: true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -8,10 +8,18 @@
|
||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
|
protocol ComposeMediaViewDelegate {
|
||||||
|
func editDescription(for media: ComposeMediaView)
|
||||||
|
}
|
||||||
|
|
||||||
class ComposeMediaView: UIImageView {
|
class ComposeMediaView: UIImageView {
|
||||||
|
|
||||||
|
var delegate: ComposeMediaViewDelegate?
|
||||||
|
|
||||||
var remove: UIImageView
|
var remove: UIImageView
|
||||||
|
|
||||||
|
var mediaDescription: String?
|
||||||
|
|
||||||
required init?(coder aDecoder: NSCoder) {
|
required init?(coder aDecoder: NSCoder) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -25,6 +33,7 @@ class ComposeMediaView: UIImageView {
|
||||||
layer.cornerRadius = 5
|
layer.cornerRadius = 5
|
||||||
layer.masksToBounds = true
|
layer.masksToBounds = true
|
||||||
isUserInteractionEnabled = true
|
isUserInteractionEnabled = true
|
||||||
|
addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: #selector(longPressed)))
|
||||||
|
|
||||||
remove.isUserInteractionEnabled = true
|
remove.isUserInteractionEnabled = true
|
||||||
remove.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(removePressed)))
|
remove.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(removePressed)))
|
||||||
|
@ -41,4 +50,8 @@ class ComposeMediaView: UIImageView {
|
||||||
removeFromSuperview()
|
removeFromSuperview()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@objc func longPressed() {
|
||||||
|
delegate?.editDescription(for: self)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue