From b6293d118e7545b81e216073e66cd54c5b1a0b00 Mon Sep 17 00:00:00 2001 From: Daksh Pareek Date: Sun, 12 Jan 2025 21:53:34 +0530 Subject: feat: Add Bookmark Sorting Feature (#812) * feat: add bookmark sorting by creation date - Add sort order toggle in GlobalActions component - Implement ascending/descending sort functionality - Update translations for sorting feature in all languages - Add sort order icons and dropdown menu - Maintain sort preference in URL params * feat: add bookmark sorting by creation date - Add sort order toggle in GlobalActions component - Implement ascending/descending sort functionality - Update translations for sorting feature in all languages - Add sort order icons and dropdown menu - Maintain sort preference in URL params during session Note: Sort order resets to default on page refresh, server-side persistence can be implemented in future enhancement * feat: Add global sort by date feature with shared sort order state - Implement global sort order functionality using a shared Zustand store (`useSortOrder` hook). - Update `getBookmarks` and `searchBookmarks` endpoints to accept a `sortOrder` parameter. - Refactor code to import `ZSortOrder` from shared types (`bookmarks.ts`), ensuring consistency across the codebase. - Update components (`UpdatableBookmarksGrid`, `bookmark-search`) to use the shared `useSortOrder` hook. - Remove unused `zSortBy` definition from `packages/shared/types/bookmarks.ts` to avoid confusion. - Ensure consistent naming conventions by prefixing Zod inferred types with `Z`. - Clean up code and address previous PR feedback comments. * tiny fixes and fixing TS errors --------- Co-authored-by: Mohamed Bassem --- apps/web/lib/store/useSortOrderStore.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 apps/web/lib/store/useSortOrderStore.ts (limited to 'apps/web/lib/store') diff --git a/apps/web/lib/store/useSortOrderStore.ts b/apps/web/lib/store/useSortOrderStore.ts new file mode 100644 index 00000000..217e142e --- /dev/null +++ b/apps/web/lib/store/useSortOrderStore.ts @@ -0,0 +1,13 @@ +import { create } from "zustand"; + +import { ZSortOrder } from "@hoarder/shared/types/bookmarks"; + +interface SortOrderState { + sortOrder: ZSortOrder; + setSortOrder: (sortOrder: ZSortOrder) => void; +} + +export const useSortOrderStore = create((set) => ({ + sortOrder: "desc", // default sort order + setSortOrder: (sortOrder) => set({ sortOrder }), +})); -- cgit v1.2.3-70-g09d2