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
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)")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|