mirror of
https://github.com/Dimillian/IceCubesApp.git
synced 2024-11-22 08:20:59 +00:00
Swiftformat
This commit is contained in:
parent
425a4eef4f
commit
ca4e80101f
39 changed files with 168 additions and 160 deletions
|
@ -62,7 +62,8 @@ struct IceCubesApp: App {
|
|||
pushNotificationsService.handledNotification = nil
|
||||
if appAccountsManager.currentAccount.oauthToken?.accessToken != notification?.account.token.accessToken,
|
||||
let account = appAccountsManager.availableAccounts.first(where:
|
||||
{ $0.oauthToken?.accessToken == notification?.account.token.accessToken }) {
|
||||
{ $0.oauthToken?.accessToken == notification?.account.token.accessToken })
|
||||
{
|
||||
appAccountsManager.currentAccount = account
|
||||
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
|
||||
selectedTab = .notifications
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import SwiftUI
|
||||
import Models
|
||||
import Env
|
||||
import DesignSystem
|
||||
import Status
|
||||
import Env
|
||||
import Models
|
||||
import Network
|
||||
import Status
|
||||
import SwiftUI
|
||||
|
||||
public struct ReportView: View {
|
||||
@Environment(\.dismiss) private var dismiss
|
||||
|
@ -16,7 +16,7 @@ public struct ReportView: View {
|
|||
@State private var isSendingReport: Bool = false
|
||||
|
||||
struct ReportSent: Decodable {
|
||||
let id : String
|
||||
let id: String
|
||||
}
|
||||
|
||||
public var body: some View {
|
||||
|
@ -45,9 +45,9 @@ public struct ReportView: View {
|
|||
Task {
|
||||
do {
|
||||
let _: ReportSent =
|
||||
try await client.post(endpoint: Statuses.report(accountId: status.account.id,
|
||||
statusId: status.id,
|
||||
comment: commentText))
|
||||
try await client.post(endpoint: Statuses.report(accountId: status.account.id,
|
||||
statusId: status.id,
|
||||
comment: commentText))
|
||||
dismiss()
|
||||
isSendingReport = false
|
||||
} catch {
|
||||
|
|
|
@ -21,7 +21,7 @@ struct ContentSettingsView: View {
|
|||
|
||||
Section("settings.content.media") {
|
||||
Toggle(isOn: $userPreferences.showAltTextForMedia) {
|
||||
Text("settings.content.media.show.alt")
|
||||
Text("settings.content.media.show.alt")
|
||||
}
|
||||
}.listRowBackground(theme.primaryBackgroundColor)
|
||||
|
||||
|
@ -69,7 +69,6 @@ struct ContentSettingsView: View {
|
|||
}
|
||||
|
||||
.listRowBackground(theme.primaryBackgroundColor)
|
||||
|
||||
}
|
||||
.navigationTitle("settings.content.navigation-title")
|
||||
.scrollContentBackground(.hidden)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import DesignSystem
|
||||
import Env
|
||||
import Models
|
||||
import Network
|
||||
import Status
|
||||
import SwiftUI
|
||||
import Network
|
||||
|
||||
struct DisplaySettingsView: View {
|
||||
typealias FontState = Theme.FontState
|
||||
|
|
|
@ -44,9 +44,9 @@ struct IconSelectorView: View {
|
|||
let icons: [Icon]
|
||||
|
||||
static let items = [
|
||||
IconSelector(title:"settings.app.icon.official".localized, icons: [.primary, .alt1, .alt2, .alt3, .alt4, .alt5, .alt6, .alt7, .alt8,
|
||||
.alt9, .alt10, .alt11, .alt12, .alt13, .alt14,
|
||||
.alt15, .alt16, .alt17, .alt18, .alt19, .alt25]),
|
||||
IconSelector(title: "settings.app.icon.official".localized, icons: [.primary, .alt1, .alt2, .alt3, .alt4, .alt5, .alt6, .alt7, .alt8,
|
||||
.alt9, .alt10, .alt11, .alt12, .alt13, .alt14,
|
||||
.alt15, .alt16, .alt17, .alt18, .alt19, .alt25]),
|
||||
IconSelector(title: "\("settings.app.icon.designed-by".localized) Albert Kinng", icons: [.alt20, .alt21, .alt22, .alt23, .alt24]),
|
||||
IconSelector(title: "\("settings.app.icon.designed-by".localized) Dan van Moll", icons: [.alt26, .alt27, .alt28]),
|
||||
IconSelector(title: "\("settings.app.icon.designed-by".localized) @te6-in (GitHub)", icons: [.alt29, .alt30, .alt31, .alt32]),
|
||||
|
@ -108,7 +108,7 @@ struct IconSelectorView: View {
|
|||
}
|
||||
|
||||
extension String {
|
||||
var localized: String {
|
||||
return NSLocalizedString(self, comment:"")
|
||||
}
|
||||
var localized: String {
|
||||
return NSLocalizedString(self, comment: "")
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import AppAccount
|
||||
import CryptoKit
|
||||
import Env
|
||||
import Intents
|
||||
import KeychainSwift
|
||||
import Models
|
||||
import UIKit
|
||||
import UserNotifications
|
||||
import Intents
|
||||
import Network
|
||||
import Notifications
|
||||
import UIKit
|
||||
import UserNotifications
|
||||
|
||||
@MainActor
|
||||
class NotificationService: UNNotificationServiceExtension {
|
||||
|
@ -63,7 +63,6 @@ class NotificationService: UNNotificationServiceExtension {
|
|||
bestAttemptContent.userInfo["plaintext"] = plaintextData
|
||||
bestAttemptContent.sound = UNNotificationSound(named: UNNotificationSoundName(rawValue: "glass.caf"))
|
||||
|
||||
|
||||
let preferences = UserPreferences.shared
|
||||
preferences.pushNotificationsCount += 1
|
||||
|
||||
|
@ -83,7 +82,8 @@ class NotificationService: UNNotificationServiceExtension {
|
|||
try? image.pngData()?.write(to: fileURL)
|
||||
|
||||
if let remoteNotification = await toRemoteNotification(localNotification: notification),
|
||||
let type = remoteNotification.supportedType {
|
||||
let type = remoteNotification.supportedType
|
||||
{
|
||||
let intent = buildMessageIntent(remoteNotification: remoteNotification,
|
||||
currentUser: bestAttemptContent.userInfo["i"] as? String ?? "",
|
||||
avatarURL: fileURL)
|
||||
|
@ -127,7 +127,8 @@ class NotificationService: UNNotificationServiceExtension {
|
|||
|
||||
private func buildMessageIntent(remoteNotification: Models.Notification,
|
||||
currentUser: String,
|
||||
avatarURL: URL) -> INSendMessageIntent {
|
||||
avatarURL: URL) -> INSendMessageIntent
|
||||
{
|
||||
let handle = INPersonHandle(value: remoteNotification.account.id, type: .unknown)
|
||||
let avatar = INImage(url: avatarURL)
|
||||
let sender = INPerson(personHandle: handle,
|
||||
|
|
|
@ -19,6 +19,7 @@ public class AppAccountViewModel: ObservableObject {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Published var roundedAvatar: UIImage?
|
||||
|
||||
var acct: String {
|
||||
|
@ -56,14 +57,15 @@ public class AppAccountViewModel: ObservableObject {
|
|||
appAccount.accountName = "\(account.acct)@\(appAccount.server)"
|
||||
try appAccount.save()
|
||||
}
|
||||
} catch { }
|
||||
} catch {}
|
||||
}
|
||||
|
||||
private func refreshAvatar(account: Account) async {
|
||||
if let (data, _) = try? await URLSession.shared.data(from: account.avatar),
|
||||
let image = UIImage(data: data)?.roundedImage {
|
||||
roundedAvatar = image
|
||||
Self.avatarsCache[account.id] = image
|
||||
let image = UIImage(data: data)?.roundedImage
|
||||
{
|
||||
roundedAvatar = image
|
||||
Self.avatarsCache[account.id] = image
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -64,7 +64,7 @@ public struct AppAccountsSelectorView: View {
|
|||
.frame(width: 9, height: 9)
|
||||
}
|
||||
}
|
||||
.accessibilityLabel("accessibility.app-account.selector.accounts")
|
||||
.accessibilityLabel("accessibility.app-account.selector.accounts")
|
||||
}
|
||||
|
||||
@ViewBuilder
|
||||
|
|
|
@ -4,7 +4,7 @@ import Network
|
|||
|
||||
@MainActor
|
||||
public class CurrentAccount: ObservableObject {
|
||||
static private var accountsCache: [String: Account] = [:]
|
||||
private static var accountsCache: [String: Account] = [:]
|
||||
|
||||
@Published public private(set) var account: Account?
|
||||
@Published public private(set) var lists: [List] = []
|
||||
|
|
|
@ -135,18 +135,19 @@ public class PushNotificationsService: NSObject, ObservableObject {
|
|||
}
|
||||
|
||||
extension PushNotificationsService: UNUserNotificationCenterDelegate {
|
||||
public func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse) async {
|
||||
public func userNotificationCenter(_: UNUserNotificationCenter, didReceive response: UNNotificationResponse) async {
|
||||
guard let plaintext = response.notification.request.content.userInfo["plaintext"] as? Data,
|
||||
let mastodonPushNotification = try? JSONDecoder().decode(MastodonPushNotification.self, from: plaintext),
|
||||
let account = subscriptions.first(where: { $0.account.token.accessToken == mastodonPushNotification.accessToken }) else {
|
||||
return
|
||||
let account = subscriptions.first(where: { $0.account.token.accessToken == mastodonPushNotification.accessToken })
|
||||
else {
|
||||
return
|
||||
}
|
||||
do {
|
||||
let client = Client(server: account.account.server, oauthToken: account.account.token)
|
||||
let notification: Models.Notification =
|
||||
try await client.get(endpoint: Notifications.notification(id:String(mastodonPushNotification.notificationID)))
|
||||
self.handledNotification = .init(account: account.account, notification: notification)
|
||||
} catch { }
|
||||
try await client.get(endpoint: Notifications.notification(id: String(mastodonPushNotification.notificationID)))
|
||||
handledNotification = .init(account: account.account, notification: notification)
|
||||
} catch {}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -42,7 +42,7 @@ public enum StatusAction: String, CaseIterable, Identifiable {
|
|||
}
|
||||
|
||||
public func color(themeTintColor: Color, useThemeColor: Bool, outside: Bool) -> Color {
|
||||
if (useThemeColor) {
|
||||
if useThemeColor {
|
||||
return outside ? themeTintColor : .gray
|
||||
}
|
||||
|
||||
|
|
|
@ -55,7 +55,6 @@ public final class Account: Codable, Identifiable, Equatable, Hashable {
|
|||
return header.lastPathComponent != "missing.png"
|
||||
}
|
||||
|
||||
|
||||
public init(id: String, username: String, displayName: String, avatar: URL, header: URL, acct: String, note: HTMLString, createdAt: ServerDate, followersCount: Int, followingCount: Int, statusesCount: Int, lastStatusAt: String? = nil, fields: [Account.Field], locked: Bool, emojis: [Emoji], url: URL? = nil, source: Account.Source? = nil, bot: Bool, discoverable: Bool? = nil) {
|
||||
self.id = id
|
||||
self.username = username
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import Foundation
|
||||
|
||||
extension String {
|
||||
public func escape() -> String {
|
||||
public extension String {
|
||||
func escape() -> String {
|
||||
return replacingOccurrences(of: "&", with: "&")
|
||||
.replacingOccurrences(of: "<", with: "<")
|
||||
.replacingOccurrences(of: ">", with: ">")
|
||||
|
@ -10,7 +10,7 @@ extension String {
|
|||
.replacingOccurrences(of: "'", with: "’")
|
||||
}
|
||||
|
||||
public func URLSafeBase64ToBase64() -> String {
|
||||
func URLSafeBase64ToBase64() -> String {
|
||||
var base64 = replacingOccurrences(of: "-", with: "+").replacingOccurrences(of: "_", with: "/")
|
||||
let countMod4 = count % 4
|
||||
|
||||
|
|
|
@ -5,32 +5,32 @@
|
|||
// Created by Jérôme Danthinne on 31/01/2023.
|
||||
//
|
||||
|
||||
import Models
|
||||
import Foundation
|
||||
import Models
|
||||
|
||||
extension Array where Element == Models.Notification {
|
||||
func consolidated(selectedType: Models.Notification.NotificationType?) async -> [ConsolidatedNotification] {
|
||||
await withCheckedContinuation({ result in
|
||||
await withCheckedContinuation { result in
|
||||
DispatchQueue.global().async {
|
||||
let notifications: [ConsolidatedNotification] =
|
||||
Dictionary(grouping: self) { $0.consolidationId(selectedType: selectedType) }
|
||||
.values
|
||||
.compactMap { notifications in
|
||||
guard let notification = notifications.first,
|
||||
let supportedType = notification.supportedType
|
||||
else { return nil }
|
||||
Dictionary(grouping: self) { $0.consolidationId(selectedType: selectedType) }
|
||||
.values
|
||||
.compactMap { notifications in
|
||||
guard let notification = notifications.first,
|
||||
let supportedType = notification.supportedType
|
||||
else { return nil }
|
||||
|
||||
return ConsolidatedNotification(notifications: notifications,
|
||||
type: supportedType,
|
||||
createdAt: notification.createdAt,
|
||||
accounts: notifications.map(\.account),
|
||||
status: notification.status)
|
||||
}
|
||||
.sorted {
|
||||
$0.createdAt.asDate > $1.createdAt.asDate
|
||||
}
|
||||
return ConsolidatedNotification(notifications: notifications,
|
||||
type: supportedType,
|
||||
createdAt: notification.createdAt,
|
||||
accounts: notifications.map(\.account),
|
||||
status: notification.status)
|
||||
}
|
||||
.sorted {
|
||||
$0.createdAt.asDate > $1.createdAt.asDate
|
||||
}
|
||||
result.resume(returning: notifications)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,9 +2,9 @@ import DesignSystem
|
|||
import EmojiText
|
||||
import Env
|
||||
import Models
|
||||
import Network
|
||||
import Status
|
||||
import SwiftUI
|
||||
import Network
|
||||
|
||||
struct NotificationRowView: View {
|
||||
@EnvironmentObject private var theme: Theme
|
||||
|
@ -28,7 +28,8 @@ struct NotificationRowView: View {
|
|||
makeMainLabel(type: notification.type)
|
||||
makeContent(type: notification.type)
|
||||
if notification.type == .follow_request,
|
||||
followRequests.map(\.id).contains(notification.accounts[0].id) {
|
||||
followRequests.map(\.id).contains(notification.accounts[0].id)
|
||||
{
|
||||
FollowRequestButtons(account: notification.accounts[0])
|
||||
}
|
||||
}
|
||||
|
|
|
@ -94,12 +94,13 @@ public struct StatusDetailView: View {
|
|||
.navigationBarTitleDisplayMode(.inline)
|
||||
}
|
||||
|
||||
private func makeStatusesListView(statuses: [Status], date: Date) -> some View {
|
||||
private func makeStatusesListView(statuses: [Status], date _: Date) -> some View {
|
||||
ForEach(statuses) { status in
|
||||
var isReplyToPrevious: Bool = false
|
||||
if let index = statuses.firstIndex(where: { $0.id == status.id }),
|
||||
index > 0,
|
||||
statuses[index - 1].id == status.inReplyToId {
|
||||
statuses[index - 1].id == status.inReplyToId
|
||||
{
|
||||
isReplyToPrevious = true
|
||||
}
|
||||
let viewModel: StatusRowViewModel = .init(status: status,
|
||||
|
|
|
@ -57,8 +57,8 @@ enum StatusEditorUTTypeSupported: String, CaseIterable {
|
|||
if let image = result as? UIImage {
|
||||
return image
|
||||
} else if let imageURL = result as? URL,
|
||||
let data = try? Data(contentsOf: imageURL),
|
||||
let image = UIImage(data: data)
|
||||
let data = try? Data(contentsOf: imageURL),
|
||||
let image = UIImage(data: data)
|
||||
{
|
||||
return image
|
||||
} else if let data = result as? Data,
|
||||
|
|
|
@ -7,9 +7,9 @@ import Models
|
|||
import Network
|
||||
import NukeUI
|
||||
import PhotosUI
|
||||
import StoreKit
|
||||
import SwiftUI
|
||||
import UIKit
|
||||
import StoreKit
|
||||
|
||||
public struct StatusEditorView: View {
|
||||
@EnvironmentObject private var appAccounts: AppAccountsManager
|
||||
|
@ -204,8 +204,8 @@ public struct StatusEditorView: View {
|
|||
object: nil)
|
||||
if !viewModel.mode.isInShareExtension && !preferences.requestedReview {
|
||||
if let scene = UIApplication.shared.connectedScenes.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene {
|
||||
SKStoreReviewController.requestReview(in: scene)
|
||||
}
|
||||
SKStoreReviewController.requestReview(in: scene)
|
||||
}
|
||||
preferences.requestedReview = true
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import DesignSystem
|
||||
import EmojiText
|
||||
import Models
|
||||
import SwiftUI
|
||||
import Env
|
||||
import Models
|
||||
import Network
|
||||
import SwiftUI
|
||||
|
||||
@MainActor
|
||||
public struct StatusEmbeddedView: View {
|
||||
|
@ -27,7 +27,7 @@ public struct StatusEmbeddedView: View {
|
|||
client: client,
|
||||
routerPath: routerPath,
|
||||
showActions: false))
|
||||
.environment(\.isCompact, true)
|
||||
.environment(\.isCompact, true)
|
||||
}
|
||||
Spacer()
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import DesignSystem
|
||||
import Env
|
||||
import Models
|
||||
import Network
|
||||
import Shimmer
|
||||
import SwiftUI
|
||||
import Network
|
||||
|
||||
public struct StatusesListView<Fetcher>: View where Fetcher: StatusesFetcher {
|
||||
@EnvironmentObject private var theme: Theme
|
||||
|
|
|
@ -41,7 +41,8 @@ public struct StatusRowView: View {
|
|||
}
|
||||
HStack(alignment: .top, spacing: .statusColumnsSpacing) {
|
||||
if !isCompact,
|
||||
theme.avatarPosition == .leading {
|
||||
theme.avatarPosition == .leading
|
||||
{
|
||||
Button {
|
||||
viewModel.routerPath.navigate(to: .accountDetailWithAccount(account: status.account))
|
||||
} label: {
|
||||
|
|
|
@ -344,8 +344,8 @@ public class StatusRowViewModel: ObservableObject {
|
|||
following: nil),
|
||||
forceVersion: .v2)
|
||||
if let status = results?.statuses.first {
|
||||
self.localStatusId = status.id
|
||||
self.localStatus = status
|
||||
localStatusId = status.id
|
||||
localStatus = status
|
||||
isLoadingRemoteContent = false
|
||||
return true
|
||||
} else {
|
||||
|
|
|
@ -63,7 +63,8 @@ struct StatusRowActionsView: View {
|
|||
ForEach(Actions.allCases, id: \.self) { action in
|
||||
if action == .share {
|
||||
if let urlString = viewModel.status.reblog?.url ?? viewModel.status.url,
|
||||
let url = URL(string: urlString) {
|
||||
let url = URL(string: urlString)
|
||||
{
|
||||
ShareLink(item: url,
|
||||
subject: Text(viewModel.status.reblog?.account.safeDisplayName ?? viewModel.status.account.safeDisplayName),
|
||||
message: Text(viewModel.status.reblog?.content.asRawText ?? viewModel.status.content.asRawText)) {
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import SwiftUI
|
||||
import DesignSystem
|
||||
import Models
|
||||
import Env
|
||||
import Models
|
||||
import SwiftUI
|
||||
|
||||
struct StatusRowContentView: View {
|
||||
@Environment(\.redactionReasons) private var reasons
|
||||
|
@ -26,7 +26,8 @@ struct StatusRowContentView: View {
|
|||
|
||||
if !reasons.contains(.placeholder),
|
||||
!isCompact,
|
||||
(viewModel.isEmbedLoading || viewModel.embeddedStatus != nil) {
|
||||
viewModel.isEmbedLoading || viewModel.embeddedStatus != nil
|
||||
{
|
||||
StatusEmbeddedView(status: viewModel.embeddedStatus ?? Status.placeholder(),
|
||||
client: viewModel.client,
|
||||
routerPath: viewModel.routerPath)
|
||||
|
|
|
@ -57,7 +57,8 @@ struct StatusRowContextMenu: View {
|
|||
Divider()
|
||||
|
||||
if let urlString = viewModel.status.reblog?.url ?? viewModel.status.url,
|
||||
let url = URL(string: urlString) {
|
||||
let url = URL(string: urlString)
|
||||
{
|
||||
ShareLink(item: url,
|
||||
subject: Text(viewModel.status.reblog?.account.safeDisplayName ?? viewModel.status.account.safeDisplayName),
|
||||
message: Text(viewModel.status.reblog?.content.asRawText ?? viewModel.status.content.asRawText)) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import SwiftUI
|
||||
import DesignSystem
|
||||
import Models
|
||||
import SwiftUI
|
||||
|
||||
struct StatusRowHeaderView: View {
|
||||
@EnvironmentObject private var theme: Theme
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import SwiftUI
|
||||
import DesignSystem
|
||||
import SwiftUI
|
||||
|
||||
struct StatusRowReblogView: View {
|
||||
let viewModel: StatusRowViewModel
|
||||
|
@ -27,4 +27,3 @@ struct StatusRowReblogView: View {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import SwiftUI
|
||||
import DesignSystem
|
||||
import SwiftUI
|
||||
|
||||
struct StatusRowReplyView: View {
|
||||
let viewModel: StatusRowViewModel
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import SwiftUI
|
||||
import DesignSystem
|
||||
import Models
|
||||
import SwiftUI
|
||||
|
||||
struct StatusRowSpoilerView: View {
|
||||
let status: AnyStatus
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import SwiftUI
|
||||
import DesignSystem
|
||||
import Env
|
||||
import Models
|
||||
import DesignSystem
|
||||
import SwiftUI
|
||||
|
||||
struct StatusRowSwipeView: View {
|
||||
@EnvironmentObject private var theme: Theme
|
||||
|
@ -108,7 +108,7 @@ struct StatusRowSwipeView: View {
|
|||
|
||||
@ViewBuilder
|
||||
private func makeSwipeLabel(action: StatusAction, style: UserPreferences.SwipeActionsIconStyle) -> some View {
|
||||
switch (style) {
|
||||
switch style {
|
||||
case .iconOnly:
|
||||
Label(action.displayName(isReblogged: viewModel.isReblogged, isFavorited: viewModel.isFavorited, isBookmarked: viewModel.isBookmarked), systemImage: action.iconName(isReblogged: viewModel.isReblogged, isFavorited: viewModel.isFavorited, isBookmarked: viewModel.isBookmarked))
|
||||
.labelStyle(.iconOnly)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import SwiftUI
|
||||
import DesignSystem
|
||||
import Models
|
||||
import SwiftUI
|
||||
|
||||
struct StatusRowTextView: View {
|
||||
let status: AnyStatus
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import SwiftUI
|
||||
import Models
|
||||
import DesignSystem
|
||||
import Env
|
||||
import Models
|
||||
import SwiftUI
|
||||
|
||||
struct StatusRowTranslateView: View {
|
||||
@EnvironmentObject private var preferences: UserPreferences
|
||||
|
@ -25,7 +25,7 @@ struct StatusRowTranslateView: View {
|
|||
|
||||
var body: some View {
|
||||
if let userLang = preferences.serverPreferences?.postLanguage,
|
||||
shouldShowTranslateButton
|
||||
shouldShowTranslateButton
|
||||
{
|
||||
Button {
|
||||
Task {
|
||||
|
|
Loading…
Reference in a new issue