summaryrefslogtreecommitdiff
path: root/Sora
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-02-22 00:37:31 -0800
committerFuwn <[email protected]>2025-02-22 00:37:31 -0800
commit86744226b1f423742fc9663300bd0e322807a1ee (patch)
tree5455e957ca768fbbbaada05356340067a7dbcc21 /Sora
parentfeat: Development commit (diff)
downloadsora-testing-86744226b1f423742fc9663300bd0e322807a1ee.tar.xz
sora-testing-86744226b1f423742fc9663300bd0e322807a1ee.zip
feat: Development commit
Diffstat (limited to 'Sora')
-rw-r--r--Sora/Data/Booru/BooruManager.swift4
-rw-r--r--Sora/Data/Booru/BooruPostFileType.swift6
-rw-r--r--Sora/Data/Booru/BooruPostXMLParser.swift7
-rw-r--r--Sora/Data/Booru/BooruProvider.swift14
-rw-r--r--Sora/Data/Settings/Settings.swift33
-rw-r--r--Sora/Other/AsyncImageWithPreview.swift42
-rw-r--r--Sora/Other/PostLoadingState.swift4
-rw-r--r--Sora/Views/Bookmarks/BookmarkListItemView.swift2
-rw-r--r--Sora/Views/MainView.swift3
-rw-r--r--Sora/Views/Post/PostGridView.swift4
-rw-r--r--Sora/Views/Settings/SettingsProviderView.swift2
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)
}
}
}