Compare commits

..

2 Commits

3 changed files with 15 additions and 46 deletions

View File

@ -12,7 +12,7 @@ import Intents
class ComposeViewController: UIViewController { class ComposeViewController: UIViewController {
let mastodonController: MastodonController weak var mastodonController: MastodonController!
var inReplyToID: String? var inReplyToID: String?
var accountsToMention = [String]() var accountsToMention = [String]()
@ -457,7 +457,7 @@ class ComposeViewController: UIViewController {
} }
@objc func draftsButtonPressed() { @objc func draftsButtonPressed() {
let draftsVC = DraftsTableViewController() let draftsVC = DraftsTableViewController(account: mastodonController.accountInfo!)
draftsVC.delegate = self draftsVC.delegate = self
present(UINavigationController(rootViewController: draftsVC), animated: true) present(UINavigationController(rootViewController: draftsVC), animated: true)
} }
@ -623,46 +623,7 @@ extension ComposeViewController: DraftsTableViewControllerDelegate {
} }
func shouldSelectDraft(_ draft: DraftsManager.Draft, completion: @escaping (Bool) -> Void) { func shouldSelectDraft(_ draft: DraftsManager.Draft, completion: @escaping (Bool) -> Void) {
if draft.accountID != mastodonController.accountInfo!.id { if draft.inReplyToID != self.inReplyToID {
let currentAccount = mastodonController.accountInfo!
let currentAcct = "\(currentAccount.username)@\(currentAccount.instanceURL.host!)"
let otherAccount = LocalData.shared.getAccount(id: draft.accountID)
let otherAcct: String!
if let otherAccount = otherAccount {
otherAcct = "\(otherAccount.username)@\(otherAccount.instanceURL.host!)"
} else {
otherAcct = nil
}
if draft.inReplyToID != nil {
let message: String
if otherAccount != nil {
message = "The selected draft is a reply from a different account, it cannot be loaded from this account. To use it, switch accounts to \(otherAcct!)"
} else {
message = "The selected draft is a reply from an account that has been logged-out of. It cannot be loaded."
}
let alertController = UIAlertController(title: "Reply from Different Account", message: message, preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (_) in
completion(false)
}))
presentedViewController!.present(alertController, animated: true)
} else {
let message: String
if otherAccount != nil {
message = "The selected draft is from a different account (\(otherAcct!)) than your currently active account (\(currentAcct)). Do you wish to load it anyway?"
} else {
message = "The selected draft from an account that has been logged-out of."
}
let alertController = UIAlertController(title: "Draft from Different Account", message: message, preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (_) in
completion(false)
}))
alertController.addAction(UIAlertAction(title: "Load Draft", style: .default, handler: { (_) in
completion(true)
}))
presentedViewController!.present(alertController, animated: true)
}
} else if draft.inReplyToID != self.inReplyToID {
let alertController = UIAlertController(title: "Different Reply", message: "The selected draft is a reply to a different status, do you wish to use it?", preferredStyle: .alert) let alertController = UIAlertController(title: "Different Reply", message: "The selected draft is a reply to a different status, do you wish to use it?", preferredStyle: .alert)
alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (_) in alertController.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (_) in
completion(false) completion(false)

View File

@ -17,9 +17,14 @@ protocol DraftsTableViewControllerDelegate: class {
class DraftsTableViewController: UITableViewController { class DraftsTableViewController: UITableViewController {
let account: LocalData.UserAccountInfo
weak var delegate: DraftsTableViewControllerDelegate? weak var delegate: DraftsTableViewControllerDelegate?
init() { var drafts = [DraftsManager.Draft]()
init(account: LocalData.UserAccountInfo) {
self.account = account
super.init(nibName: "DraftsTableViewController", bundle: nil) super.init(nibName: "DraftsTableViewController", bundle: nil)
title = "Drafts" title = "Drafts"
@ -37,10 +42,14 @@ class DraftsTableViewController: UITableViewController {
tableView.estimatedRowHeight = 140 tableView.estimatedRowHeight = 140
tableView.register(UINib(nibName: "DraftTableViewCell", bundle: nil), forCellReuseIdentifier: "draftCell") tableView.register(UINib(nibName: "DraftTableViewCell", bundle: nil), forCellReuseIdentifier: "draftCell")
drafts = DraftsManager.shared.sorted.filter { (draft) in
draft.accountID == account.id
}
} }
func draft(for indexPath: IndexPath) -> DraftsManager.Draft { func draft(for indexPath: IndexPath) -> DraftsManager.Draft {
return DraftsManager.shared.sorted[indexPath.row] return drafts[indexPath.row]
} }
// MARK: - Table View Data Source // MARK: - Table View Data Source
@ -50,7 +59,7 @@ class DraftsTableViewController: UITableViewController {
} }
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return DraftsManager.shared.drafts.count return drafts.count
} }
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

View File

@ -95,7 +95,6 @@ class TimelineStatusTableViewCell: BaseStatusTableViewCell {
} }
func updateTimestamp() { func updateTimestamp() {
guard superview != nil else { return }
guard let status = mastodonController.cache.status(for: statusID) else { fatalError("Missing cached status \(statusID!)") } guard let status = mastodonController.cache.status(for: statusID) else { fatalError("Missing cached status \(statusID!)") }
timestampLabel.text = status.createdAt.timeAgoString() timestampLabel.text = status.createdAt.timeAgoString()