Fix swipe actions not showing up

This commit is contained in:
Shadowfacts 2020-04-27 19:32:16 -04:00
parent ee5e049355
commit 49d00bb1b0
Signed by: shadowfacts
GPG Key ID: 94A5AB95422746E5
4 changed files with 20 additions and 20 deletions

View File

@ -62,20 +62,20 @@ public class Status: Decodable {
return Request<Empty>(method: .delete, path: "/api/v1/statuses/\(status.id)") return Request<Empty>(method: .delete, path: "/api/v1/statuses/\(status.id)")
} }
public static func reblog(_ status: Status) -> Request<Status> { public static func reblog(_ statusID: String) -> Request<Status> {
return Request<Status>(method: .post, path: "/api/v1/statuses/\(status.id)/reblog") return Request<Status>(method: .post, path: "/api/v1/statuses/\(statusID)/reblog")
} }
public static func unreblog(_ status: Status) -> Request<Status> { public static func unreblog(_ statusID: String) -> Request<Status> {
return Request<Status>(method: .post, path: "/api/v1/statuses/\(status.id)/unreblog") return Request<Status>(method: .post, path: "/api/v1/statuses/\(statusID)/unreblog")
} }
public static func favourite(_ status: Status) -> Request<Status> { public static func favourite(_ statusID: String) -> Request<Status> {
return Request<Status>(method: .post, path: "/api/v1/statuses/\(status.id)/favourite") return Request<Status>(method: .post, path: "/api/v1/statuses/\(statusID)/favourite")
} }
public static func unfavourite(_ status: Status) -> Request<Status> { public static func unfavourite(_ statusID: String) -> Request<Status> {
return Request<Status>(method: .post, path: "/api/v1/statuses/\(status.id)/unfavourite") return Request<Status>(method: .post, path: "/api/v1/statuses/\(statusID)/unfavourite")
} }
public static func pin(_ status: Status) -> Request<Status> { public static func pin(_ status: Status) -> Request<Status> {

View File

@ -255,7 +255,7 @@ class BaseStatusTableViewCell: UITableViewCell {
favorited = !favorited favorited = !favorited
let realStatus: Status = status.reblog ?? status let realStatus: Status = status.reblog ?? status
let request = (favorited ? Status.favourite : Status.unfavourite)(realStatus) let request = (favorited ? Status.favourite : Status.unfavourite)(realStatus.id)
mastodonController.run(request) { response in mastodonController.run(request) { response in
DispatchQueue.main.async { DispatchQueue.main.async {
if case let .success(newStatus, _) = response { if case let .success(newStatus, _) = response {
@ -280,7 +280,7 @@ class BaseStatusTableViewCell: UITableViewCell {
reblogged = !reblogged reblogged = !reblogged
let realStatus: Status = status.reblog ?? status let realStatus: Status = status.reblog ?? status
let request = (reblogged ? Status.reblog : Status.unreblog)(realStatus) let request = (reblogged ? Status.reblog : Status.unreblog)(realStatus.id)
mastodonController.run(request) { response in mastodonController.run(request) { response in
DispatchQueue.main.async { DispatchQueue.main.async {
if case let .success(newStatus, _) = response { if case let .success(newStatus, _) = response {

View File

@ -176,19 +176,19 @@ extension TimelineStatusTableViewCell: TableViewSwipeActionProvider {
func leadingSwipeActionsConfiguration() -> UISwipeActionsConfiguration? { func leadingSwipeActionsConfiguration() -> UISwipeActionsConfiguration? {
guard let mastodonController = mastodonController else { return nil } guard let mastodonController = mastodonController else { return nil }
guard let status = mastodonController.cache.status(for: statusID) else { fatalError("Missing cached status \(statusID!)") } guard let status = mastodonController.persistentContainer.status(for: statusID) else { fatalError("Missing cached status \(statusID!)") }
let favoriteTitle: String let favoriteTitle: String
let favoriteRequest: Request<Status> let favoriteRequest: Request<Status>
let favoriteColor: UIColor let favoriteColor: UIColor
if status.favourited ?? false { if status.favourited {
favoriteTitle = "Unfavorite" favoriteTitle = "Unfavorite"
favoriteRequest = Status.unfavourite(status) favoriteRequest = Status.unfavourite(status.id)
favoriteColor = UIColor(displayP3Red: 235/255, green: 77/255, blue: 62/255, alpha: 1) favoriteColor = UIColor(displayP3Red: 235/255, green: 77/255, blue: 62/255, alpha: 1)
} else { } else {
favoriteTitle = "Favorite" favoriteTitle = "Favorite"
favoriteRequest = Status.favourite(status) favoriteRequest = Status.favourite(status.id)
favoriteColor = UIColor(displayP3Red: 1, green: 204/255, blue: 0, alpha: 1) favoriteColor = UIColor(displayP3Red: 1, green: 204/255, blue: 0, alpha: 1)
} }
let favorite = UIContextualAction(style: .normal, title: favoriteTitle) { (action, view, completion) in let favorite = UIContextualAction(style: .normal, title: favoriteTitle) { (action, view, completion) in
@ -199,7 +199,7 @@ extension TimelineStatusTableViewCell: TableViewSwipeActionProvider {
return return
} }
completion(true) completion(true)
mastodonController.cache.add(status: status) mastodonController.persistentContainer.addOrUpdate(status: status, incrementReferenceCount: false)
} }
}) })
} }
@ -209,13 +209,13 @@ extension TimelineStatusTableViewCell: TableViewSwipeActionProvider {
let reblogTitle: String let reblogTitle: String
let reblogRequest: Request<Status> let reblogRequest: Request<Status>
let reblogColor: UIColor let reblogColor: UIColor
if status.reblogged ?? false { if status.reblogged {
reblogTitle = "Unreblog" reblogTitle = "Unreblog"
reblogRequest = Status.unreblog(status) reblogRequest = Status.unreblog(status.id)
reblogColor = UIColor(displayP3Red: 235/255, green: 77/255, blue: 62/255, alpha: 1) reblogColor = UIColor(displayP3Red: 235/255, green: 77/255, blue: 62/255, alpha: 1)
} else { } else {
reblogTitle = "Reblog" reblogTitle = "Reblog"
reblogRequest = Status.reblog(status) reblogRequest = Status.reblog(status.id)
reblogColor = tintColor reblogColor = tintColor
} }
let reblog = UIContextualAction(style: .normal, title: reblogTitle) { (action, view, completion) in let reblog = UIContextualAction(style: .normal, title: reblogTitle) { (action, view, completion) in

View File

@ -204,9 +204,9 @@ struct XCBActions {
statusAction(request: Status.reblog, alertTitle: "Reblog status?", request, session, silent) statusAction(request: Status.reblog, alertTitle: "Reblog status?", request, session, silent)
} }
static func statusAction(request: @escaping (Status) -> Request<Status>, alertTitle: String, _ url: XCBRequest, _ session: XCBSession, _ silent: Bool?) { static func statusAction(request: @escaping (String) -> Request<Status>, alertTitle: String, _ url: XCBRequest, _ session: XCBSession, _ silent: Bool?) {
func performAction(status: Status, completion: ((Status) -> Void)?) { func performAction(status: Status, completion: ((Status) -> Void)?) {
mastodonController.run(request(status)) { (response) in mastodonController.run(request(status.id)) { (response) in
if case let .success(status, _) = response { if case let .success(status, _) = response {
mastodonController.cache.add(status: status) mastodonController.cache.add(status: status)
completion?(status) completion?(status)