diff --git a/Ferrite/DataManagement/Classes/Action+CoreDataClass.swift b/Ferrite/DataManagement/Classes/Action+CoreDataClass.swift index c060b75..62c4572 100644 --- a/Ferrite/DataManagement/Classes/Action+CoreDataClass.swift +++ b/Ferrite/DataManagement/Classes/Action+CoreDataClass.swift @@ -6,8 +6,8 @@ // // -import Foundation import CoreData +import Foundation @objc(Action) public class Action: NSManagedObject, Plugin {} diff --git a/Ferrite/DataManagement/Classes/Action+CoreDataProperties.swift b/Ferrite/DataManagement/Classes/Action+CoreDataProperties.swift index 77a867b..923d5ac 100644 --- a/Ferrite/DataManagement/Classes/Action+CoreDataProperties.swift +++ b/Ferrite/DataManagement/Classes/Action+CoreDataProperties.swift @@ -6,66 +6,61 @@ // // -import Foundation import CoreData +import Foundation - -extension Action { - - @nonobjc public class func fetchRequest() -> NSFetchRequest { - return NSFetchRequest(entityName: "Action") +public extension Action { + @nonobjc class func fetchRequest() -> NSFetchRequest { + NSFetchRequest(entityName: "Action") } - @NSManaged public var id: UUID - @NSManaged public var listId: UUID? - @NSManaged public var name: String - @NSManaged public var deeplink: String? - @NSManaged public var version: Int16 - @NSManaged public var requires: [String] - @NSManaged public var author: String - @NSManaged public var enabled: Bool - @NSManaged public var tags: NSOrderedSet? + @NSManaged var id: UUID + @NSManaged var listId: UUID? + @NSManaged var name: String + @NSManaged var deeplink: String? + @NSManaged var version: Int16 + @NSManaged var requires: [String] + @NSManaged var author: String + @NSManaged var enabled: Bool + @NSManaged var tags: NSOrderedSet? - public func getTags() -> [PluginTagJson] { - return requires.map { PluginTagJson(name: $0, colorHex: nil) } + tagArray.map { $0.toJson() } + func getTags() -> [PluginTagJson] { + requires.map { PluginTagJson(name: $0, colorHex: nil) } + tagArray.map { $0.toJson() } } } // MARK: Generated accessors for tags -extension Action { +public extension Action { @objc(insertObject:inTagsAtIndex:) - @NSManaged public func insertIntoTags(_ value: PluginTag, at idx: Int) + @NSManaged func insertIntoTags(_ value: PluginTag, at idx: Int) @objc(removeObjectFromTagsAtIndex:) - @NSManaged public func removeFromTags(at idx: Int) + @NSManaged func removeFromTags(at idx: Int) @objc(insertTags:atIndexes:) - @NSManaged public func insertIntoTags(_ values: [PluginTag], at indexes: NSIndexSet) + @NSManaged func insertIntoTags(_ values: [PluginTag], at indexes: NSIndexSet) @objc(removeTagsAtIndexes:) - @NSManaged public func removeFromTags(at indexes: NSIndexSet) + @NSManaged func removeFromTags(at indexes: NSIndexSet) @objc(replaceObjectInTagsAtIndex:withObject:) - @NSManaged public func replaceTags(at idx: Int, with value: PluginTag) + @NSManaged func replaceTags(at idx: Int, with value: PluginTag) @objc(replaceTagsAtIndexes:withTags:) - @NSManaged public func replaceTags(at indexes: NSIndexSet, with values: [PluginTag]) + @NSManaged func replaceTags(at indexes: NSIndexSet, with values: [PluginTag]) @objc(addTagsObject:) - @NSManaged public func addToTags(_ value: PluginTag) + @NSManaged func addToTags(_ value: PluginTag) @objc(removeTagsObject:) - @NSManaged public func removeFromTags(_ value: PluginTag) + @NSManaged func removeFromTags(_ value: PluginTag) @objc(addTags:) - @NSManaged public func addToTags(_ values: NSOrderedSet) + @NSManaged func addToTags(_ values: NSOrderedSet) @objc(removeTags:) - @NSManaged public func removeFromTags(_ values: NSOrderedSet) - + @NSManaged func removeFromTags(_ values: NSOrderedSet) } -extension Action : Identifiable { - -} +extension Action: Identifiable {} diff --git a/Ferrite/DataManagement/Classes/PluginList+CoreDataClass.swift b/Ferrite/DataManagement/Classes/PluginList+CoreDataClass.swift index 3788461..dc744d2 100644 --- a/Ferrite/DataManagement/Classes/PluginList+CoreDataClass.swift +++ b/Ferrite/DataManagement/Classes/PluginList+CoreDataClass.swift @@ -6,10 +6,8 @@ // // -import Foundation import CoreData +import Foundation @objc(PluginList) -public class PluginList: NSManagedObject { - -} +public class PluginList: NSManagedObject {} diff --git a/Ferrite/DataManagement/Classes/PluginList+CoreDataProperties.swift b/Ferrite/DataManagement/Classes/PluginList+CoreDataProperties.swift index 1acc669..92bdae9 100644 --- a/Ferrite/DataManagement/Classes/PluginList+CoreDataProperties.swift +++ b/Ferrite/DataManagement/Classes/PluginList+CoreDataProperties.swift @@ -6,23 +6,18 @@ // // -import Foundation import CoreData +import Foundation - -extension PluginList { - - @nonobjc public class func fetchRequest() -> NSFetchRequest { - return NSFetchRequest(entityName: "PluginList") +public extension PluginList { + @nonobjc class func fetchRequest() -> NSFetchRequest { + NSFetchRequest(entityName: "PluginList") } - @NSManaged public var author: String - @NSManaged public var id: UUID - @NSManaged public var name: String - @NSManaged public var urlString: String - + @NSManaged var author: String + @NSManaged var id: UUID + @NSManaged var name: String + @NSManaged var urlString: String } -extension PluginList : Identifiable { - -} +extension PluginList: Identifiable {} diff --git a/Ferrite/DataManagement/Classes/PluginTag+CoreDataClass.swift b/Ferrite/DataManagement/Classes/PluginTag+CoreDataClass.swift index cb9a095..560eab1 100644 --- a/Ferrite/DataManagement/Classes/PluginTag+CoreDataClass.swift +++ b/Ferrite/DataManagement/Classes/PluginTag+CoreDataClass.swift @@ -6,9 +6,8 @@ // // -import Foundation import CoreData +import Foundation @objc(PluginTag) -public class PluginTag: NSManagedObject { -} +public class PluginTag: NSManagedObject {} diff --git a/Ferrite/DataManagement/Classes/PluginTag+CoreDataProperties.swift b/Ferrite/DataManagement/Classes/PluginTag+CoreDataProperties.swift index b10b144..1809c45 100644 --- a/Ferrite/DataManagement/Classes/PluginTag+CoreDataProperties.swift +++ b/Ferrite/DataManagement/Classes/PluginTag+CoreDataProperties.swift @@ -6,26 +6,22 @@ // // -import Foundation import CoreData +import Foundation - -extension PluginTag { - - @nonobjc public class func fetchRequest() -> NSFetchRequest { - return NSFetchRequest(entityName: "PluginTag") +public extension PluginTag { + @nonobjc class func fetchRequest() -> NSFetchRequest { + NSFetchRequest(entityName: "PluginTag") } - @NSManaged public var colorHex: String? - @NSManaged public var name: String - @NSManaged public var parentAction: Action? - @NSManaged public var parentSource: Source? + @NSManaged var colorHex: String? + @NSManaged var name: String + @NSManaged var parentAction: Action? + @NSManaged var parentSource: Source? - func toJson() -> PluginTagJson { - return PluginTagJson(name: name, colorHex: colorHex) + internal func toJson() -> PluginTagJson { + PluginTagJson(name: name, colorHex: colorHex) } } -extension PluginTag : Identifiable { - -} +extension PluginTag: Identifiable {} diff --git a/Ferrite/DataManagement/Classes/Source+CoreDataProperties.swift b/Ferrite/DataManagement/Classes/Source+CoreDataProperties.swift index daeffc8..01e6750 100644 --- a/Ferrite/DataManagement/Classes/Source+CoreDataProperties.swift +++ b/Ferrite/DataManagement/Classes/Source+CoreDataProperties.swift @@ -6,73 +6,68 @@ // // -import Foundation import CoreData +import Foundation - -extension Source { - - @nonobjc public class func fetchRequest() -> NSFetchRequest { - return NSFetchRequest(entityName: "Source") +public extension Source { + @nonobjc class func fetchRequest() -> NSFetchRequest { + NSFetchRequest(entityName: "Source") } - @NSManaged public var id: UUID - @NSManaged public var baseUrl: String? - @NSManaged public var fallbackUrls: [String]? - @NSManaged public var dynamicBaseUrl: Bool - @NSManaged public var enabled: Bool - @NSManaged public var name: String - @NSManaged public var author: String - @NSManaged public var listId: UUID? - @NSManaged public var preferredParser: Int16 - @NSManaged public var version: Int16 - @NSManaged public var htmlParser: SourceHtmlParser? - @NSManaged public var rssParser: SourceRssParser? - @NSManaged public var jsonParser: SourceJsonParser? - @NSManaged public var api: SourceApi? - @NSManaged public var trackers: [String]? - @NSManaged public var tags: NSOrderedSet? + @NSManaged var id: UUID + @NSManaged var baseUrl: String? + @NSManaged var fallbackUrls: [String]? + @NSManaged var dynamicBaseUrl: Bool + @NSManaged var enabled: Bool + @NSManaged var name: String + @NSManaged var author: String + @NSManaged var listId: UUID? + @NSManaged var preferredParser: Int16 + @NSManaged var version: Int16 + @NSManaged var htmlParser: SourceHtmlParser? + @NSManaged var rssParser: SourceRssParser? + @NSManaged var jsonParser: SourceJsonParser? + @NSManaged var api: SourceApi? + @NSManaged var trackers: [String]? + @NSManaged var tags: NSOrderedSet? - public func getTags() -> [PluginTagJson] { - return tagArray.map { $0.toJson() } + func getTags() -> [PluginTagJson] { + tagArray.map { $0.toJson() } } } // MARK: Generated accessors for tags -extension Source { +public extension Source { @objc(insertObject:inTagsAtIndex:) - @NSManaged public func insertIntoTags(_ value: PluginTag, at idx: Int) + @NSManaged func insertIntoTags(_ value: PluginTag, at idx: Int) @objc(removeObjectFromTagsAtIndex:) - @NSManaged public func removeFromTags(at idx: Int) + @NSManaged func removeFromTags(at idx: Int) @objc(insertTags:atIndexes:) - @NSManaged public func insertIntoTags(_ values: [PluginTag], at indexes: NSIndexSet) + @NSManaged func insertIntoTags(_ values: [PluginTag], at indexes: NSIndexSet) @objc(removeTagsAtIndexes:) - @NSManaged public func removeFromTags(at indexes: NSIndexSet) + @NSManaged func removeFromTags(at indexes: NSIndexSet) @objc(replaceObjectInTagsAtIndex:withObject:) - @NSManaged public func replaceTags(at idx: Int, with value: PluginTag) + @NSManaged func replaceTags(at idx: Int, with value: PluginTag) @objc(replaceTagsAtIndexes:withTags:) - @NSManaged public func replaceTags(at indexes: NSIndexSet, with values: [PluginTag]) + @NSManaged func replaceTags(at indexes: NSIndexSet, with values: [PluginTag]) @objc(addTagsObject:) - @NSManaged public func addToTags(_ value: PluginTag) + @NSManaged func addToTags(_ value: PluginTag) @objc(removeTagsObject:) - @NSManaged public func removeFromTags(_ value: PluginTag) + @NSManaged func removeFromTags(_ value: PluginTag) @objc(addTags:) - @NSManaged public func addToTags(_ values: NSOrderedSet) + @NSManaged func addToTags(_ values: NSOrderedSet) @objc(removeTags:) - @NSManaged public func removeFromTags(_ values: NSOrderedSet) - + @NSManaged func removeFromTags(_ values: NSOrderedSet) } -extension Source : Identifiable { - -} +extension Source: Identifiable {} diff --git a/Ferrite/Extensions/View.swift b/Ferrite/Extensions/View.swift index 1a7f245..088ff70 100644 --- a/Ferrite/Extensions/View.swift +++ b/Ferrite/Extensions/View.swift @@ -37,11 +37,11 @@ extension View { modifier(ViewDidAppearModifier(callback: callback)) } - func customScopeBar(_ content: Content) -> some View { + func customScopeBar(_ content: some View) -> some View { modifier(CustomScopeBarModifier(hostingContent: content)) } - func customScopeBar(_ content: @escaping () -> Content) -> some View { + func customScopeBar(_ content: @escaping () -> some View) -> some View { modifier(CustomScopeBarModifier(hostingContent: content())) } } diff --git a/Ferrite/Models/ActionModels.swift b/Ferrite/Models/ActionModels.swift index 410605b..1e6267f 100644 --- a/Ferrite/Models/ActionModels.swift +++ b/Ferrite/Models/ActionModels.swift @@ -7,7 +7,7 @@ import Foundation -public struct ActionJson: Codable, Hashable, PluginJson { +public struct ActionJson: Codable, Hashable, PluginJson { public let name: String public let version: Int16 let minVersion: String? @@ -18,11 +18,11 @@ public struct ActionJson: Codable, Hashable, PluginJson { public var tags: [PluginTagJson]? } -extension ActionJson { +public extension ActionJson { // Fetches all tags without optional requirement // Avoids the need for extra tag additions in DB - public func getTags() -> [PluginTagJson] { - return requires.map { PluginTagJson(name: $0.rawValue, colorHex: nil) } + (tags.map { $0 } ?? []) + func getTags() -> [PluginTagJson] { + requires.map { PluginTagJson(name: $0.rawValue, colorHex: nil) } + (tags.map { $0 } ?? []) } } diff --git a/Ferrite/Models/BackupModels.swift b/Ferrite/Models/BackupModels.swift index 4a5e2ce..3ebefcc 100644 --- a/Ferrite/Models/BackupModels.swift +++ b/Ferrite/Models/BackupModels.swift @@ -17,6 +17,7 @@ public struct Backup: Codable { var pluginListUrls: [String]? // MARK: Remove once v1 backups are unsupported + var sourceLists: [PluginListBackupJson]? } diff --git a/Ferrite/Models/SourceModels.swift b/Ferrite/Models/SourceModels.swift index 3bb45b8..103e260 100644 --- a/Ferrite/Models/SourceModels.swift +++ b/Ferrite/Models/SourceModels.swift @@ -29,10 +29,10 @@ public struct SourceJson: Codable, Hashable, Sendable, PluginJson { public var tags: [PluginTagJson]? } -extension SourceJson { +public extension SourceJson { // Fetches all tags without optional requirement - public func getTags() -> [PluginTagJson] { - return tags ?? [] + func getTags() -> [PluginTagJson] { + tags ?? [] } } diff --git a/Ferrite/Protocols/Plugin.swift b/Ferrite/Protocols/Plugin.swift index 5e53d27..961e187 100644 --- a/Ferrite/Protocols/Plugin.swift +++ b/Ferrite/Protocols/Plugin.swift @@ -21,7 +21,7 @@ public protocol Plugin: ObservableObject, NSManagedObject { extension Plugin { var tagArray: [PluginTag] { - return self.tags?.array as? [PluginTag] ?? [] + tags?.array as? [PluginTag] ?? [] } } diff --git a/Ferrite/ViewModels/PluginManager.swift b/Ferrite/ViewModels/PluginManager.swift index b370b64..ce9472b 100644 --- a/Ferrite/ViewModels/PluginManager.swift +++ b/Ferrite/ViewModels/PluginManager.swift @@ -93,19 +93,18 @@ public class PluginManager: ObservableObject { } // forType required to guide generic inferences - func fetchFilteredPlugins( - forType: PJ.Type, - installedPlugins: FetchedResults

