Start work on swipe actions
This commit is contained in:
parent
3a8754298d
commit
5d3686a038
|
@ -111,8 +111,10 @@ public class Status: Decodable, ClientModel {
|
|||
client.run(request) { response in
|
||||
if case .success = response {
|
||||
self.favourited = true
|
||||
self.reblog?.favourited = true
|
||||
} else {
|
||||
self.favourited = oldValue
|
||||
self.reblog?.favourited = oldValue
|
||||
}
|
||||
completion(response)
|
||||
}
|
||||
|
@ -124,8 +126,10 @@ public class Status: Decodable, ClientModel {
|
|||
client.run(request) { response in
|
||||
if case .success = response {
|
||||
self.favourited = false
|
||||
self.reblog?.favourited = false
|
||||
} else {
|
||||
self.favourited = oldValue
|
||||
self.reblog?.favourited = oldValue
|
||||
}
|
||||
completion(response)
|
||||
}
|
||||
|
|
|
@ -35,6 +35,13 @@ class TimelineTableViewController: UITableViewController {
|
|||
return navigationController
|
||||
}
|
||||
|
||||
lazy var favoriteActionImage: UIImage = UIGraphicsImageRenderer(size: CGSize(width: 30 * 137/131, height: 30)).image { _ in
|
||||
UIImage(named: "Favorite")!.draw(in: CGRect(x: 0, y: 0, width: 30 * 137/131, height: 30))
|
||||
}
|
||||
lazy var reblogActionImage: UIImage = UIGraphicsImageRenderer(size: CGSize(width: 30 * 927/558, height: 30)).image { _ in
|
||||
UIImage(named: "Reblog")!.draw(in: CGRect(x: 0, y: 0, width: 30 * 927/558, height: 30))
|
||||
}
|
||||
|
||||
var timeline: Timeline!
|
||||
|
||||
var statuses: [Status] = [] {
|
||||
|
@ -120,6 +127,47 @@ class TimelineTableViewController: UITableViewController {
|
|||
}
|
||||
}
|
||||
|
||||
override func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
|
||||
let status = statuses[indexPath.row]
|
||||
|
||||
let favorite = UIContextualAction(style: .normal, title: "Favorite") { (action, view, completion) in
|
||||
status.favourite(completion: { response in
|
||||
DispatchQueue.main.async {
|
||||
if case .success = response {
|
||||
completion(true)
|
||||
guard let cell = tableView.cellForRow(at: indexPath) as? StatusTableViewCell else { return }
|
||||
cell.updateUI(for: cell.status)
|
||||
} else {
|
||||
completion(false)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
favorite.image = favoriteActionImage
|
||||
favorite.backgroundColor = UIColor(displayP3Red: 1, green: 0.8, blue: 0, alpha: 1)
|
||||
let reblog = UIContextualAction(style: .normal, title: "Reblog") { (action, view, completion) in
|
||||
status.reblog(completion: { response in
|
||||
DispatchQueue.main.async {
|
||||
if case .success = response {
|
||||
completion(true)
|
||||
guard let cell = tableView.cellForRow(at: indexPath) as? StatusTableViewCell else { return }
|
||||
cell.updateUI(for: cell.status)
|
||||
} else {
|
||||
completion(false)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
reblog.image = reblogActionImage
|
||||
reblog.backgroundColor = view.tintColor
|
||||
|
||||
let actions = [
|
||||
favorite,
|
||||
reblog
|
||||
]
|
||||
return UISwipeActionsConfiguration(actions: actions)
|
||||
}
|
||||
|
||||
@IBAction func refreshStatuses(_ sender: Any) {
|
||||
guard let newer = newer else { return }
|
||||
|
||||
|
|
Loading…
Reference in New Issue