Code cleanup / format / lint

This commit is contained in:
Thomas Ricouard 2023-01-27 20:36:40 +01:00
parent 8cac9df8c6
commit b89221a535
29 changed files with 239 additions and 262 deletions

View file

@ -5,8 +5,8 @@
// Created by Thomas Durand on 26/01/2023. // Created by Thomas Durand on 26/01/2023.
// //
import UIKit
import MobileCoreServices import MobileCoreServices
import UIKit
import UniformTypeIdentifiers import UniformTypeIdentifiers
import Models import Models

View file

@ -2,8 +2,8 @@ import Account
import AppAccount import AppAccount
import DesignSystem import DesignSystem
import Env import Env
import SwiftUI
import Models import Models
import SwiftUI
struct SideBarView<Content: View>: View { struct SideBarView<Content: View>: View {
@EnvironmentObject private var appAccounts: AppAccountsManager @EnvironmentObject private var appAccounts: AppAccountsManager

View file

@ -1,9 +1,9 @@
import SwiftUI
import Account import Account
import AppAccount
import DesignSystem import DesignSystem
import Env import Env
import Models import Models
import AppAccount import SwiftUI
struct AccountSettingsView: View { struct AccountSettingsView: View {
@Environment(\.dismiss) private var dismiss @Environment(\.dismiss) private var dismiss
@ -54,7 +54,6 @@ struct AccountSettingsView: View {
} label: { } label: {
Text("account.action.logout") Text("account.action.logout")
} }
} }
.listRowBackground(theme.primaryBackgroundColor) .listRowBackground(theme.primaryBackgroundColor)
} }

View file

@ -8,7 +8,6 @@ import SwiftUI
import UserNotifications import UserNotifications
struct ContentSettingsView: View { struct ContentSettingsView: View {
@EnvironmentObject private var userPreferences: UserPreferences @EnvironmentObject private var userPreferences: UserPreferences
@EnvironmentObject private var theme: Theme @EnvironmentObject private var theme: Theme
@ -29,7 +28,6 @@ struct ContentSettingsView: View {
userPreferences.appDefaultPostsSensitive = userPreferences.postIsSensitive userPreferences.appDefaultPostsSensitive = userPreferences.postIsSensitive
userPreferences.appDefaultPostVisibility = userPreferences.postVisibility userPreferences.appDefaultPostVisibility = userPreferences.postVisibility
} }
} }
Section("settings.content.reading") { Section("settings.content.reading") {
@ -54,22 +52,15 @@ struct ContentSettingsView: View {
} }
.disabled(userPreferences.useInstanceContentSettings) .disabled(userPreferences.useInstanceContentSettings)
Toggle(isOn: $userPreferences.appDefaultPostsSensitive) { Toggle(isOn: $userPreferences.appDefaultPostsSensitive) {
Text("settings.content.default-sensitive") Text("settings.content.default-sensitive")
} }
.disabled(userPreferences.useInstanceContentSettings) .disabled(userPreferences.useInstanceContentSettings)
} }
.listRowBackground(theme.primaryBackgroundColor) .listRowBackground(theme.primaryBackgroundColor)
} }
.navigationTitle("settings.content.navigation-title") .navigationTitle("settings.content.navigation-title")
.scrollContentBackground(.hidden) .scrollContentBackground(.hidden)
.background(theme.secondaryBackgroundColor) .background(theme.secondaryBackgroundColor)
} }
} }

View file

@ -101,7 +101,6 @@ struct PushNotificationsView: View {
Text("settings.push.duplicate.footer") Text("settings.push.duplicate.footer")
} }
.listRowBackground(theme.primaryBackgroundColor) .listRowBackground(theme.primaryBackgroundColor)
} }
.navigationTitle("settings.push.navigation-title") .navigationTitle("settings.push.navigation-title")
.scrollContentBackground(.hidden) .scrollContentBackground(.hidden)

View file

