diff --git a/Packages/StatusKit/Sources/StatusKit/Row/StatusRowViewModel.swift b/Packages/StatusKit/Sources/StatusKit/Row/StatusRowViewModel.swift index 91e5d096c..03946b98c 100644 --- a/Packages/StatusKit/Sources/StatusKit/Row/StatusRowViewModel.swift +++ b/Packages/StatusKit/Sources/StatusKit/Row/StatusRowViewModel.swift @@ -315,29 +315,35 @@ import SwiftUI return } - withAnimation { - isLoadingTranslation = true - } if preferredTranslationType != .useDeepl { - let translation: Translation? = try? await client.post(endpoint: Statuses.translate(id: finalStatus.id, - lang: userLang)) - + await translateWithInstance(userLang: userLang) + if translation == nil { await translateWithDeepL(userLang: userLang) - } else { - withAnimation { - self.translation = translation - isLoadingTranslation = false - } - } - - if self.translation == nil { - instanceTranslationError = true } } else { await translateWithDeepL(userLang: userLang) + if translation == nil { + await translateWithInstance(userLang: userLang) + } + } + + var hasShown = false +#if canImport(_Translation_SwiftUI) + if translation == nil, + #available(iOS 17.4, *) { + showAppleTranslation = true + hasShown = true + } +#endif + + if !hasShown, + translation == nil { + if preferredTranslationType == .useDeepl { deeplTranslationError = true + } else { + instanceTranslationError = true } } } @@ -355,6 +361,20 @@ import SwiftUI isLoadingTranslation = false } } + + func translateWithInstance(userLang: String) async { + withAnimation { + isLoadingTranslation = true + } + + let translation: Translation? = try? await client.post(endpoint: Statuses.translate(id: finalStatus.id, + lang: userLang)) + + withAnimation { + self.translation = translation + isLoadingTranslation = false + } + } private func getDeepLClient() -> DeepLClient { let userAPIfree = UserPreferences.shared.userDeeplAPIFree