Emojis aren't optional (IOS-192)

meet []
This commit is contained in:
Nathan Mattes 2024-01-05 12:30:36 +01:00
parent c3d40d260d
commit 6b6ed28134
10 changed files with 18 additions and 20 deletions

View File

@ -22,7 +22,7 @@ extension ProfileCardView {
viewModel.followersCount = account.followersCount viewModel.followersCount = account.followersCount
viewModel.authorAvatarImageURL = account.avatarImageURL() viewModel.authorAvatarImageURL = account.avatarImageURL()
let emojis = account.emojis?.asDictionary ?? [:] let emojis = account.emojis.asDictionary
do { do {
let content = MastodonContent(content: account.displayNameWithFallback, emojis: emojis) let content = MastodonContent(content: account.displayNameWithFallback, emojis: emojis)

View File

@ -26,7 +26,7 @@ extension UserView {
authorUsernameLabel.configure(content: authorUsername) authorUsernameLabel.configure(content: authorUsername)
do { do {
let emojis = account.emojis?.asDictionary ?? [:] let emojis = account.emojis.asDictionary
let content = MastodonContent(content: account.displayNameWithFallback, emojis: emojis) let content = MastodonContent(content: account.displayNameWithFallback, emojis: emojis)
let metaContent = try MastodonMetaContent.convert(document: content) let metaContent = try MastodonMetaContent.convert(document: content)
authorNameLabel.configure(content: metaContent) authorNameLabel.configure(content: metaContent)

View File

@ -91,7 +91,7 @@ final class SuggestionAccountTableViewCell: UITableViewCell {
let metaContent: MetaContent = { let metaContent: MetaContent = {
do { do {
let mastodonContent = MastodonContent(content: account.note, emojis: account.emojis?.asDictionary ?? [:]) let mastodonContent = MastodonContent(content: account.note, emojis: account.emojis.asDictionary)
return try MastodonMetaContent.convert(document: mastodonContent) return try MastodonMetaContent.convert(document: mastodonContent)
} catch { } catch {
assertionFailure() assertionFailure()

View File

@ -76,7 +76,7 @@ class ThreadViewModel {
// bind titleView // bind titleView
self.navigationBarTitle = { self.navigationBarTitle = {
let title = L10n.Scene.Thread.title(status.entity.account.displayNameWithFallback) let title = L10n.Scene.Thread.title(status.entity.account.displayNameWithFallback)
let content = MastodonContent(content: title, emojis: status.entity.account.emojis?.asDictionary ?? [:]) let content = MastodonContent(content: title, emojis: status.entity.account.emojis.asDictionary)
return try? MastodonMetaContent.convert(document: content) return try? MastodonMetaContent.convert(document: content)
}() }()
} }

View File

@ -11,14 +11,12 @@ import MastodonSDK
import CoreDataStack import CoreDataStack
public protocol MastodonEmojiContainer { public protocol MastodonEmojiContainer {
var emojis: [Mastodon.Entity.Emoji]? { get } var emojis: [Mastodon.Entity.Emoji] { get }
} }
extension MastodonEmojiContainer { extension MastodonEmojiContainer {
public var mastodonEmojis: [MastodonEmoji] { public var mastodonEmojis: [MastodonEmoji] {
return emojis.flatMap { emojis in return emojis.map { MastodonEmoji(emoji: $0) }
emojis.map { MastodonEmoji(emoji: $0) }
} ?? []
} }
} }

View File

@ -35,7 +35,7 @@ extension Mastodon.Entity {
public let header: String public let header: String
public let headerStatic: String? public let headerStatic: String?
public let locked: Bool public let locked: Bool
public let emojis: [Emoji]? public let emojis: [Emoji]
public let discoverable: Bool? public let discoverable: Bool?
// Statistical // Statistical
@ -52,7 +52,7 @@ extension Mastodon.Entity {
public let suspended: Bool? public let suspended: Bool?
public let muteExpiresAt: Date? public let muteExpiresAt: Date?
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) { 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] = [], 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.id = id
self.username = username self.username = username
self.acct = acct self.acct = acct

View File

@ -37,8 +37,8 @@ extension Mastodon.Entity {
// Rendering // Rendering
public let mentions: [Mention]? public let mentions: [Mention]?
public let tags: [Tag]? public let tags: [Tag]
public let emojis: [Emoji]? public let emojis: [Emoji]
// Informational // Informational
public let reblogsCount: Int public let reblogsCount: Int

View File

@ -36,7 +36,7 @@ extension Mastodon.Entity {
public let account: Account public let account: Account
public let poll: Poll? public let poll: Poll?
public let mediaAttachments: [Attachment]? public let mediaAttachments: [Attachment]?
public let emojis: [Emoji]? public let emojis: [Emoji]
enum CodingKeys: String, CodingKey { enum CodingKeys: String, CodingKey {
case content case content

View File

@ -127,7 +127,7 @@ public class CondensedUserView: UIView {
public func configure(with account: Mastodon.Entity.Account, showFollowers: Bool = true) { public func configure(with account: Mastodon.Entity.Account, showFollowers: Bool = true) {
let displayNameMetaContent: MetaContent let displayNameMetaContent: MetaContent
do { do {
let content = MastodonContent(content: account.displayNameWithFallback, emojis: account.emojis?.asDictionary ?? [:]) let content = MastodonContent(content: account.displayNameWithFallback, emojis: account.emojis.asDictionary)
displayNameMetaContent = try MastodonMetaContent.convert(document: content) displayNameMetaContent = try MastodonMetaContent.convert(document: content)
} catch { } catch {
displayNameMetaContent = PlaintextMetaContent(string: account.displayNameWithFallback) displayNameMetaContent = PlaintextMetaContent(string: account.displayNameWithFallback)

View File

@ -157,7 +157,7 @@ extension StatusView {
statusID: inReplyToID, statusID: inReplyToID,
authorization: authenticationBox.userAuthorization authorization: authenticationBox.userAuthorization
).singleOutput().value { ).singleOutput().value {
let header = createHeader(name: replyTo.account.displayNameWithFallback, emojis: replyTo.account.emojis?.asDictionary ?? [:]) let header = createHeader(name: replyTo.account.displayNameWithFallback, emojis: replyTo.account.emojis.asDictionary)
viewModel.header = header viewModel.header = header
} }
} }
@ -200,7 +200,7 @@ extension StatusView {
// author avatar // author avatar
viewModel.authorAvatarImageURL = author.avatarImageURL() viewModel.authorAvatarImageURL = author.avatarImageURL()
let emojis = author.emojis?.asDictionary ?? [:] let emojis = author.emojis.asDictionary
// author name // author name
viewModel.authorName = { viewModel.authorName = {
@ -282,7 +282,7 @@ extension StatusView {
// content // content
do { do {
let content = MastodonContent(content: translatedContent, emojis: status.entity.emojis?.asDictionary ?? [:]) let content = MastodonContent(content: translatedContent, emojis: status.entity.emojis.asDictionary)
let metaContent = try MastodonMetaContent.convert(document: content) let metaContent = try MastodonMetaContent.convert(document: content)
viewModel.content = metaContent viewModel.content = metaContent
viewModel.isCurrentlyTranslating = false viewModel.isCurrentlyTranslating = false
@ -301,7 +301,7 @@ extension StatusView {
viewModel.language = (status.reblog ?? status).entity.language viewModel.language = (status.reblog ?? status).entity.language
// content // content
do { do {
let content = MastodonContent(content: statusEdit.content, emojis: statusEdit.emojis?.asDictionary ?? [:]) let content = MastodonContent(content: statusEdit.content, emojis: statusEdit.emojis.asDictionary)
let metaContent = try MastodonMetaContent.convert(document: content) let metaContent = try MastodonMetaContent.convert(document: content)
viewModel.content = metaContent viewModel.content = metaContent
viewModel.isCurrentlyTranslating = false viewModel.isCurrentlyTranslating = false
@ -321,7 +321,7 @@ extension StatusView {
// spoilerText // spoilerText
if let spoilerText = status.entity.spoilerText, !spoilerText.isEmpty { if let spoilerText = status.entity.spoilerText, !spoilerText.isEmpty {
do { do {
let content = MastodonContent(content: spoilerText, emojis: status.entity.emojis?.asDictionary ?? [:]) let content = MastodonContent(content: spoilerText, emojis: status.entity.emojis.asDictionary)
let metaContent = try MastodonMetaContent.convert(document: content) let metaContent = try MastodonMetaContent.convert(document: content)
viewModel.spoilerContent = metaContent viewModel.spoilerContent = metaContent
} catch { } catch {
@ -335,7 +335,7 @@ extension StatusView {
viewModel.language = (status.reblog ?? status).entity.language viewModel.language = (status.reblog ?? status).entity.language
// content // content
do { do {
let content = MastodonContent(content: status.entity.content ?? "", emojis: status.entity.emojis?.asDictionary ?? [:]) let content = MastodonContent(content: status.entity.content ?? "", emojis: status.entity.emojis.asDictionary)
let metaContent = try MastodonMetaContent.convert(document: content) let metaContent = try MastodonMetaContent.convert(document: content)
viewModel.content = metaContent viewModel.content = metaContent
viewModel.isCurrentlyTranslating = false viewModel.isCurrentlyTranslating = false