@ -75,7 +75,8 @@ struct SettingsTabs: View {
if let index = indexSet.first { if let index = indexSet.first {
let account = appAccountsManager.availableAccounts[index] let account = appAccountsManager.availableAccounts[index]
if let token = account.oauthToken, if let token = account.oauthToken,
let sub = pushNotifications.subscriptions.first(where: { $0.account.token == token }) { let sub = pushNotifications.subscriptions.first(where: { $0.account.token == token })
{
Task { Task {
await sub.deleteSubscription() await sub.deleteSubscription()
appAccountsManager.delete(account: account) appAccountsManager.delete(account: account)

View file

@ -1,8 +1,8 @@
import SwiftUI
import Models
import Env
import DesignSystem import DesignSystem
import Env
import Models
import Network import Network
import SwiftUI
struct EditFilterView: View { struct EditFilterView: View {
@Environment(\.dismiss) private var dismiss @Environment(\.dismiss) private var dismiss
@ -76,7 +76,6 @@ struct EditFilterView: View {
} }
} }
.listRowBackground(theme.primaryBackgroundColor) .listRowBackground(theme.primaryBackgroundColor)
} }
private var keywordsSection: some View { private var keywordsSection: some View {
@ -182,7 +181,7 @@ struct EditFilterView: View {
} else { } else {
let newFilter: ServerFilter = try await client.post(endpoint: ServerFilters.createFilter(json: data), let newFilter: ServerFilter = try await client.post(endpoint: ServerFilters.createFilter(json: data),
forceVersion: .v2) forceVersion: .v2)
self.filter = newFilter filter = newFilter
} }
} catch {} } catch {}
isSavingFilter = false isSavingFilter = false
@ -197,7 +196,7 @@ struct EditFilterView: View {
keyword: name, keyword: name,
wholeWord: true), wholeWord: true),
forceVersion: .v2) forceVersion: .v2)
self.keywords.append(keyword) keywords.append(keyword)
} catch {} } catch {}
isSavingFilter = false isSavingFilter = false
} }

View file

