aboutsummaryrefslogtreecommitdiffstats
path: root/apps/web/lib/bulkActions.ts
diff options
context:
space:
mode:
authorMohamedBassem <me@mbassem.com>2024-09-27 09:17:51 +0000
committerMohamedBassem <me@mbassem.com>2024-09-27 09:17:51 +0000
commitbadf697d0b83ef4d093e781f04ed73d3901e6a9f (patch)
treec9dc70fe8c751695df3c50bc82ccf142bf237a6b /apps/web/lib/bulkActions.ts
parentee0aad531b0106d25fa91a044d00cb95f79e3b5b (diff)
downloadkarakeep-badf697d0b83ef4d093e781f04ed73d3901e6a9f.tar.zst
feature(web): Add a select all button to bulk actions
Diffstat (limited to '')
-rw-r--r--apps/web/lib/bulkActions.ts23
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;