From 1442856fb4b4feba008c2c5b90710b7cddc7d700 Mon Sep 17 00:00:00 2001 From: kusowl Date: Tue, 27 Jan 2026 12:52:21 +0530 Subject: [PATCH] feature(delete-search-history): users can delere their recent search histories --- .../Controllers/ExplorePageController.php | 2 +- .../Controllers/RecentSearchController.php | 14 +++++++++++++ resources/js/app.js | 2 ++ resources/js/deleteRecentSearch.js | 20 +++++++++++++++++++ .../recent-search-item.blade.php | 12 +++++++---- routes/api/api.php | 3 +++ 6 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 app/Http/Controllers/RecentSearchController.php create mode 100644 resources/js/deleteRecentSearch.js diff --git a/app/Http/Controllers/ExplorePageController.php b/app/Http/Controllers/ExplorePageController.php index 00419ec..fe8164a 100644 --- a/app/Http/Controllers/ExplorePageController.php +++ b/app/Http/Controllers/ExplorePageController.php @@ -81,6 +81,6 @@ protected function categories(): Collection protected function recentSearches(): Collection { - return Auth::user()->recentSearches()->latest()->pluck('query'); + return Auth::user()->recentSearches()->latest()->select(['id','query'])->get(); } } diff --git a/app/Http/Controllers/RecentSearchController.php b/app/Http/Controllers/RecentSearchController.php new file mode 100644 index 0000000..2672893 --- /dev/null +++ b/app/Http/Controllers/RecentSearchController.php @@ -0,0 +1,14 @@ +delete(); + return response()->json(['message' => 'Search deleted successfully.']); + } +} diff --git a/resources/js/app.js b/resources/js/app.js index 91a3aae..004619b 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -11,7 +11,9 @@ import {favorite, like, redirect} from "./interaction.js"; import {showReportModal} from "./report-deal.js"; import {initTabs} from "./tab.js"; import {loadModalFromQuery} from "./explore-page.js"; +import {deleteRecentSearch} from "./deleteRecentSearch.js"; +document.deleteSearch = deleteRecentSearch; document.like = like; document.favorite = favorite; document.redirect = redirect; diff --git a/resources/js/deleteRecentSearch.js b/resources/js/deleteRecentSearch.js new file mode 100644 index 0000000..5001be7 --- /dev/null +++ b/resources/js/deleteRecentSearch.js @@ -0,0 +1,20 @@ +import {showToast} from "./toast.js"; + +export const deleteRecentSearch = async (e, id) => { + try { + const li = e.closest('li'); + const ol = li.closest('ol'); + + li.remove(); + + if (ol.childElementCount === 0) { + ol.remove(); + } + + const response = await axios.delete('api/recent-search/' + id); + showToast(response.data.message) + } catch (e) { + showToast('Something went wrong!') + console.error(e) + } +} diff --git a/resources/views/components/dashboard/user/recent-search/recent-search-item.blade.php b/resources/views/components/dashboard/user/recent-search/recent-search-item.blade.php index f9cad1f..fdee6e6 100644 --- a/resources/views/components/dashboard/user/recent-search/recent-search-item.blade.php +++ b/resources/views/components/dashboard/user/recent-search/recent-search-item.blade.php @@ -1,7 +1,11 @@ @props(['item']) -
  • - - {{$item}} - +
  • + + {{$item->query}} + + + +
  • diff --git a/routes/api/api.php b/routes/api/api.php index 3a7e4cd..17c6b3a 100644 --- a/routes/api/api.php +++ b/routes/api/api.php @@ -1,5 +1,6 @@ group(function () { include __DIR__.'/interactions.php'; include __DIR__.'/deals.php'; + + Route::delete('/recent-search/{recentSearch}', RecentSearchController::class)->name('recent-search.destroy'); });