@ -1,8 +1,8 @@
import SwiftUI
import Env
import Network
import DesignSystem import DesignSystem
import Env
import Models import Models
import Network
import SwiftUI
public struct FiltersListView: View { public struct FiltersListView: View {
@Environment(\.dismiss) private var dismiss @Environment(\.dismiss) private var dismiss

View file

@ -4,7 +4,7 @@ import Models
import Network import Network
import SwiftUI import SwiftUI
extension AppAccount { public extension AppAccount {
private static var keychain: KeychainSwift { private static var keychain: KeychainSwift {
let keychain = KeychainSwift() let keychain = KeychainSwift()
#if !DEBUG && !targetEnvironment(simulator) #if !DEBUG && !targetEnvironment(simulator)
@ -13,17 +13,17 @@ extension AppAccount {
return keychain return keychain
} }
public func save() throws { func save() throws {
let encoder = JSONEncoder() let encoder = JSONEncoder()
let data = try encoder.encode(self) let data = try encoder.encode(self)
Self.keychain.set(data, forKey: key) Self.keychain.set(data, forKey: key)
} }
public func delete() { func delete() {
Self.keychain.delete(key) Self.keychain.delete(key)
} }
public static func retrieveAll() -> [AppAccount] { static func retrieveAll() -> [AppAccount] {
migrateLegacyAccounts() migrateLegacyAccounts()
let keychain = Self.keychain let keychain = Self.keychain
let decoder = JSONDecoder() let decoder = JSONDecoder()
@ -39,7 +39,7 @@ extension AppAccount {
return accounts return accounts
} }
public static func migrateLegacyAccounts() { static func migrateLegacyAccounts() {
let keychain = KeychainSwift() let keychain = KeychainSwift()
let decoder = JSONDecoder() let decoder = JSONDecoder()
let keys = keychain.allKeys let keys = keychain.allKeys
@ -52,7 +52,7 @@ extension AppAccount {
} }
} }
public static func deleteAll() { static func deleteAll() {
let keychain = Self.keychain let keychain = Self.keychain
let keys = keychain.allKeys let keys = keychain.allKeys
for key in keys { for key in keys {

View file

@ -64,7 +64,7 @@ public class PushNotificationsService: ObservableObject {
await withTaskGroup(of: Void.self, body: { group in await withTaskGroup(of: Void.self, body: { group in
group.addTask { group.addTask {
await subscription.fetchSubscription() await subscription.fetchSubscription()
if await subscription.subscription != nil && !forceCreate { if await subscription.subscription != nil, !forceCreate {
await subscription.deleteSubscription() await subscription.deleteSubscription()
await subscription.updateSubscription() await subscription.updateSubscription()
} else if forceCreate { } else if forceCreate {

View file

@ -110,7 +110,8 @@ public class RouterPath: ObservableObject {
} else if let client = client, } else if let client = client,
client.isAuth, client.isAuth,
client.hasConnection(with: url), client.hasConnection(with: url),
let id = Int(url.lastPathComponent) { let id = Int(url.lastPathComponent)
{
if url.absoluteString.contains(client.server) { if url.absoluteString.contains(client.server) {
navigate(to: .statusDetail(id: String(id))) navigate(to: .statusDetail(id: String(id)))
} else { } else {

View file

@ -26,52 +26,37 @@ public class UserPreferences: ObservableObject {
@AppStorage("app_default_post_visibility") public var appDefaultPostVisibility: Models.Visibility = .pub @AppStorage("app_default_post_visibility") public var appDefaultPostVisibility: Models.Visibility = .pub
@AppStorage("app_default_posts_sensitive") public var appDefaultPostsSensitive = false @AppStorage("app_default_posts_sensitive") public var appDefaultPostsSensitive = false
public var postVisibility: Models.Visibility { public var postVisibility: Models.Visibility {
get{
if useInstanceContentSettings { if useInstanceContentSettings {
return serverPreferences?.postVisibility ?? .pub return serverPreferences?.postVisibility ?? .pub
} } else {
else {
return appDefaultPostVisibility return appDefaultPostVisibility
} }
} }
}
public var postIsSensitive: Bool { public var postIsSensitive: Bool {
get {
if useInstanceContentSettings { if useInstanceContentSettings {
return serverPreferences?.postIsSensitive ?? false return serverPreferences?.postIsSensitive ?? false
} } else {
else {
return appDefaultPostsSensitive return appDefaultPostsSensitive
} }
} }
}
public var autoExpandSpoilers: Bool { public var autoExpandSpoilers: Bool {
get {
if useInstanceContentSettings { if useInstanceContentSettings {
return serverPreferences?.autoExpandSpoilers ?? true return serverPreferences?.autoExpandSpoilers ?? true
} } else {
else {
return appAutoExpandSpoilers return appAutoExpandSpoilers
} }
} }
}
public var autoExpandMedia: ServerPreferences.AutoExpandMedia { public var autoExpandMedia: ServerPreferences.AutoExpandMedia {
get {
if useInstanceContentSettings { if useInstanceContentSettings {
return serverPreferences?.autoExpandMedia ?? .hideSensitive return serverPreferences?.autoExpandMedia ?? .hideSensitive
} } else {
else {
return appAutoExpandMedia return appAutoExpandMedia
} }
} }
}
public var pushNotificationsCount: Int { public var pushNotificationsCount: Int {
get { get {

View file

@ -20,7 +20,8 @@ public struct AppAccount: Codable, Identifiable, Hashable {
public init(server: String, public init(server: String,
accountName: String?, accountName: String?,
oauthToken: OauthToken? = nil) { oauthToken: OauthToken? = nil)
{
self.server = server self.server = server
self.accountName = accountName self.accountName = accountName
self.oauthToken = oauthToken self.oauthToken = oauthToken

View file

@ -35,9 +35,9 @@ public struct NullableString: Codable, Equatable, Hashable {
public init(from decoder: Decoder) throws { public init(from decoder: Decoder) throws {
do { do {
let container = try decoder.singleValueContainer() let container = try decoder.singleValueContainer()
self.value = try container.decode(String.self) value = try container.decode(String.self)
} catch { } catch {
self.value = nil value = nil
} }
} }
} }

View file

@ -23,8 +23,8 @@ public struct ServerFilter: Codable, Identifiable, Hashable {
public let expireIn: Int? public let expireIn: Int?
} }
extension ServerFilter.Context { public extension ServerFilter.Context {
public var iconName: String { var iconName: String {
switch self { switch self {
case .home: case .home:
return "rectangle.on.rectangle" return "rectangle.on.rectangle"
@ -39,7 +39,7 @@ extension ServerFilter.Context {
} }
} }
public var name: String { var name: String {
switch self { switch self {
case .home: case .home:
return "Home and lists" return "Home and lists"
@ -55,8 +55,8 @@ extension ServerFilter.Context {
} }
} }
extension ServerFilter.Action { public extension ServerFilter.Action {
public var label: String { var label: String {
switch self { switch self {
case .warn: case .warn:
return "Hide with a warning" return "Hide with a warning"

View file

@ -57,7 +57,8 @@ public struct ServerFilterData: Encodable {
public init(title: String, public init(title: String,
context: [ServerFilter.Context], context: [ServerFilter.Context],
filterAction: ServerFilter.Action, filterAction: ServerFilter.Action,
expireIn: Int?) { expireIn: Int?)
{
self.title = title self.title = title
self.context = context self.context = context
self.filterAction = filterAction self.filterAction = filterAction

View file

@ -76,7 +76,7 @@ class NotificationsViewModel: ObservableObject {
newNotifications = newNotifications.filter { notification in newNotifications = newNotifications.filter { notification in
!consolidatedNotifications.contains(where: { $0.id == notification.id }) !consolidatedNotifications.contains(where: { $0.id == notification.id })
} }
self.notifications.append(contentsOf: newNotifications) notifications.append(contentsOf: newNotifications)
consolidatedNotifications.insert(contentsOf: newNotifications.consolidated(), at: 0) consolidatedNotifications.insert(contentsOf: newNotifications.consolidated(), at: 0)
} }
withAnimation { withAnimation {
@ -98,7 +98,7 @@ class NotificationsViewModel: ObservableObject {
maxId: lastId, maxId: lastId,
types: queryTypes)) types: queryTypes))
consolidatedNotifications.append(contentsOf: newNotifications.consolidated()) consolidatedNotifications.append(contentsOf: newNotifications.consolidated())
self.notifications.append(contentsOf: newNotifications) notifications.append(contentsOf: newNotifications)
state = .display(notifications: consolidatedNotifications, nextPageState: newNotifications.count < 15 ? .none : .hasNextPage) state = .display(notifications: consolidatedNotifications, nextPageState: newNotifications.count < 15 ? .none : .hasNextPage)
} catch { } catch {
state = .error(error: error) state = .error(error: error)

View file

@ -163,7 +163,6 @@ struct StatusEditorMediaView: View {
} message: { } message: {
Text(error.error ?? "") Text(error.error ?? "")
} }
} }
private var altMarker: some View { private var altMarker: some View {

View file

@ -1,9 +1,9 @@
import AVFoundation
import Foundation import Foundation
import PhotosUI import PhotosUI
import SwiftUI import SwiftUI
import UIKit import UIKit
import UniformTypeIdentifiers import UniformTypeIdentifiers
import AVFoundation
@MainActor @MainActor
enum StatusEditorUTTypeSupported: String, CaseIterable { enum StatusEditorUTTypeSupported: String, CaseIterable {
@ -74,7 +74,7 @@ struct MovieFileTranseferable: Transferable {
private let url: URL private let url: URL
var compressedVideoURL: URL? { var compressedVideoURL: URL? {
get async { get async {
return await withCheckedContinuation { continuation in await withCheckedContinuation { continuation in
let urlAsset = AVURLAsset(url: url, options: nil) let urlAsset = AVURLAsset(url: url, options: nil)
guard let exportSession = AVAssetExportSession(asset: urlAsset, presetName: AVAssetExportPresetMediumQuality) else { guard let exportSession = AVAssetExportSession(asset: urlAsset, presetName: AVAssetExportPresetMediumQuality) else {
continuation.resume(returning: nil) continuation.resume(returning: nil)
@ -84,7 +84,7 @@ struct MovieFileTranseferable: Transferable {
exportSession.outputURL = outputURL exportSession.outputURL = outputURL
exportSession.outputFileType = .mp4 exportSession.outputFileType = .mp4
exportSession.shouldOptimizeForNetworkUse = true exportSession.shouldOptimizeForNetworkUse = true
exportSession.exportAsynchronously { () -> Void in exportSession.exportAsynchronously { () in
continuation.resume(returning: outputURL) continuation.resume(returning: outputURL)
} }
} }

View file

@ -56,6 +56,7 @@ public class StatusEditorViewModel: ObservableObject {
inflateSelectedMedias() inflateSelectedMedias()
} }
} }
@Published var isMediasLoading: Bool = false @Published var isMediasLoading: Bool = false
@Published var mediasImages: [StatusEditorMediaContainer] = [] @Published var mediasImages: [StatusEditorMediaContainer] = []

View file

@ -225,7 +225,6 @@ public struct StatusRowView: View {
private func makeStatusContentView(status: AnyStatus) -> some View { private func makeStatusContentView(status: AnyStatus) -> some View {
Group { Group {
if !status.spoilerText.asRawText.isEmpty { if !status.spoilerText.asRawText.isEmpty {
HStack(alignment: .top) { HStack(alignment: .top) {
Text("⚠︎") Text("⚠︎")
.font(.system(.subheadline, weight: .bold)) .font(.system(.subheadline, weight: .bold))
@ -376,7 +375,8 @@ public struct StatusRowView: View {
!viewModel.isCompact, !viewModel.isCompact,
theme.statusDisplayStyle == .large, theme.statusDisplayStyle == .large,
status.content.statusesURLs.isEmpty, status.content.statusesURLs.isEmpty,
status.mediaAttachments.isEmpty { status.mediaAttachments.isEmpty
{
StatusCardView(card: card) StatusCardView(card: card)
} }
} }