forked from shadowfacts/Tusker
Fix swipe actions not showing up
This commit is contained in:
parent
ee5e049355
commit
49d00bb1b0
|
@ -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> {
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue