From 6b6ed281348bca5b8d48ee701ea6f3f9d1c96ee1 Mon Sep 17 00:00:00 2001 From: Nathan Mattes Date: Fri, 5 Jan 2024 12:30:36 +0100 Subject: [PATCH] Emojis aren't optional (IOS-192) meet [] --- .../ForYou/ProfileCardView+Configuration.swift | 2 +- .../Share/View/Content/UserView+Configuration.swift | 2 +- .../SuggestionAccountTableViewCell.swift | 2 +- Mastodon/Scene/Thread/ThreadViewModel.swift | 2 +- .../Protocol/MastodonEmojiContainer.swift | 6 ++---- .../MastodonSDK/Entity/Mastodon+Entity+Account.swift | 4 ++-- .../MastodonSDK/Entity/Mastodon+Entity+Status.swift | 4 ++-- .../Entity/Mastodon+Entity+StatusEdit.swift | 2 +- .../MastodonUI/View/Content/CondensedUserView.swift | 2 +- .../View/Content/StatusView+Configuration.swift | 12 ++++++------ 10 files changed, 18 insertions(+), 20 deletions(-) diff --git a/Mastodon/Scene/Discovery/ForYou/ProfileCardView+Configuration.swift b/Mastodon/Scene/Discovery/ForYou/ProfileCardView+Configuration.swift index 4192e59b7..ecb4e3db1 100644 --- a/Mastodon/Scene/Discovery/ForYou/ProfileCardView+Configuration.swift +++ b/Mastodon/Scene/Discovery/ForYou/ProfileCardView+Configuration.swift @@ -22,7 +22,7 @@ extension ProfileCardView { viewModel.followersCount = account.followersCount viewModel.authorAvatarImageURL = account.avatarImageURL() - let emojis = account.emojis?.asDictionary ?? [:] + let emojis = account.emojis.asDictionary do { let content = MastodonContent(content: account.displayNameWithFallback, emojis: emojis) diff --git a/Mastodon/Scene/Share/View/Content/UserView+Configuration.swift b/Mastodon/Scene/Share/View/Content/UserView+Configuration.swift index 4a3595c73..a2ccff02a 100644 --- a/Mastodon/Scene/Share/View/Content/UserView+Configuration.swift +++ b/Mastodon/Scene/Share/View/Content/UserView+Configuration.swift @@ -26,7 +26,7 @@ extension UserView { authorUsernameLabel.configure(content: authorUsername) do { - let emojis = account.emojis?.asDictionary ?? [:] + let emojis = account.emojis.asDictionary let content = MastodonContent(content: account.displayNameWithFallback, emojis: emojis) let metaContent = try MastodonMetaContent.convert(document: content) authorNameLabel.configure(content: metaContent) diff --git a/Mastodon/Scene/SuggestionAccount/TableView-Components/SuggestionAccountTableViewCell.swift b/Mastodon/Scene/SuggestionAccount/TableView-Components/SuggestionAccountTableViewCell.swift index 17a8e5b55..c556ed1e5 100644 --- a/Mastodon/Scene/SuggestionAccount/TableView-Components/SuggestionAccountTableViewCell.swift +++ b/Mastodon/Scene/SuggestionAccount/TableView-Components/SuggestionAccountTableViewCell.swift @@ -91,7 +91,7 @@ final class SuggestionAccountTableViewCell: UITableViewCell { let metaContent: MetaContent = { 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) } catch { assertionFailure() diff --git a/Mastodon/Scene/Thread/ThreadViewModel.swift b/Mastodon/Scene/Thread/ThreadViewModel.swift index a6957049e..a164527a2 100644 --- a/Mastodon/Scene/Thread/ThreadViewModel.swift +++ b/Mastodon/Scene/Thread/ThreadViewModel.swift @@ -76,7 +76,7 @@ class ThreadViewModel { // bind titleView self.navigationBarTitle = { 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) }() } diff --git a/MastodonSDK/Sources/MastodonCore/Persistence/Protocol/MastodonEmojiContainer.swift b/MastodonSDK/Sources/MastodonCore/Persistence/Protocol/MastodonEmojiContainer.swift index 7273d507f..c017ac08e 100644 --- a/MastodonSDK/Sources/MastodonCore/Persistence/Protocol/MastodonEmojiContainer.swift +++ b/MastodonSDK/Sources/MastodonCore/Persistence/Protocol/MastodonEmojiContainer.swift @@ -11,14 +11,12 @@ import MastodonSDK import CoreDataStack public protocol MastodonEmojiContainer { - var emojis: [Mastodon.Entity.Emoji]? { get } + var emojis: [Mastodon.Entity.Emoji] { get } } extension MastodonEmojiContainer { public var mastodonEmojis: [MastodonEmoji] { - return emojis.flatMap { emojis in - emojis.map { MastodonEmoji(emoji: $0) } - } ?? [] + return emojis.map { MastodonEmoji(emoji: $0) } } } diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Account.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Account.swift index 836160db7..9e5a39019 100644 --- a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Account.swift +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Account.swift @@ -35,7 +35,7 @@ extension Mastodon.Entity { public let header: String public let headerStatic: String? public let locked: Bool - public let emojis: [Emoji]? + public let emojis: [Emoji] public let discoverable: Bool? // Statistical @@ -52,7 +52,7 @@ extension Mastodon.Entity { public let suspended: Bool? 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.username = username self.acct = acct diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Status.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Status.swift index bcfbf33f5..c39517ecf 100644 --- a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Status.swift +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+Status.swift @@ -37,8 +37,8 @@ extension Mastodon.Entity { // Rendering public let mentions: [Mention]? - public let tags: [Tag]? - public let emojis: [Emoji]? + public let tags: [Tag] + public let emojis: [Emoji] // Informational public let reblogsCount: Int diff --git a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+StatusEdit.swift b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+StatusEdit.swift index fd61ff060..f8f50b7f5 100644 --- a/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+StatusEdit.swift +++ b/MastodonSDK/Sources/MastodonSDK/Entity/Mastodon+Entity+StatusEdit.swift @@ -36,7 +36,7 @@ extension Mastodon.Entity { public let account: Account public let poll: Poll? public let mediaAttachments: [Attachment]? - public let emojis: [Emoji]? + public let emojis: [Emoji] enum CodingKeys: String, CodingKey { case content diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/CondensedUserView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/CondensedUserView.swift index c19d8f2ed..c549ad5a5 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/CondensedUserView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/CondensedUserView.swift @@ -127,7 +127,7 @@ public class CondensedUserView: UIView { public func configure(with account: Mastodon.Entity.Account, showFollowers: Bool = true) { let displayNameMetaContent: MetaContent 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) } catch { displayNameMetaContent = PlaintextMetaContent(string: account.displayNameWithFallback) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+Configuration.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+Configuration.swift index b4238c80d..37cab065c 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+Configuration.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView+Configuration.swift @@ -157,7 +157,7 @@ extension StatusView { statusID: inReplyToID, authorization: authenticationBox.userAuthorization ).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 } } @@ -200,7 +200,7 @@ extension StatusView { // author avatar viewModel.authorAvatarImageURL = author.avatarImageURL() - let emojis = author.emojis?.asDictionary ?? [:] + let emojis = author.emojis.asDictionary // author name viewModel.authorName = { @@ -282,7 +282,7 @@ extension StatusView { // content 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) viewModel.content = metaContent viewModel.isCurrentlyTranslating = false @@ -301,7 +301,7 @@ extension StatusView { viewModel.language = (status.reblog ?? status).entity.language // content 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) viewModel.content = metaContent viewModel.isCurrentlyTranslating = false @@ -321,7 +321,7 @@ extension StatusView { // spoilerText if let spoilerText = status.entity.spoilerText, !spoilerText.isEmpty { 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) viewModel.spoilerContent = metaContent } catch { @@ -335,7 +335,7 @@ extension StatusView { viewModel.language = (status.reblog ?? status).entity.language // content 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) viewModel.content = metaContent viewModel.isCurrentlyTranslating = false