Skip to content

Commit f750425

Browse files
authored
feat: single-click favorite to insert query in editor (#430)
* feat: single-click favorite to insert query in editor (#415) * fix: merge duplicate onChange handlers into single observer
1 parent 0f31b5a commit f750425

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

TablePro/Views/Sidebar/FavoritesTabView.swift

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import SwiftUI
1111
internal struct FavoritesTabView: View {
1212
@State private var viewModel: FavoritesSidebarViewModel
1313
@State private var selectedFavoriteIds: Set<String> = []
14+
@State private var lastInsertedFavoriteId: String?
1415
@State private var folderToDelete: SQLFavoriteFolder?
1516
@State private var showDeleteFolderAlert = false
1617
@FocusState private var isRenameFocused: Bool
@@ -79,6 +80,24 @@ internal struct FavoritesTabView: View {
7980
.onDeleteCommand {
8081
deleteSelectedFavorites()
8182
}
83+
.onChange(of: selectedFavoriteIds) { oldIds, newIds in
84+
if newIds.isEmpty {
85+
lastInsertedFavoriteId = nil
86+
return
87+
}
88+
89+
let added = newIds.subtracting(oldIds)
90+
guard added.count == 1,
91+
newIds.count == 1,
92+
let selectedId = added.first,
93+
selectedId != lastInsertedFavoriteId else { return }
94+
95+
let allFavorites = collectFavorites(from: viewModel.filteredItems(searchText: searchText))
96+
if let favorite = allFavorites.first(where: { "fav-\($0.id)" == selectedId }) {
97+
coordinator?.insertFavorite(favorite)
98+
lastInsertedFavoriteId = selectedId
99+
}
100+
}
82101
}
83102

84103
/// Renders tree items with DisclosureGroup for folders.

0 commit comments

Comments
 (0)