From c000aa2602f43de81600f6ac112de20c476d9154 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 26 Jun 2024 19:33:40 +0000 Subject: [PATCH 1/3] build(deps): bump djangorestframework from 3.15.1 to 3.15.2 Bumps [djangorestframework](https://github.com/encode/django-rest-framework) from 3.15.1 to 3.15.2. - [Release notes](https://github.com/encode/django-rest-framework/releases) - [Commits](https://github.com/encode/django-rest-framework/compare/3.15.1...3.15.2) --- updated-dependencies: - dependency-name: djangorestframework dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 09fa3683db..e78d72ead8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ Django==5.0.6 -djangorestframework==3.15.1 +djangorestframework==3.15.2 django-cors-headers==4.3.1 From 86df1fd98e844e306cd4e524f9140c9ad256118b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 10 Jul 2024 22:08:57 +0000 Subject: [PATCH 2/3] build(deps): bump django from 5.0.6 to 5.0.7 Bumps [django](https://github.com/django/django) from 5.0.6 to 5.0.7. - [Commits](https://github.com/django/django/compare/5.0.6...5.0.7) --- updated-dependencies: - dependency-name: django dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index e78d72ead8..e5e44befb9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,3 +1,3 @@ -Django==5.0.6 +Django==5.0.7 djangorestframework==3.15.2 django-cors-headers==4.3.1 From f31a92ea984a1f2d304a88b753856e9960e2b4ee Mon Sep 17 00:00:00 2001 From: Pablo Lara Date: Thu, 11 Jul 2024 15:31:24 +0200 Subject: [PATCH 3/3] feat(sidebar): add state persistence using localStorage --- app/layout.tsx | 8 +++----- components/sidebar/SidebarWrap.tsx | 24 ++++++++++++++++++++---- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/app/layout.tsx b/app/layout.tsx index 074a962755..c414a0bf59 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -43,11 +43,9 @@ export default function RootLayout({ )} > -
-
- -
{children}
-
+
+ +
{children}
diff --git a/components/sidebar/SidebarWrap.tsx b/components/sidebar/SidebarWrap.tsx index 533b1819fc..81f2e195aa 100644 --- a/components/sidebar/SidebarWrap.tsx +++ b/components/sidebar/SidebarWrap.tsx @@ -2,7 +2,7 @@ import { Icon } from "@iconify/react"; import { Button, ScrollShadow, Spacer, Tooltip } from "@nextui-org/react"; -import React from "react"; +import React, { useCallback, useEffect, useState } from "react"; import { useMediaQuery } from "usehooks-ts"; import { cn } from "@/utils/cn"; @@ -14,15 +14,31 @@ import { sectionItemsWithTeams } from "./SidebarItems"; import UserAvatar from "./UserAvatar"; export const SidebarWrap = () => { - const [isCollapsed, setIsCollapsed] = React.useState(false); + const [isCollapsed, setIsCollapsed] = useState(false); + const [isLoaded, setIsLoaded] = useState(false); + const isMobile = useMediaQuery("(max-width: 768px)"); const isCompact = isCollapsed || isMobile; - const onToggle = React.useCallback(() => { - setIsCollapsed((prev) => !prev); + useEffect(() => { + const savedState = localStorage.getItem("isCollapsed"); + if (savedState !== null) { + setIsCollapsed(JSON.parse(savedState)); + } + setIsLoaded(true); }, []); + const onToggle = useCallback(() => { + setIsCollapsed((prev) => { + const newState = !prev; + localStorage.setItem("isCollapsed", JSON.stringify(newState)); + return newState; + }); + }, []); + + if (!isLoaded) return null; + return (