, - searchText: String - ) -> [PJ] { + func fetchFilteredPlugins(forType: PJ.Type, + installedPlugins: FetchedResults, + searchText: String) -> [PJ] + { let availablePlugins: [PJ] = fetchCastedPlugins(forType) return availablePlugins .filter { availablePlugin in let pluginExists = installedPlugins.contains(where: { availablePlugin.name == $0.name && - availablePlugin.listId == $0.listId && - availablePlugin.author == $0.author + availablePlugin.listId == $0.listId && + availablePlugin.author == $0.author }) if searchText.isEmpty { @@ -116,19 +115,18 @@ public class PluginManager: ObservableObject { } } - func fetchUpdatedPlugins( - forType: PJ.Type, - installedPlugins: FetchedResults

, - searchText: String - ) -> [PJ] { + func fetchUpdatedPlugins(forType: PJ.Type, + installedPlugins: FetchedResults, + searchText: String) -> [PJ] + { var updatedPlugins: [PJ] = [] let availablePlugins: [PJ] = fetchCastedPlugins(forType) for plugin in installedPlugins { if let availablePlugin = availablePlugins.first(where: { plugin.listId == $0.listId && - plugin.name == $0.name && - plugin.author == $0.author + plugin.name == $0.name && + plugin.author == $0.author }), availablePlugin.version > plugin.version { @@ -257,7 +255,7 @@ public class PluginManager: ObservableObject { if actionJson.requires.count < 1 { await toastModel?.updateToastDescription("Action addition error: actions must require an input. Please contact the action dev!") print("Action name \(actionJson.name) does not have a requires parameter") - + return } @@ -289,7 +287,7 @@ public class PluginManager: ObservableObject { newAction.version = actionJson.version newAction.author = actionJson.author ?? "Unknown" newAction.listId = actionJson.listId - newAction.requires = actionJson.requires.map { $0.rawValue } + newAction.requires = actionJson.requires.map(\.rawValue) newAction.enabled = true if let jsonTags = actionJson.tags { @@ -325,7 +323,7 @@ public class PluginManager: ObservableObject { if !dynamicBaseUrl, sourceJson.baseUrl == nil { await toastModel?.updateToastDescription("Not adding this source because base URL parameters are malformed. Please contact the source dev.") print("Not adding source \(sourceJson.name) because base URL parameters are malformed") - + return } diff --git a/Ferrite/ViewModels/ScrapingViewModel.swift b/Ferrite/ViewModels/ScrapingViewModel.swift index 9aff244..097a13d 100644 --- a/Ferrite/ViewModels/ScrapingViewModel.swift +++ b/Ferrite/ViewModels/ScrapingViewModel.swift @@ -483,7 +483,6 @@ class ScrapingViewModel: ObservableObject { } for item in items { - //print(item) // Parse magnet link or translate hash var magnetHash: String? if let magnetHashParser = rssParser.magnetHash { diff --git a/Ferrite/ViewModels/ToastViewModel.swift b/Ferrite/ViewModels/ToastViewModel.swift index 28045a4..9319ae0 100644 --- a/Ferrite/ViewModels/ToastViewModel.swift +++ b/Ferrite/ViewModels/ToastViewModel.swift @@ -36,7 +36,7 @@ class ToastViewModel: ObservableObject { @Published var showToast: Bool = false @Published var indeterminateToastDescription: String? = nil - @Published var indeterminateCancelAction: (() -> ())? = nil + @Published var indeterminateCancelAction: (() -> Void)? = nil @Published var showIndeterminateToast: Bool = false public func updateToastDescription(_ description: String, newToastType: ToastType? = nil) { @@ -47,7 +47,7 @@ class ToastViewModel: ObservableObject { toastDescription = description } - public func updateIndeterminateToast(_ description: String, cancelAction: (() -> ())?) { + public func updateIndeterminateToast(_ description: String, cancelAction: (() -> Void)?) { indeterminateToastDescription = description if let cancelAction { diff --git a/Ferrite/Views/CommonViews/Backport.swift b/Ferrite/Views/CommonViews/Backport.swift index 2c7221d..90c4799 100644 --- a/Ferrite/Views/CommonViews/Backport.swift +++ b/Ferrite/Views/CommonViews/Backport.swift @@ -5,8 +5,8 @@ // Created by Brian Dashore on 9/29/22. // -import SwiftUI import Introspect +import SwiftUI public struct Backport { public let content: Content @@ -21,12 +21,11 @@ extension View { } extension Backport where Content: View { - @ViewBuilder func alert( - isPresented: Binding, - title: String, - message: String?, - buttons: [AlertButton] = [] - ) -> some View { + @ViewBuilder func alert(isPresented: Binding, + title: String, + message: String?, + buttons: [AlertButton] = []) -> some View + { if #available(iOS 15, *) { content .alert( @@ -69,11 +68,10 @@ extension Backport where Content: View { } } - @ViewBuilder func confirmationDialog( - isPresented: Binding, - title: String, message: String?, - buttons: [AlertButton] - ) -> some View { + @ViewBuilder func confirmationDialog(isPresented: Binding, + title: String, message: String?, + buttons: [AlertButton]) -> some View + { if #available(iOS 15, *) { content .confirmationDialog( @@ -125,7 +123,7 @@ extension Backport where Content: View { } } - @ViewBuilder func introspectSearchController(customize: @escaping (UISearchController) -> ()) -> some View { + @ViewBuilder func introspectSearchController(customize: @escaping (UISearchController) -> Void) -> some View { if #available(iOS 15, *) { content.introspectSearchController(customize: customize) } else { diff --git a/Ferrite/Views/CommonViews/LibraryHeaderView.swift b/Ferrite/Views/CommonViews/LibraryHeaderView.swift index e6009e1..80104cd 100644 --- a/Ferrite/Views/CommonViews/LibraryHeaderView.swift +++ b/Ferrite/Views/CommonViews/LibraryHeaderView.swift @@ -11,7 +11,5 @@ struct LibraryHeaderView: View { @EnvironmentObject var debridManager: DebridManager @Binding var selectedSegment: LibraryPickerSegment - var body: some View { - - } + var body: some View {} } diff --git a/Ferrite/Views/CommonViews/Modifiers/CustomScopeBar.swift b/Ferrite/Views/CommonViews/Modifiers/CustomScopeBar.swift index 1cb11b1..522453f 100644 --- a/Ferrite/Views/CommonViews/Modifiers/CustomScopeBar.swift +++ b/Ferrite/Views/CommonViews/Modifiers/CustomScopeBar.swift @@ -5,8 +5,8 @@ // Created by Brian Dashore on 2/14/23. // -import SwiftUI import Introspect +import SwiftUI struct CustomScopeBarModifier: ViewModifier { let hostingContent: V @@ -25,6 +25,7 @@ struct CustomScopeBarModifier: ViewModifier { searchController.searchBar.autocapitalizationType = autocorrectSearch ? .sentences : .none // MARK: One-time setup + guard hostingController == nil else { return } searchController.hidesNavigationBarDuringPresentation = true diff --git a/Ferrite/Views/CommonViews/SearchableContent.swift b/Ferrite/Views/CommonViews/SearchableContent.swift index 754fa3a..4d0f68d 100644 --- a/Ferrite/Views/CommonViews/SearchableContent.swift +++ b/Ferrite/Views/CommonViews/SearchableContent.swift @@ -28,7 +28,7 @@ struct SearchableContent: View { lastHeight = newHeight } .transaction { - if geom.size.height != lastHeight && searching { + if geom.size.height != lastHeight, searching { $0.animation = .default.speed(2) } } diff --git a/Ferrite/Views/CommonViews/TestHostingView.swift b/Ferrite/Views/CommonViews/TestHostingView.swift index ebf4ae8..c4ce5f2 100644 --- a/Ferrite/Views/CommonViews/TestHostingView.swift +++ b/Ferrite/Views/CommonViews/TestHostingView.swift @@ -24,7 +24,7 @@ struct TestHostingView: View { Text(textName) .opacity(0.6) .foregroundColor(.primary) - + Image(systemName: "chevron.down") .foregroundColor(.tertiaryLabel) } @@ -49,7 +49,7 @@ struct TestHostingView: View { Text(secondTextName) .opacity(0.6) .foregroundColor(.primary) - + Image(systemName: "chevron.down") .foregroundColor(.tertiaryLabel) } diff --git a/Ferrite/Views/ComponentViews/Debrid/DebridPickerView.swift b/Ferrite/Views/ComponentViews/Debrid/DebridPickerView.swift index 6aaf7f8..a4e6178 100644 --- a/Ferrite/Views/ComponentViews/Debrid/DebridPickerView.swift +++ b/Ferrite/Views/ComponentViews/Debrid/DebridPickerView.swift @@ -17,7 +17,7 @@ struct DebridPickerView: View { Picker("", selection: $debridManager.selectedDebridType) { Text("None") .tag(nil as DebridType?) - + ForEach(DebridType.allCases, id: \.self) { (debridType: DebridType) in if debridManager.enabledDebrids.contains(debridType) { Text(debridType.toString()) diff --git a/Ferrite/Views/ComponentViews/Library/BookmarksView.swift b/Ferrite/Views/ComponentViews/Library/BookmarksView.swift index 7668409..f340fb2 100644 --- a/Ferrite/Views/ComponentViews/Library/BookmarksView.swift +++ b/Ferrite/Views/ComponentViews/Library/BookmarksView.swift @@ -26,30 +26,30 @@ struct BookmarksView: View { sortDescriptors: [NSSortDescriptor(keyPath: \Bookmark.orderNum, ascending: true)] ) { (bookmarks: FetchedResults) in List { - if !bookmarks.isEmpty { - ForEach(bookmarks, id: \.self) { bookmark in - SearchResultButtonView(result: bookmark.toSearchResult(), existingBookmark: bookmark) - } - .onDelete { offsets in - for index in offsets { - if let bookmark = bookmarks[safe: index] { - PersistenceController.shared.delete(bookmark, context: backgroundContext) - NotificationCenter.default.post(name: .didDeleteBookmark, object: bookmark) - } + if !bookmarks.isEmpty { + ForEach(bookmarks, id: \.self) { bookmark in + SearchResultButtonView(result: bookmark.toSearchResult(), existingBookmark: bookmark) + } + .onDelete { offsets in + for index in offsets { + if let bookmark = bookmarks[safe: index] { + PersistenceController.shared.delete(bookmark, context: backgroundContext) + NotificationCenter.default.post(name: .didDeleteBookmark, object: bookmark) } } - .onMove { source, destination in - var changedBookmarks = bookmarks.map { $0 } - - changedBookmarks.move(fromOffsets: source, toOffset: destination) - - for reverseIndex in stride(from: changedBookmarks.count - 1, through: 0, by: -1) { - changedBookmarks[reverseIndex].orderNum = Int16(reverseIndex) - } - - PersistenceController.shared.save() - } } + .onMove { source, destination in + var changedBookmarks = bookmarks.map { $0 } + + changedBookmarks.move(fromOffsets: source, toOffset: destination) + + for reverseIndex in stride(from: changedBookmarks.count - 1, through: 0, by: -1) { + changedBookmarks[reverseIndex].orderNum = Int16(reverseIndex) + } + + PersistenceController.shared.save() + } + } } .listStyle(.insetGrouped) .inlinedList(inset: Application.shared.osVersion.majorVersion > 14 ? 15 : -25) diff --git a/Ferrite/Views/ComponentViews/SearchResult/SearchFilterHeaderView.swift b/Ferrite/Views/ComponentViews/SearchResult/SearchFilterHeaderView.swift index 8834060..736fdfc 100644 --- a/Ferrite/Views/ComponentViews/SearchResult/SearchFilterHeaderView.swift +++ b/Ferrite/Views/ComponentViews/SearchResult/SearchFilterHeaderView.swift @@ -37,7 +37,7 @@ struct SearchFilterHeaderView: View { } .id(scrapingModel.filteredSource) - DebridPickerView() { + DebridPickerView { FilterLabelView(name: debridManager.selectedDebridType?.toString() ?? "Debrid") } .id(debridManager.selectedDebridType) diff --git a/Ferrite/Views/ContentView.swift b/Ferrite/Views/ContentView.swift index 36db8af..db60f78 100644 --- a/Ferrite/Views/ContentView.swift +++ b/Ferrite/Views/ContentView.swift @@ -44,12 +44,12 @@ struct ContentView: View { .listStyle(.insetGrouped) .inlinedList(inset: Application.shared.osVersion.majorVersion > 14 ? 20 : -20) .overlay { - if scrapingModel.searchResults.isEmpty && isSearching && scrapingModel.runningSearchTask == nil { + if scrapingModel.searchResults.isEmpty, isSearching, scrapingModel.runningSearchTask == nil { Text("No results found") } } .onChange(of: searchText) { newText in - if newText.isEmpty && isSearching { + if newText.isEmpty, isSearching { searchBarText = getSearchBarText() } } @@ -124,7 +124,7 @@ struct ContentView: View { // Fetches random searchbar text if enabled, otherwise deinit the last case value func getSearchBarText() -> String { if usesRandomSearchText { - let num = Int.random(in: 0.. 0 { + if debridManager.enabledDebrids.count > 0 { NavigationLink( destination: DefaultActionPickerView( actionRequirement: .debrid, @@ -115,7 +115,7 @@ struct SettingsView: View { } } ) - //} + } NavigationLink( destination: DefaultActionPickerView( diff --git a/Ferrite/Views/SheetViews/ActionChoiceView.swift b/Ferrite/Views/SheetViews/ActionChoiceView.swift index d9b4839..f854377 100644 --- a/Ferrite/Views/SheetViews/ActionChoiceView.swift +++ b/Ferrite/Views/SheetViews/ActionChoiceView.swift @@ -116,7 +116,7 @@ struct ActionChoiceView: View { isPresented: $pluginManager.showBrokenDefaultActionAlert, title: "Action not found", message: - "The default action could not be run. The action choice sheet has been opened. \n\n" + + "The default action could not be run. The action choice sheet has been opened. \n\n" + "Please check your default actions in Settings" ) .onDisappear {