diff options
Diffstat (limited to 'apps/web/lib/bulkActions.ts')
| -rw-r--r-- | apps/web/lib/bulkActions.ts | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/apps/web/lib/bulkActions.ts b/apps/web/lib/bulkActions.ts index 1e9dbbd7..a2ee6a29 100644 --- a/apps/web/lib/bulkActions.ts +++ b/apps/web/lib/bulkActions.ts @@ -5,13 +5,19 @@ import type { ZBookmark } from "@hoarder/shared/types/bookmarks"; interface BookmarkState { selectedBookmarks: ZBookmark[]; + visibleBookmarks: ZBookmark[]; isBulkEditEnabled: boolean; setIsBulkEditEnabled: (isEnabled: boolean) => void; toggleBookmark: (bookmark: ZBookmark) => void; + setVisibleBookmarks: (visibleBookmarks: ZBookmark[]) => void; + selectAll: () => void; + unSelectAll: () => void; + isEverythingSelected: () => boolean; } const useBulkActionsStore = create<BookmarkState>((set, get) => ({ selectedBookmarks: [], + visibleBookmarks: [], isBulkEditEnabled: false, toggleBookmark: (bookmark: ZBookmark) => { @@ -30,10 +36,27 @@ const useBulkActionsStore = create<BookmarkState>((set, get) => ({ } }, + selectAll: () => { + set({ selectedBookmarks: get().visibleBookmarks }); + }, + unSelectAll: () => { + set({ selectedBookmarks: [] }); + }, + + isEverythingSelected: () => { + return get().selectedBookmarks.length === get().visibleBookmarks.length; + }, + setIsBulkEditEnabled: (isEnabled) => { set({ isBulkEditEnabled: isEnabled }); set({ selectedBookmarks: [] }); }, + + setVisibleBookmarks: (visibleBookmarks: ZBookmark[]) => { + set({ + visibleBookmarks, + }); + }, })); export default useBulkActionsStore; |
