From a337e6baddf1ed148028c709787bd56fa3fc554e Mon Sep 17 00:00:00 2001 From: = Date: Wed, 1 Jan 2025 19:24:23 +0530 Subject: [PATCH] feat: bug fixes in overview page and dashboard page --- .../src/components/navigation/NavHeader.tsx | 2 +- .../ProjectPermissionContext.tsx | 1 + .../OverviewPage/OverviewPage.tsx | 4 ++-- .../secret-manager/OverviewPage/route.tsx | 7 +++++-- .../SecretDashboardPage.tsx | 19 +++++-------------- .../FolderListView/FolderListView.tsx | 2 +- .../SecretDashboardPage/route.tsx | 7 +++++-- .../SettingsPage/SettingsPage.tsx | 2 +- 8 files changed, 21 insertions(+), 23 deletions(-) diff --git a/frontend-v2/src/components/navigation/NavHeader.tsx b/frontend-v2/src/components/navigation/NavHeader.tsx index 06e7b47bd..7cafa6826 100644 --- a/frontend-v2/src/components/navigation/NavHeader.tsx +++ b/frontend-v2/src/components/navigation/NavHeader.tsx @@ -71,7 +71,7 @@ export default function NavHeader({ {currentOrg?.name?.charAt(0)} {currentOrg?.name} diff --git a/frontend-v2/src/context/ProjectPermissionContext/ProjectPermissionContext.tsx b/frontend-v2/src/context/ProjectPermissionContext/ProjectPermissionContext.tsx index eab321fe4..63a3c63b8 100644 --- a/frontend-v2/src/context/ProjectPermissionContext/ProjectPermissionContext.tsx +++ b/frontend-v2/src/context/ProjectPermissionContext/ProjectPermissionContext.tsx @@ -28,6 +28,7 @@ export const useProjectPermission = () => { } = useSuspenseQuery({ queryKey: roleQueryKeys.getUserProjectPermissions({ workspaceId: projectId }), queryFn: () => fetchUserProjectPermissions({ workspaceId: projectId }), + staleTime: Infinity, select: (data) => { const rule = unpackRules>>(data.permissions); const negatedRules = groupBy( diff --git a/frontend-v2/src/pages/secret-manager/OverviewPage/OverviewPage.tsx b/frontend-v2/src/pages/secret-manager/OverviewPage/OverviewPage.tsx index 6b7cdd0a3..6fa63816d 100644 --- a/frontend-v2/src/pages/secret-manager/OverviewPage/OverviewPage.tsx +++ b/frontend-v2/src/pages/secret-manager/OverviewPage/OverviewPage.tsx @@ -473,7 +473,7 @@ export const OverviewPage = () => { navigate({ search: (prev) => ({ ...prev, - secretPath: `${routerSearch?.secretPath || ""}/${path}` + secretPath: `${routerSearch.secretPath === "/" ? "" : routerSearch.secretPath}/${path}` }) }).then(() => { setFilter(DEFAULT_FILTER_STATE); @@ -504,7 +504,7 @@ export const OverviewPage = () => { } } - const query: Record = { ...routerSearch, env: slug, searchFilter }; + const query: Record = { ...routerSearch, search: searchFilter }; const envIndex = visibleEnvs.findIndex((el) => slug === el.slug); if (envIndex !== -1) { navigate({ diff --git a/frontend-v2/src/pages/secret-manager/OverviewPage/route.tsx b/frontend-v2/src/pages/secret-manager/OverviewPage/route.tsx index c8e1b352b..ee2da330b 100644 --- a/frontend-v2/src/pages/secret-manager/OverviewPage/route.tsx +++ b/frontend-v2/src/pages/secret-manager/OverviewPage/route.tsx @@ -1,4 +1,4 @@ -import { createFileRoute } from "@tanstack/react-router"; +import { createFileRoute, stripSearchParams } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; @@ -13,5 +13,8 @@ export const Route = createFileRoute( "/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/overview" )({ component: OverviewPage, - validateSearch: zodValidator(SecretOverviewPageQuerySchema) + validateSearch: zodValidator(SecretOverviewPageQuerySchema), + search: { + middlewares: [stripSearchParams({ secretPath: "/", search: "" })] + } }); diff --git a/frontend-v2/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx b/frontend-v2/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx index b607458f6..300b6f86e 100644 --- a/frontend-v2/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx +++ b/frontend-v2/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx @@ -129,7 +129,7 @@ const Page = () => { const defaultFilterState = { tags: {}, - searchFilter: (routerQueryParams.searchFilter as string) || "", + searchFilter: (routerQueryParams.search as string) || "", // these should always be on by default for the UI, they will be disabled for the query below based off permissions include: { [RowType.Folder]: true, @@ -143,7 +143,6 @@ const Page = () => { const [debouncedSearchFilter, setDebouncedSearchFilter] = useDebounce(filter.searchFilter); const [filterHistory, setFilterHistory] = useState>(new Map()); - // TODO(rbr): check why this fails const createSecretPopUp = usePopUpState(PopUpNames.CreateSecretForm); const { togglePopUp } = usePopUpAction(); @@ -261,8 +260,11 @@ const Page = () => { const handleEnvChange = (slug: string) => { navigate({ + params: { + envSlug: slug + }, search: (state) => { - const newState = { ...state, secretPath: undefined, env: slug }; + const newState = { ...state, secretPath: undefined }; return newState; } }); @@ -316,17 +318,6 @@ const Page = () => { const restore = filterHistory.get(secretPath); setFilter(restore ?? defaultFilterState); setDebouncedSearchFilter(restore?.searchFilter ?? ""); - - // this is a temp work around until we fully transition state to query params, - // setting the initial search filter by query and then moving it to internal state - if (routerQueryParams.searchFilter) { - navigate({ - search: (state) => { - const { searchFilter, ...query } = state; - return query; - } - }); - } }, [secretPath]); useEffect(() => { diff --git a/frontend-v2/src/pages/secret-manager/SecretDashboardPage/components/FolderListView/FolderListView.tsx b/frontend-v2/src/pages/secret-manager/SecretDashboardPage/components/FolderListView/FolderListView.tsx index c9872f6f5..191543200 100644 --- a/frontend-v2/src/pages/secret-manager/SecretDashboardPage/components/FolderListView/FolderListView.tsx +++ b/frontend-v2/src/pages/secret-manager/SecretDashboardPage/components/FolderListView/FolderListView.tsx @@ -90,7 +90,7 @@ export const FolderListView = ({ }; const handleFolderClick = (name: string) => { - const path = `${secretPathQueryparam || ""}/${name}`; + const path = `${secretPathQueryparam === "/" ? "" : secretPathQueryparam}/${name}`; navigate({ search: (el) => ({ ...el, secretPath: path }) }).then(() => onNavigateToFolder(path)); diff --git a/frontend-v2/src/pages/secret-manager/SecretDashboardPage/route.tsx b/frontend-v2/src/pages/secret-manager/SecretDashboardPage/route.tsx index e96407591..9a5821124 100644 --- a/frontend-v2/src/pages/secret-manager/SecretDashboardPage/route.tsx +++ b/frontend-v2/src/pages/secret-manager/SecretDashboardPage/route.tsx @@ -1,4 +1,4 @@ -import { createFileRoute } from "@tanstack/react-router"; +import { createFileRoute, stripSearchParams } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; @@ -14,5 +14,8 @@ export const Route = createFileRoute( "/_authenticate/_inject-org-details/secret-manager/$projectId/_secret-manager-layout/secrets/$envSlug" )({ component: SecretDashboardPage, - validateSearch: zodValidator(SecretDashboardPageQueryParamsSchema) + validateSearch: zodValidator(SecretDashboardPageQueryParamsSchema), + search: { + middlewares: [stripSearchParams({ secretPath: "/", search: "", tags: "" })] + } }); diff --git a/frontend-v2/src/pages/secret-manager/SettingsPage/SettingsPage.tsx b/frontend-v2/src/pages/secret-manager/SettingsPage/SettingsPage.tsx index a2f927151..c96a37be5 100644 --- a/frontend-v2/src/pages/secret-manager/SettingsPage/SettingsPage.tsx +++ b/frontend-v2/src/pages/secret-manager/SettingsPage/SettingsPage.tsx @@ -48,7 +48,7 @@ export const SettingsPage = () => {

{t("settings.project.title")}

- + {tabs .filter((el) => !el.isHidden)