Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
Ishaan Jaff
52a9cfa029 update menu history 2024-11-25 22:31:04 -08:00
Ishaan Jaff
adc3c0beb7 store current page on url 2024-11-25 22:30:35 -08:00
2 changed files with 32 additions and 14 deletions

View file

@ -82,16 +82,26 @@ const CreateKeyPage = () => {
const invitation_id = searchParams.get("invitation_id"); const invitation_id = searchParams.get("invitation_id");
const token = getCookie('token'); const token = getCookie('token');
// Get page from URL, default to 'api-keys' if not present
const [page, setPage] = useState(() => { const [page, setPage] = useState(() => {
if (typeof window !== 'undefined') { return searchParams.get('page') || 'api-keys';
return localStorage.getItem('selectedPage') || "api-keys";
}
return "api-keys";
}); });
useEffect(() => { // Custom setPage function that updates URL
localStorage.setItem('selectedPage', page); const updatePage = (newPage: string) => {
}, [page]); // Update URL without full page reload
const newSearchParams = new URLSearchParams(searchParams);
newSearchParams.set('page', newPage);
// Use Next.js router to update URL
window.history.pushState(
null,
'',
`?${newSearchParams.toString()}`
);
setPage(newPage);
};
const [accessToken, setAccessToken] = useState<string | null>(null); const [accessToken, setAccessToken] = useState<string | null>(null);
@ -172,8 +182,8 @@ const CreateKeyPage = () => {
/> />
<div className="flex flex-1 overflow-auto"> <div className="flex flex-1 overflow-auto">
<div className="mt-8"> <div className="mt-8">
<Sidebar <Sidebar
setPage={setPage} setPage={updatePage}
userRole={userRole} userRole={userRole}
defaultSelectedKey={page} defaultSelectedKey={page}
/> />

View file

@ -7,7 +7,7 @@ const { Sider } = Layout;
// Define the props type // Define the props type
interface SidebarProps { interface SidebarProps {
setPage: React.Dispatch<React.SetStateAction<string>>; setPage: (page: string) => void;
userRole: string; userRole: string;
defaultSelectedKey: string; defaultSelectedKey: string;
} }
@ -67,9 +67,17 @@ const Sidebar: React.FC<SidebarProps> = ({
style={{ height: "100%", borderRight: 0 }} style={{ height: "100%", borderRight: 0 }}
> >
{filteredMenuItems.map(item => ( {filteredMenuItems.map(item => (
<Menu.Item key={item.key} onClick={() => setPage(item.page)}> <Menu.Item
<Text>{item.label}</Text> key={item.key}
</Menu.Item> onClick={() => {
const newSearchParams = new URLSearchParams(window.location.search);
newSearchParams.set('page', item.page);
window.history.pushState(null, '', `?${newSearchParams.toString()}`);
setPage(item.page);
}}
>
<Text>{item.label}</Text>
</Menu.Item>
))} ))}
</Menu> </Menu>
</Sider> </Sider>