Swiftformat

This commit is contained in:
Thomas Ricouard 2023-02-18 07:26:48 +01:00
parent 425a4eef4f
commit ca4e80101f
39 changed files with 168 additions and 160 deletions

View file

@ -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

View file

@ -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

View file

@ -69,7 +69,6 @@ struct ContentSettingsView: View {
}
.listRowBackground(theme.primaryBackgroundColor)
}
.navigationTitle("settings.content.navigation-title")
.scrollContentBackground(.hidden)

View file

@ -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

View file

@ -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,

View file

@ -19,6 +19,7 @@ public class AppAccountViewModel: ObservableObject {
}
}
}
@Published var roundedAvatar: UIImage?
var acct: String {
@ -61,7 +62,8 @@ public class AppAccountViewModel: ObservableObject {
private func refreshAvatar(account: Account) async {
if let (data, _) = try? await URLSession.shared.data(from: account.avatar),
let image = UIImage(data: data)?.roundedImage {
let image = UIImage(data: data)?.roundedImage
{
roundedAvatar = image
Self.avatarsCache[account.id] = image
}

View file

@ -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] = []

View file

@ -135,17 +135,18 @@ 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 {
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)
handledNotification = .init(account: account.account, notification: notification)
} catch {}
}
}

View file

@ -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
}

View file

@ -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

View file

@ -1,7 +1,7 @@
import Foundation
extension String {
public func escape() -> String {
public extension String {
func escape() -> String {
return replacingOccurrences(of: "&", with: "&")
.replacingOccurrences(of: "&lt;", with: "<")
.replacingOccurrences(of: "&gt;", with: ">")
@ -10,7 +10,7 @@ extension String {
.replacingOccurrences(of: "&#39;", with: "")
}
public func URLSafeBase64ToBase64() -> String {
func URLSafeBase64ToBase64() -> String {
var base64 = replacingOccurrences(of: "-", with: "+").replacingOccurrences(of: "_", with: "/")
let countMod4 = count % 4

View file

@ -5,12 +5,12 @@
// 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) }
@ -31,6 +31,6 @@ extension Array where Element == Models.Notification {
}
result.resume(returning: notifications)
}
})
}
}
}

View file

@ -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])
}
}

View file

@ -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,

View file

@ -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

View file

@ -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 {

View file

@ -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

View file

@ -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: {

View file

@ -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 {

View file

@ -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)) {

View file

@ -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)

View file

@ -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)) {

View file

@ -1,6 +1,6 @@
import SwiftUI
import DesignSystem
import Models
import SwiftUI
struct StatusRowHeaderView: View {
@EnvironmentObject private var theme: Theme

View file

@ -1,5 +1,5 @@
import SwiftUI
import DesignSystem
import SwiftUI
struct StatusRowReblogView: View {
let viewModel: StatusRowViewModel
@ -27,4 +27,3 @@ struct StatusRowReblogView: View {
}
}
}

View file

@ -1,5 +1,5 @@
import SwiftUI
import DesignSystem
import SwiftUI
struct StatusRowReplyView: View {
let viewModel: StatusRowViewModel

View file

@ -1,6 +1,6 @@
import SwiftUI
import DesignSystem
import Models
import SwiftUI
struct StatusRowSpoilerView: View {
let status: AnyStatus

View file

@ -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)

View file

@ -1,6 +1,6 @@
import SwiftUI
import DesignSystem
import Models
import SwiftUI
struct StatusRowTextView: View {
let status: AnyStatus

View file

@ -1,7 +1,7 @@
import SwiftUI
import Models
import DesignSystem
import Env
import Models
import SwiftUI
struct StatusRowTranslateView: View {
@EnvironmentObject private var preferences: UserPreferences