Use placeholder for me (IOS-192)

This commit is contained in:
Nathan Mattes 2023-12-08 13:48:42 +01:00
parent 2be8d5b8df
commit 8918d237ca
2 changed files with 122 additions and 37 deletions

View File

@ -99,10 +99,10 @@ public struct MastodonAuthentication: Codable, Hashable {
return MastodonUser.findOrFetch(in: context, matching: userPredicate)
}
public func account() -> Mastodon.Entity.Account? {
public func account() -> Mastodon.Entity.Account {
// store accounts
#warning("TODO: Implement")
return nil
return Mastodon.Entity.Account.placeholder()
}
func updating(instance: Instance) -> Self {

View File

@ -9,7 +9,7 @@ import Foundation
import MastodonCommon
extension Mastodon.Entity {
/// Account
///
/// - Since: 0.1.0
@ -18,8 +18,7 @@ extension Mastodon.Entity {
/// 2021/1/28
/// # Reference
/// [Document](https://docs.joinmastodon.org/entities/account/)
public final class Account: Codable, Sendable {
public final class Account: Sendable {
public typealias ID = String
// Base
@ -27,7 +26,7 @@ extension Mastodon.Entity {
public let username: String
public let acct: String
public let url: String
// Display
public let displayName: String
public let note: String
@ -38,50 +37,136 @@ extension Mastodon.Entity {
public let locked: Bool
public let emojis: [Emoji]?
public let discoverable: Bool?
// Statistical
public let createdAt: Date
public let lastStatusAt: Date?
public let statusesCount: Int
public let followersCount: Int
public let followingCount: Int
public let moved: Account?
public let fields: [Field]?
public let bot: Bool?
public let source: Source?
public let suspended: Bool?
public let muteExpiresAt: Date?
enum CodingKeys: String, CodingKey {
case id
case username
case acct
case url
case displayName = "display_name"
case note
case avatar
case avatarStatic = "avatar_static"
case header
case headerStatic = "header_static"
case locked
case emojis
case discoverable
case createdAt = "created_at"
case lastStatusAt = "last_status_at"
case statusesCount = "statuses_count"
case followersCount = "followers_count"
case followingCount = "following_count"
case moved
case fields
case bot
case source
case suspended
case muteExpiresAt = "mute_expires_at"
internal init(id: Mastodon.Entity.Account.ID, username: String, acct: String, url: String, displayName: String, note: String, avatar: String, avatarStatic: String? = nil, header: String, headerStatic: String? = nil, locked: Bool, emojis: [Mastodon.Entity.Emoji]? = nil, discoverable: Bool? = nil, createdAt: Date, lastStatusAt: Date? = nil, statusesCount: Int, followersCount: Int, followingCount: Int, moved: Mastodon.Entity.Account? = nil, fields: [Mastodon.Entity.Field]? = nil, bot: Bool? = nil, source: Mastodon.Entity.Source? = nil, suspended: Bool? = nil, muteExpiresAt: Date? = nil) {
self.id = id
self.username = username
self.acct = acct
self.url = url
self.displayName = displayName
self.note = note
self.avatar = avatar
self.avatarStatic = avatarStatic
self.header = header
self.headerStatic = headerStatic
self.locked = locked
self.emojis = emojis
self.discoverable = discoverable
self.createdAt = createdAt
self.lastStatusAt = lastStatusAt
self.statusesCount = statusesCount
self.followersCount = followersCount
self.followingCount = followingCount
self.moved = moved
self.fields = fields
self.bot = bot
self.source = source
self.suspended = suspended
self.muteExpiresAt = muteExpiresAt
}
@available(*, deprecated, message: "Remove!")
public static func placeholder() -> Mastodon.Entity.Account {
let data = """
{
"id": "3006",
"username": "zeitschlag",
"acct": "zeitschlag",
"display_name": "nathan",
"locked": false,
"bot": false,
"discoverable": true,
"group": false,
"created_at": "2017-04-18T00:00:00.000Z",
"note": "<p>release-notes-autor.<br />wer nervt, wird geblockt.</p>",
"url": "https://chaos.social/@zeitschlag",
"uri": "https://chaos.social/users/zeitschlag",
"avatar": "https://assets.chaos.social/accounts/avatars/000/003/006/original/cf15bb24f41bf74e.jpeg",
"avatar_static": "https://assets.chaos.social/accounts/avatars/000/003/006/original/cf15bb24f41bf74e.jpeg",
"header": "https://assets.chaos.social/accounts/headers/000/003/006/original/5936fa5b2ef78ced.png",
"header_static": "https://assets.chaos.social/accounts/headers/000/003/006/original/5936fa5b2ef78ced.png",
"followers_count": 1347,
"following_count": 235,
"statuses_count": 7484,
"last_status_at": "2023-12-08",
"noindex": false,
"emojis": [],
"roles": [],
"fields": [
{
"name": "blog",
"value": "<a href=\\\"https://bullenscheisse.de\\\" target=\\\"_blank\\\" rel=\\\"nofollow noopener noreferrer me\\\" translate=\\\"no\\\"><span class=\\\"invisible\\\">https://</span><span class=\\\"\\\">bullenscheisse.de</span><span class=\\\"invisible\\\"></span></a>",
"verified_at": "2023-04-20T13:18:18.930+00:00"
},
{
"name": "Mastodon",
"value": "<a href=\\\"https://joinmastodon.org/about\\\" target=\\\"_blank\\\" rel=\\\"nofollow noopener noreferrer me\\\" translate=\\\"no\\\"><span class=\\\"invisible\\\">https://</span><span class=\\\"\\\">joinmastodon.org/about</span><span class=\\\"invisible\\\"></span></a>",
"verified_at": "2023-11-10T17:06:50.631+00:00"
},
{
"name": "github",
"value": "<a href=\\\"https://github.com/zeitschlag/\\\" target=\\\"_blank\\\" rel=\\\"nofollow noopener noreferrer me\\\" translate=\\\"no\\\"><span class=\\\"invisible\\\">https://</span><span class=\\\"\\\">github.com/zeitschlag/</span><span class=\\\"invisible\\\"></span></a>",
"verified_at": "2023-11-10T17:25:59.868+00:00"
},
{
"name": "German CV",
"value": "<a href=\\\"https://zeitschlag.net/lebenslauf/\\\" target=\\\"_blank\\\" rel=\\\"nofollow noopener noreferrer me\\\" translate=\\\"no\\\"><span class=\\\"invisible\\\">https://</span><span class=\\\"\\\">zeitschlag.net/lebenslauf/</span><span class=\\\"invisible\\\"></span></a>",
"verified_at": null
}
]
}
""".data(using: .utf8)!
let account = try! Mastodon.API.decoder.decode(Self.self, from: data)
return account
}
}
}
//MARK: - Codable
extension Mastodon.Entity.Account: Codable {
enum CodingKeys: String, CodingKey {
case id
case username
case acct
case url
case displayName = "display_name"
case note
case avatar
case avatarStatic = "avatar_static"
case header
case headerStatic = "header_static"
case locked
case emojis
case discoverable
case createdAt = "created_at"
case lastStatusAt = "last_status_at"
case statusesCount = "statuses_count"
case followersCount = "followers_count"
case followingCount = "following_count"
case moved
case fields
case bot
case source
case suspended
case muteExpiresAt = "mute_expires_at"
}
}