summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFuwn <[email protected]>2025-02-20 06:11:42 -0800
committerFuwn <[email protected]>2025-02-20 06:11:42 -0800
commit5199ec103e4eebb0615672f3e0fbe0a1bb36e7e4 (patch)
tree283e4806b28fb5a07a9b7e513b41a8a98544f67a
parentfeat: Development commit (diff)
downloadsora-testing-5199ec103e4eebb0615672f3e0fbe0a1bb36e7e4.tar.xz
sora-testing-5199ec103e4eebb0615672f3e0fbe0a1bb36e7e4.zip
feat: Development commit
-rw-r--r--Sora/Data/Settings/Settings.swift70
-rw-r--r--Sora/Views/ContentView.swift2
-rw-r--r--Sora/Views/MainView.swift3
-rw-r--r--Sora/Views/Post/PostGridView.swift2
4 files changed, 74 insertions, 3 deletions
diff --git a/Sora/Data/Settings/Settings.swift b/Sora/Data/Settings/Settings.swift
new file mode 100644
index 0000000..22b91cc
--- /dev/null
+++ b/Sora/Data/Settings/Settings.swift
@@ -0,0 +1,70 @@
+import SwiftUI
+
+class Settings: ObservableObject {
+ #if DEBUG
+ @AppStorage("detailViewType") var detailViewType: PostFileType = .compressed
+ #else
+ @AppStorage("detailViewType") var detailViewType: PostFileType = .original
+ #endif
+ @AppStorage("thumbnailType") var thumbnailType: PostFileType = .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()
+
+ var bookmarks: [Bookmark] {
+ get {
+ if let bookmarks = try? JSONDecoder().decode([Bookmark].self, from: bookmarksData) {
+ return bookmarks
+ }
+
+ return []
+ }
+
+ set {
+ if let data = try? JSONEncoder().encode(newValue) {
+ bookmarksData = data
+ }
+ }
+ }
+
+ func resetToDefaults() {
+ #if DEBUG
+ detailViewType = .compressed
+ #else
+ detailViewType = .original
+ #endif
+ thumbnailType = .preview
+ searchSuggestions = false
+ columns = 2
+ blurNSFWThumbnails = true
+ showNSFWPosts = false
+ }
+
+ func addBookmark(tags: [String]) {
+ var currentBookmarks = bookmarks
+
+ currentBookmarks.append(Bookmark(tags: tags.map { $0.lowercased() }))
+
+ bookmarks = currentBookmarks
+ }
+
+ func removeBookmark(at index: IndexSet) {
+ var currentBookmarks = bookmarks
+
+ currentBookmarks.remove(atOffsets: index)
+
+ bookmarks = currentBookmarks
+ }
+
+ func removeBookmark(withTags tags: [String]) {
+ var currentBookmarks = bookmarks
+
+ currentBookmarks.removeAll { bookmark in
+ bookmark.tags.contains(where: tags.contains)
+ }
+
+ bookmarks = currentBookmarks
+ }
+}
diff --git a/Sora/Views/ContentView.swift b/Sora/Views/ContentView.swift
index 22c17f6..053e98d 100644
--- a/Sora/Views/ContentView.swift
+++ b/Sora/Views/ContentView.swift
@@ -1,7 +1,7 @@
import SwiftUI
struct ContentView: View {
- @EnvironmentObject private var manager: MoebooruManager
+ @EnvironmentObject var manager: MoebooruManager
var body: some View {
#if os(macOS)
diff --git a/Sora/Views/MainView.swift b/Sora/Views/MainView.swift
index 7ad7c77..966d986 100644
--- a/Sora/Views/MainView.swift
+++ b/Sora/Views/MainView.swift
@@ -9,14 +9,15 @@ struct MainView: View {
#if os(macOS)
ContentView()
.environmentObject(settings)
+ .environmentObject(manager)
#else
TabView(selection: $selectedTab) {
ContentView()
+ .environmentObject(manager)
.tabItem {
Label("Posts", systemImage: "rectangle.stack")
}
.tag(0)
- .environmentObject(manager)
NavigationStack {
BookmarksView(selectedTab: $selectedTab)
diff --git a/Sora/Views/Post/PostGridView.swift b/Sora/Views/Post/PostGridView.swift
index 487bde8..2054ef1 100644
--- a/Sora/Views/Post/PostGridView.swift
+++ b/Sora/Views/Post/PostGridView.swift
@@ -84,7 +84,7 @@ struct PostGridView: View {
#endif
.toolbar {
if !manager.tags.isEmpty {
- ToolbarItem(placement: .bottomBar) {
+ ToolbarItem {
let contained = settings.bookmarks.contains(where: { $0.tags == manager.tags })
Button(action: {