fix: toggle favorites add/remove and show success toast in SearchBar

This commit is contained in:
HappyOnigiri
2026-03-03 09:32:49 +09:00
parent d042bf3d58
commit 3d445d4e63
2 changed files with 13 additions and 7 deletions
@@ -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);
}