diff options
| author | Fuwn <[email protected]> | 2025-02-22 00:37:31 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2025-02-22 00:37:31 -0800 |
| commit | 86744226b1f423742fc9663300bd0e322807a1ee (patch) | |
| tree | 5455e957ca768fbbbaada05356340067a7dbcc21 /Sora | |
| parent | feat: Development commit (diff) | |
| download | sora-testing-86744226b1f423742fc9663300bd0e322807a1ee.tar.xz sora-testing-86744226b1f423742fc9663300bd0e322807a1ee.zip | |
feat: Development commit
Diffstat (limited to 'Sora')
| -rw-r--r-- | Sora/Data/Booru/BooruManager.swift | 4 | ||||
| -rw-r--r-- | Sora/Data/Booru/BooruPostFileType.swift | 6 | ||||
| -rw-r--r-- | Sora/Data/Booru/BooruPostXMLParser.swift | 7 | ||||
| -rw-r--r-- | Sora/Data/Booru/BooruProvider.swift | 14 | ||||
| -rw-r--r-- | Sora/Data/Settings/Settings.swift | 33 | ||||
| -rw-r--r-- | Sora/Other/AsyncImageWithPreview.swift | 42 | ||||
| -rw-r--r-- | Sora/Other/PostLoadingState.swift | 4 | ||||
| -rw-r--r-- | Sora/Views/Bookmarks/BookmarkListItemView.swift | 2 | ||||
| -rw-r--r-- | Sora/Views/MainView.swift | 3 | ||||
| -rw-r--r-- | Sora/Views/Post/PostGridView.swift | 4 | ||||
| -rw-r--r-- | Sora/Views/Settings/SettingsProviderView.swift | 2 |
11 files changed, 64 insertions, 57 deletions
diff --git a/Sora/Data/Booru/BooruManager.swift b/Sora/Data/Booru/BooruManager.swift index c4e9016..d650593 100644 --- a/Sora/Data/Booru/BooruManager.swift +++ b/Sora/Data/Booru/BooruManager.swift @@ -155,4 +155,8 @@ class BooruManager: ObservableObject { nil } } + + deinit { + currentTask?.cancel() + } } diff --git a/Sora/Data/Booru/BooruPostFileType.swift b/Sora/Data/Booru/BooruPostFileType.swift index 62900db..f1f98b7 100644 --- a/Sora/Data/Booru/BooruPostFileType.swift +++ b/Sora/Data/Booru/BooruPostFileType.swift @@ -1,5 +1,5 @@ enum BooruPostFileType: String, CaseIterable { - case original - case sample - case preview + case original = "Original" + case preview = "Preview" + case sample = "Sample" } diff --git a/Sora/Data/Booru/BooruPostXMLParser.swift b/Sora/Data/Booru/BooruPostXMLParser.swift index 5149e05..3bce127 100644 --- a/Sora/Data/Booru/BooruPostXMLParser.swift +++ b/Sora/Data/Booru/BooruPostXMLParser.swift @@ -58,9 +58,6 @@ class BooruPostXMLParser: NSObject, XMLParserDelegate { return } - let hasNotesStr = attributeDict["has_notes"] ?? "false" - let hasCommentsStr = attributeDict["has_comments"] ?? "false" - currentPost = BooruPost( id: id, height: height, @@ -81,8 +78,8 @@ class BooruPostXMLParser: NSObject, XMLParserDelegate { createdAt: parseCreatedAt(createdAt)!, status: status, source: source, - hasNotes: hasNotesStr == "true", - hasComments: hasCommentsStr == "true", + hasNotes: (attributeDict["has_notes"] ?? "false") == "true", + hasComments: (attributeDict["has_comments"] ?? "false") == "true", previewWidth: previewWidth, previewHeight: previewHeight ) diff --git a/Sora/Data/Booru/BooruProvider.swift b/Sora/Data/Booru/BooruProvider.swift index 4de543b..19e5234 100644 --- a/Sora/Data/Booru/BooruProvider.swift +++ b/Sora/Data/Booru/BooruProvider.swift @@ -1,14 +1,4 @@ enum BooruProvider: String, CaseIterable, Decodable, Encodable { - case yandere - case safebooru - - func formatted() -> String { - switch self { - case .yandere: - "yande.re" - - case .safebooru: - "Safebooru" - } - } + case safebooru = "Safebooru" + case yandere = "yande.re" } diff --git a/Sora/Data/Settings/Settings.swift b/Sora/Data/Settings/Settings.swift index ec0fadf..c34b6ba 100644 --- a/Sora/Data/Settings/Settings.swift +++ b/Sora/Data/Settings/Settings.swift @@ -2,18 +2,33 @@ import SwiftUI class Settings: ObservableObject { #if DEBUG - @AppStorage("detailViewType") var detailViewType: BooruPostFileType = .sample + @AppStorage("detailViewType") + var detailViewType: BooruPostFileType = .sample #else - @AppStorage("detailViewType") var detailViewType: BooruPostFileType = .original + @AppStorage("detailViewType") + var detailViewType: BooruPostFileType = .original #endif - @AppStorage("thumbnailType") var thumbnailType: BooruPostFileType = .preview - @AppStorage("searchSuggestions") var searchSuggestions: Bool = false - @AppStorage("columns") var columns: Int = 2 - @AppStorage("blurNSFWThumbnails") var blurNSFWThumbnails: Bool = true - @AppStorage("showNSFWPosts") var showNSFWPosts: Bool = false - @AppStorage("bookmarks") private var bookmarksData: Data = .init() - @AppStorage("preferredBooru") var preferredBooru: BooruProvider = .yandere + @AppStorage("thumbnailType") + var thumbnailType: BooruPostFileType = .preview + + @AppStorage("searchSuggestions") + var searchSuggestions: Bool = false + + @AppStorage("columns") + var columns: Int = 2 + + @AppStorage("blurNSFWThumbnails") + var blurNSFWThumbnails: Bool = true + + @AppStorage("showNSFWPosts") + var showNSFWPosts: Bool = false + + @AppStorage("bookmarks") + private var bookmarksData: Data = .init() + + @AppStorage("preferredBooru") + var preferredBooru: BooruProvider = .yandere var bookmarks: [Bookmark] { get { diff --git a/Sora/Other/AsyncImageWithPreview.swift b/Sora/Other/AsyncImageWithPreview.swift index c1a7188..2e29052 100644 --- a/Sora/Other/AsyncImageWithPreview.swift +++ b/Sora/Other/AsyncImageWithPreview.swift @@ -11,27 +11,6 @@ struct AsyncImageWithPreview<Placeholder: View>: View { @State private var currentOffset: CGSize = .zero @State private var finalOffset: CGSize = .zero - init( - url: URL?, - loadingStage: Binding<PostLoadingState>, - finalLoadingState: PostLoadingState = .loadingFile, - postURL: URL? = nil, - @ViewBuilder placeholder: @escaping () -> Placeholder = { - GeometryReader { geometry in - ProgressView() - .frame(width: geometry.size.width, height: geometry.size.height) - .position(x: geometry.size.width / 2, y: geometry.size.height / 2) - .padding() - } - } - ) { - self.url = url - _loadingState = loadingStage - self.finalLoadingState = finalLoadingState - self.postURL = postURL - self.placeholder = placeholder - } - var body: some View { GeometryReader { geometry in AsyncImage(url: url) { image in @@ -167,4 +146,25 @@ struct AsyncImageWithPreview<Placeholder: View>: View { } } } + + init( + url: URL?, + loadingStage: Binding<PostLoadingState>, + finalLoadingState: PostLoadingState = .loadingFile, + postURL: URL? = nil, + @ViewBuilder placeholder: @escaping () -> Placeholder = { + GeometryReader { geometry in + ProgressView() + .frame(width: geometry.size.width, height: geometry.size.height) + .position(x: geometry.size.width / 2, y: geometry.size.height / 2) + .padding() + } + } + ) { + self.url = url + _loadingState = loadingStage + self.finalLoadingState = finalLoadingState + self.postURL = postURL + self.placeholder = placeholder + } } diff --git a/Sora/Other/PostLoadingState.swift b/Sora/Other/PostLoadingState.swift index 800b4dc..7af533f 100644 --- a/Sora/Other/PostLoadingState.swift +++ b/Sora/Other/PostLoadingState.swift @@ -1,5 +1,5 @@ enum PostLoadingState { - case loadingPreview - case loadingFile case loaded + case loadingFile + case loadingPreview } diff --git a/Sora/Views/Bookmarks/BookmarkListItemView.swift b/Sora/Views/Bookmarks/BookmarkListItemView.swift index 6c46416..611c9fe 100644 --- a/Sora/Views/Bookmarks/BookmarkListItemView.swift +++ b/Sora/Views/Bookmarks/BookmarkListItemView.swift @@ -27,7 +27,7 @@ struct BookmarkListItemView: View { Spacer() - Text(bookmark.provider.formatted()) + Text(bookmark.provider.rawValue) .font(.caption) .foregroundStyle(Color.secondary) } diff --git a/Sora/Views/MainView.swift b/Sora/Views/MainView.swift index 79ac1a3..3a47038 100644 --- a/Sora/Views/MainView.swift +++ b/Sora/Views/MainView.swift @@ -15,8 +15,7 @@ struct MainView: View { .onAppear(perform: initialiseManager) } - @ViewBuilder - private var platformSpecificContent: some View { + @ViewBuilder private var platformSpecificContent: some View { #if os(macOS) ContentView() #else diff --git a/Sora/Views/Post/PostGridView.swift b/Sora/Views/Post/PostGridView.swift index ab2340f..d8960a0 100644 --- a/Sora/Views/Post/PostGridView.swift +++ b/Sora/Views/Post/PostGridView.swift @@ -4,7 +4,9 @@ import WaterfallGrid struct PostGridView: View { @EnvironmentObject var settings: Settings @ObservedObject var manager: BooruManager - @Environment(\.isSearching) private var isSearching + + @Environment(\.isSearching) + private var isSearching var filteredPosts: [BooruPost] { (settings.showNSFWPosts diff --git a/Sora/Views/Settings/SettingsProviderView.swift b/Sora/Views/Settings/SettingsProviderView.swift index 907450d..1de25c3 100644 --- a/Sora/Views/Settings/SettingsProviderView.swift +++ b/Sora/Views/Settings/SettingsProviderView.swift @@ -6,7 +6,7 @@ struct SettingsProviderView: View { var body: some View { Picker("Provider", selection: $settings.preferredBooru) { ForEach(BooruProvider.allCases, id: \.self) { type in - Text(type.formatted()).tag(type) + Text(type.rawValue).tag(type) } } } |