diff --git a/TablePro/Views/Sidebar/FavoritesTabView.swift b/TablePro/Views/Sidebar/FavoritesTabView.swift index 39161f1f..965cebb0 100644 --- a/TablePro/Views/Sidebar/FavoritesTabView.swift +++ b/TablePro/Views/Sidebar/FavoritesTabView.swift @@ -11,6 +11,7 @@ import SwiftUI internal struct FavoritesTabView: View { @State private var viewModel: FavoritesSidebarViewModel @State private var selectedFavoriteIds: Set = [] + @State private var lastInsertedFavoriteId: String? @State private var folderToDelete: SQLFavoriteFolder? @State private var showDeleteFolderAlert = false @FocusState private var isRenameFocused: Bool @@ -79,6 +80,24 @@ internal struct FavoritesTabView: View { .onDeleteCommand { deleteSelectedFavorites() } + .onChange(of: selectedFavoriteIds) { oldIds, newIds in + if newIds.isEmpty { + lastInsertedFavoriteId = nil + return + } + + let added = newIds.subtracting(oldIds) + guard added.count == 1, + newIds.count == 1, + let selectedId = added.first, + selectedId != lastInsertedFavoriteId else { return } + + let allFavorites = collectFavorites(from: viewModel.filteredItems(searchText: searchText)) + if let favorite = allFavorites.first(where: { "fav-\($0.id)" == selectedId }) { + coordinator?.insertFavorite(favorite) + lastInsertedFavoriteId = selectedId + } + } } /// Renders tree items with DisclosureGroup for folders.