fix: toggle favorites add/remove and show success toast in SearchBar
This commit is contained in:
@@ -52,11 +52,13 @@ export const SearchBar: React.FC = () => {
|
||||
|
||||
const handleSaveFavorite = async () => {
|
||||
const isAlreadyFavorite = state.favorites.some((f) => f.query === state.searchQuery);
|
||||
if (isAlreadyFavorite) {
|
||||
setToastMessage("This query is already in your favorites.", "error");
|
||||
return;
|
||||
const success = await handleSaveFavoriteLogic();
|
||||
if (success) {
|
||||
setToastMessage(
|
||||
isAlreadyFavorite ? "Removed from favorites." : "Added to favorites.",
|
||||
"info",
|
||||
);
|
||||
}
|
||||
await handleSaveFavoriteLogic();
|
||||
};
|
||||
|
||||
useEscapeToClose({
|
||||
|
||||
@@ -62,8 +62,8 @@ export const useFavoritesLogic = () => {
|
||||
}
|
||||
}, [editingFavorite, editFavoriteName, editFavoriteQuery, refreshFavorites]);
|
||||
|
||||
const handleSaveFavorite = useCallback(async () => {
|
||||
if (!state.searchQuery || isSaving) return;
|
||||
const handleSaveFavorite = useCallback(async (): Promise<boolean> => {
|
||||
if (!state.searchQuery || isSaving) return false;
|
||||
|
||||
const isAlreadyFavorite = state.favorites.some((f) => f.query === state.searchQuery);
|
||||
if (isAlreadyFavorite) {
|
||||
@@ -73,21 +73,25 @@ export const useFavoritesLogic = () => {
|
||||
try {
|
||||
await searchApi.deleteFavorite(fav.id);
|
||||
await refreshFavorites();
|
||||
return true;
|
||||
} catch (err) {
|
||||
logger.error("Failed to delete favorite:", err);
|
||||
return false;
|
||||
} finally {
|
||||
setIsSaving(false);
|
||||
}
|
||||
}
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
setIsSaving(true);
|
||||
try {
|
||||
await searchApi.saveFavorite(state.searchQuery, state.searchQuery);
|
||||
await refreshFavorites();
|
||||
return true;
|
||||
} catch (err) {
|
||||
logger.error("Failed to save favorite:", err);
|
||||
return false;
|
||||
} finally {
|
||||
setIsSaving(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user