From 3afe1e21df6dcc0483e74e0db02d9d82af32ecea Mon Sep 17 00:00:00 2001
From: xuatz <xzlow10@gmail.com>
Date: Mon, 2 Jun 2025 04:01:26 +0900
Subject: feat: add user customisable default archive display behaviour (#1505)

* fix typo

* implementation

* bug fix and refactoring

* Use nuqs for searchParam management

* remove the todo about the tests

* fix tests

---------

Co-authored-by: Mohamed Bassem <me@mbassem.com>
---
 apps/web/components/utils/useShowArchived.tsx | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100644 apps/web/components/utils/useShowArchived.tsx

(limited to 'apps/web/components/utils/useShowArchived.tsx')

diff --git a/apps/web/components/utils/useShowArchived.tsx b/apps/web/components/utils/useShowArchived.tsx
new file mode 100644
index 00000000..3fc66e91
--- /dev/null
+++ b/apps/web/components/utils/useShowArchived.tsx
@@ -0,0 +1,24 @@
+import { useCallback } from "react";
+import { useUserSettings } from "@/lib/userSettings";
+import { parseAsBoolean, useQueryState } from "nuqs";
+
+export function useShowArchived() {
+  const userSettings = useUserSettings();
+  const [showArchived, setShowArchived] = useQueryState(
+    "includeArchived",
+    parseAsBoolean
+      .withOptions({
+        shallow: false,
+      })
+      .withDefault(userSettings.archiveDisplayBehaviour === "show"),
+  );
+
+  const onClickShowArchived = useCallback(() => {
+    setShowArchived((prev) => !prev);
+  }, [setShowArchived]);
+
+  return {
+    showArchived,
+    onClickShowArchived,
+  };
+}
-- 
cgit v1.2.3-70-g09d2

