[ABANDONED] Mastodon iOS client.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
3.6 KiB

//
// AccountTableView.swift
// elpha-ios
//
// Created by Dwayne Harris on 10/9/18.
// Copyright © 2018 Elpha. All rights reserved.
//
import AlamofireImage
import MastodonKit
import UIKit
class AccountTableViewController: UITableViewController {
@IBOutlet var headerView: UIView!
@IBOutlet var headerImageView: UIImageView!
@IBOutlet var avatarImageView: UIImageView!
@IBOutlet var displayNameLabel: UILabel!
@IBOutlet var usernameLabel: UILabel!
@IBOutlet var contentLabel: UILabel!
@IBOutlet var statusesLabel: UILabel!
@IBOutlet var followingLabel: UILabel!
@IBOutlet var followersLabel: UILabel!
public var account: AccountMO? = nil
private func updateHeader(withAccount account: AccountMO) {
let avatarFilter = AspectScaledToFillSizeWithRoundedCornersFilter(
size: CGSize(width: 70.0, height: 70.0),
radius: 20.0,
divideRadiusByImageScale: true
)
if let headerURL = account.headerURL {
headerImageView.af_setImage(withURL: headerURL)
}
if let avatarURL = account.avatarURL {
avatarImageView.af_setImage(withURL: avatarURL, filter: avatarFilter)
}
displayNameLabel.text = account.displayName
usernameLabel.text = account.acct
if let note = account.note {
do {
let styledContent = "<style>html * { font-size: 15px; color: #170c49; font-family: -apple-system } p { margin: 0; padding: 0 }</style> \(note)"
let attributedText = try NSAttributedString(
data: styledContent.data(using: String.Encoding.unicode, allowLossyConversion: true)!,
options: [.documentType: NSAttributedString.DocumentType.html],
documentAttributes: nil
)
contentLabel.attributedText = attributedText
} catch {
print("\(error)")
}
}
statusesLabel.text = NumberFormatter.localizedString(from: NSNumber(value: account.statusesCount), number: .decimal)
followingLabel.text = NumberFormatter.localizedString(from: NSNumber(value: account.followingCount), number: .decimal)
followersLabel.text = NumberFormatter.localizedString(from: NSNumber(value: account.followersCount), number: .decimal)
}
override func viewDidLoad() {
super.viewDidLoad()
if self.account == nil {
if let session = AuthenticationManager.shared.session {
self.account = session.account
}
}
if let account = account {
updateHeader(withAccount: account)
}
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
if let account = self.account {
if let client = AuthenticationManager.shared.mkClient {
let request = Accounts.account(id: account.id!)
client.run(request) { result in
switch result {
case .success(let remoteAccount, _):
self.account = MastodonDataManager.upsertAccount(remoteAccount)
if let account = self.account {
DispatchQueue.main.async {
self.updateHeader(withAccount: account)
}
}
case .failure(let error):
print("\(error)")
}
}
}
}
}
}