From e5040f54e17639664b90fa38ceefec0a27bca91b Mon Sep 17 00:00:00 2001 From: Ilyas Hallak Date: Mon, 30 Jun 2025 22:58:06 +0200 Subject: [PATCH] Improve bookmark selection logic for iPad and add missing sheet for shared bookmarks - On iPad, allow re-selecting the same bookmark by deselecting and reselecting it, ensuring detail view updates. - Add missing .sheet for showing AddBookmarkView when adding from share extension. - Refactor .task to .onAppear for loading bookmarks on view appearance. - Minor cleanup in SettingsViewModel (remove outdated comment). --- readeck/UI/Bookmarks/BookmarksView.swift | 19 ++++++++++++++++--- readeck/UI/Settings/SettingsViewModel.swift | 2 +- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/readeck/UI/Bookmarks/BookmarksView.swift b/readeck/UI/Bookmarks/BookmarksView.swift index e98fefe..1b0dbd2 100644 --- a/readeck/UI/Bookmarks/BookmarksView.swift +++ b/readeck/UI/Bookmarks/BookmarksView.swift @@ -29,7 +29,15 @@ struct BookmarksView: View { if UIDevice.isPhone { selectedBookmarkId = bookmark.id } else { - selectedBookmark = bookmark + if selectedBookmark?.id == bookmark.id { + // Optional: Deselect, um erneutes Auswählen zu ermöglichen + selectedBookmark = nil + DispatchQueue.main.async { + selectedBookmark = bookmark + } + } else { + selectedBookmark = bookmark + } } }) { BookmarkCardView( @@ -116,6 +124,9 @@ struct BookmarksView: View { .sheet(isPresented: $showingAddBookmark) { AddBookmarkView(prefilledURL: shareURL, prefilledTitle: shareTitle) } + .sheet(isPresented: $viewModel.showingAddBookmarkFromShare, content: { + AddBookmarkView(prefilledURL: shareURL, prefilledTitle: shareTitle) + }) /*.alert("Fehler", isPresented: .constant(viewModel.errorMessage != nil)) { Button("OK", role: .cancel) { viewModel.errorMessage = nil @@ -123,8 +134,10 @@ struct BookmarksView: View { } message: { Text(viewModel.errorMessage ?? "") }*/ - .task { - await viewModel.loadBookmarks(state: state) + .onAppear { + Task { + await viewModel.loadBookmarks(state: state) + } } .onChange(of: showingAddBookmark) { oldValue, newValue in // Refresh bookmarks when sheet is dismissed diff --git a/readeck/UI/Settings/SettingsViewModel.swift b/readeck/UI/Settings/SettingsViewModel.swift index b2551cd..8eddc4b 100644 --- a/readeck/UI/Settings/SettingsViewModel.swift +++ b/readeck/UI/Settings/SettingsViewModel.swift @@ -59,7 +59,7 @@ class SettingsViewModel { endpoint = settings.endpoint ?? "" username = settings.username ?? "" password = settings.password ?? "" - isLoggedIn = settings.isLoggedIn // Verwendet die neue Hilfsmethode + isLoggedIn = settings.isLoggedIn } } catch { errorMessage = "Fehler beim Laden der Einstellungen"