diff --git a/Packages/Account/Sources/Account/Edit/EditAccountViewModel.swift b/Packages/Account/Sources/Account/Edit/EditAccountViewModel.swift index 06f52691..6b0115f6 100644 --- a/Packages/Account/Sources/Account/Edit/EditAccountViewModel.swift +++ b/Packages/Account/Sources/Account/Edit/EditAccountViewModel.swift @@ -44,7 +44,7 @@ class EditAccountViewModel: ObservableObject { isBot = account.bot isLocked = account.locked isDiscoverable = account.discoverable ?? false - fields = account.fields.map{ .init(name: $0.name, value: $0.value.asRawText )} + fields = account.source?.fields.map{ .init(name: $0.name, value: $0.value.asRawText) } ?? [] withAnimation { isLoading = false } diff --git a/Packages/Status/Sources/Status/Editor/Components/StatusEditorLanguage.swift b/Packages/Models/Sources/Models/Language.swift similarity index 58% rename from Packages/Status/Sources/Status/Editor/Components/StatusEditorLanguage.swift rename to Packages/Models/Sources/Models/Language.swift index eb5314a7..ea750190 100644 --- a/Packages/Status/Sources/Status/Editor/Components/StatusEditorLanguage.swift +++ b/Packages/Models/Sources/Models/Language.swift @@ -1,17 +1,17 @@ import Foundation -struct StatusEditorLanguage: Identifiable, Equatable { - var id: String { isoCode } +public struct Language: Identifiable, Equatable, Hashable { + public var id: String { isoCode } - let isoCode: String - let nativeName: String? - let localizedName: String? + public let isoCode: String + public let nativeName: String? + public let localizedName: String? - static var allAvailableLanguages: [StatusEditorLanguage] = Locale.LanguageCode.isoLanguageCodes + public static var allAvailableLanguages: [Language] = Locale.LanguageCode.isoLanguageCodes .filter { $0.identifier.count == 2 } .map { lang in let nativeLocale = Locale(languageComponents: Locale.Language.Components(languageCode: lang)) - return StatusEditorLanguage( + return Language( isoCode: lang.identifier, nativeName: nativeLocale.localizedString(forLanguageCode: lang.identifier)?.capitalized, localizedName: Locale.current.localizedString(forLanguageCode: lang.identifier)?.localizedCapitalized diff --git a/Packages/Status/Sources/Status/Editor/Components/StatusEditorAccessoryView.swift b/Packages/Status/Sources/Status/Editor/Components/StatusEditorAccessoryView.swift index 384e7481..11b74018 100644 --- a/Packages/Status/Sources/Status/Editor/Components/StatusEditorAccessoryView.swift +++ b/Packages/Status/Sources/Status/Editor/Components/StatusEditorAccessoryView.swift @@ -181,7 +181,7 @@ struct StatusEditorAccessoryView: View { } } - private func languageSheetSection(languages: [StatusEditorLanguage]) -> some View { + private func languageSheetSection(languages: [Language]) -> some View { ForEach(languages) { language in HStack { languageTextView( @@ -274,18 +274,18 @@ struct StatusEditorAccessoryView: View { .font(.scaledCallout) } - private var recentlyUsedLanguages: [StatusEditorLanguage] { + private var recentlyUsedLanguages: [Language] { preferences.recentlyUsedLanguages.compactMap { isoCode in - StatusEditorLanguage.allAvailableLanguages.first { $0.isoCode == isoCode } + Language.allAvailableLanguages.first { $0.isoCode == isoCode } } } - private var otherLanguages: [StatusEditorLanguage] { - StatusEditorLanguage.allAvailableLanguages.filter { !preferences.recentlyUsedLanguages.contains($0.isoCode) } + private var otherLanguages: [Language] { + Language.allAvailableLanguages.filter { !preferences.recentlyUsedLanguages.contains($0.isoCode) } } - private func languageSearchResult(query: String) -> [StatusEditorLanguage] { - StatusEditorLanguage.allAvailableLanguages.filter { language in + private func languageSearchResult(query: String) -> [Language] { + Language.allAvailableLanguages.filter { language in guard !languageSearch.isEmpty else { return true }