Kurdtvs-Live-Kurdish-TV-Kur.../Mastodon/Extension/CoreDataStack/MastodonUser.swift

104 lines
2.7 KiB
Swift
Raw Normal View History

2021-02-03 09:01:08 +01:00
//
// MastodonUser.swift
// Mastodon
//
// Created by MainasuK Cirno on 2021/2/3.
//
import Foundation
import CoreDataStack
import MastodonSDK
extension MastodonUser.Property {
init(entity: Mastodon.Entity.Account, domain: String, networkDate: Date) {
self.init(
id: entity.id,
domain: domain,
acct: entity.acct,
username: entity.username,
displayName: entity.displayName,
avatar: entity.avatar,
avatarStatic: entity.avatarStatic,
2021-04-01 08:39:15 +02:00
header: entity.header,
headerStatic: entity.headerStatic,
note: entity.note,
url: entity.url,
emojisData: entity.emojis.flatMap { Status.encode(emojis: $0) },
2021-04-01 08:39:15 +02:00
statusesCount: entity.statusesCount,
followingCount: entity.followingCount,
followersCount: entity.followersCount,
locked: entity.locked,
bot: entity.bot,
suspended: entity.suspended,
2021-02-03 09:01:08 +01:00
createdAt: entity.createdAt,
networkDate: networkDate
)
}
}
extension MastodonUser {
2021-04-01 08:39:15 +02:00
var displayNameWithFallback: String {
return !displayName.isEmpty ? displayName : username
}
var acctWithDomain: String {
if !acct.contains("@") {
// Safe concat due to username cannot contains "@"
return username + "@" + domain
} else {
return acct
}
2021-04-01 08:39:15 +02:00
}
2021-04-29 09:51:52 +02:00
var domainFromAcct: String {
if !acct.contains("@") {
return domain
} else {
let domain = acct.split(separator: "@").last
return String(domain!)
}
}
2021-04-01 08:39:15 +02:00
}
extension MastodonUser {
public func headerImageURL() -> URL? {
return URL(string: header)
}
2021-05-06 08:41:48 +02:00
public func headerImageURLWithFallback(domain: String) -> URL {
return URL(string: header) ?? URL(string: "https://\(domain)/headers/original/missing.png")!
}
public func avatarImageURL() -> URL? {
return URL(string: avatar)
}
2021-04-01 08:39:15 +02:00
2021-05-06 08:41:48 +02:00
public func avatarImageURLWithFallback(domain: String) -> URL {
return URL(string: avatar) ?? URL(string: "https://\(domain)/avatars/original/missing.png")!
}
}
extension MastodonUser {
var profileURL: URL {
if let urlString = self.url,
let url = URL(string: urlString) {
return url
} else {
return URL(string: "https://\(self.domain)/@\(username)")!
}
}
var activityItems: [Any] {
var items: [Any] = []
items.append(profileURL)
return items
}
}
extension MastodonUser: EmojiContinaer { }