diff --git a/frontend-v2/package-lock.json b/frontend-v2/package-lock.json index 7c985708e..b95b7afb5 100644 --- a/frontend-v2/package-lock.json +++ b/frontend-v2/package-lock.json @@ -42,9 +42,10 @@ "@radix-ui/react-toast": "^1.2.3", "@radix-ui/react-tooltip": "^1.1.5", "@sindresorhus/slugify": "^2.2.1", - "@tanstack/react-query": "^4.36.1", + "@tanstack/react-query": "^5.62.7", "@tanstack/react-router": "^1.87.9", "@tanstack/virtual-file-routes": "^1.87.6", + "@tanstack/zod-adapter": "^1.91.0", "@types/nprogress": "^0.2.3", "@ucast/mongo2js": "^1.3.4", "argon2-browser": "^1.18.0", @@ -3628,9 +3629,9 @@ } }, "node_modules/@tanstack/query-core": { - "version": "4.36.1", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-4.36.1.tgz", - "integrity": "sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==", + "version": "5.62.7", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.62.7.tgz", + "integrity": "sha512-fgpfmwatsrUal6V+8EC2cxZIQVl9xvL7qYa03gsdsCy985UTUlS4N+/3hCzwR0PclYDqisca2AqR1BVgJGpUDA==", "license": "MIT", "funding": { "type": "github", @@ -3638,30 +3639,19 @@ } }, "node_modules/@tanstack/react-query": { - "version": "4.36.1", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-4.36.1.tgz", - "integrity": "sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==", + "version": "5.62.7", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.62.7.tgz", + "integrity": "sha512-+xCtP4UAFDTlRTYyEjLx0sRtWyr5GIk7TZjZwBu4YaNahi3Rt2oMyRqfpfVrtwsqY2sayP4iXVCwmC+ZqqFmuw==", "license": "MIT", "dependencies": { - "@tanstack/query-core": "4.36.1", - "use-sync-external-store": "^1.2.0" + "@tanstack/query-core": "5.62.7" }, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-native": "*" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } + "react": "^18 || ^19" } }, "node_modules/@tanstack/react-router": { @@ -3855,6 +3845,23 @@ "url": "https://github.com/sponsors/tannerlinsley" } }, + "node_modules/@tanstack/zod-adapter": { + "version": "1.91.0", + "resolved": "https://registry.npmjs.org/@tanstack/zod-adapter/-/zod-adapter-1.91.0.tgz", + "integrity": "sha512-OccU1RwZ7svIyztcWrVreurWUwaTv98wAWTjzAOS6fe8Ajl9oLT9+mvj4vdi5gn5ycKyu3xkrIPhLIp5fGLZcQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "@tanstack/react-router": ">=1.43.2", + "zod": "^3.23.8" + } + }, "node_modules/@types/argon2-browser": { "version": "1.18.4", "resolved": "https://registry.npmjs.org/@types/argon2-browser/-/argon2-browser-1.18.4.tgz", diff --git a/frontend-v2/package.json b/frontend-v2/package.json index d8d8c4fb4..eaa579d12 100644 --- a/frontend-v2/package.json +++ b/frontend-v2/package.json @@ -46,9 +46,10 @@ "@radix-ui/react-toast": "^1.2.3", "@radix-ui/react-tooltip": "^1.1.5", "@sindresorhus/slugify": "^2.2.1", - "@tanstack/react-query": "^4.36.1", + "@tanstack/react-query": "^5.62.7", "@tanstack/react-router": "^1.87.9", "@tanstack/virtual-file-routes": "^1.87.6", + "@tanstack/zod-adapter": "^1.91.0", "@types/nprogress": "^0.2.3", "@ucast/mongo2js": "^1.3.4", "argon2-browser": "^1.18.0", diff --git a/frontend-v2/src/components/navigation/NavHeader.tsx b/frontend-v2/src/components/navigation/NavHeader.tsx index 8b669de26..5393442af 100644 --- a/frontend-v2/src/components/navigation/NavHeader.tsx +++ b/frontend-v2/src/components/navigation/NavHeader.tsx @@ -90,7 +90,12 @@ export default function NavHeader({ )} {pageName === "Secrets" ? ( - + {pageName} ) : ( diff --git a/frontend-v2/src/components/organization/CreateOrgModal/CreateOrgModal.tsx b/frontend-v2/src/components/organization/CreateOrgModal/CreateOrgModal.tsx index c01d30dca..5341b7da5 100644 --- a/frontend-v2/src/components/organization/CreateOrgModal/CreateOrgModal.tsx +++ b/frontend-v2/src/components/organization/CreateOrgModal/CreateOrgModal.tsx @@ -1,13 +1,13 @@ import { FC } from "react"; import { Controller, useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; +import { useNavigate } from "@tanstack/react-router"; import z from "zod"; import { createNotification } from "@app/components/notifications"; import { Button, FormControl, Input, Modal, ModalContent } from "@app/components/v2"; import { useCreateOrg, useSelectOrganization } from "@app/hooks/api"; import { ProjectType } from "@app/hooks/api/workspace/types"; -import { useNavigate } from "@tanstack/react-router"; const schema = z .object({ @@ -58,7 +58,7 @@ export const CreateOrgModal: FC = ({ isOpen, onClose }) => }); navigate({ - to: `/organization/$organizationId/${ProjectType.SecretManager}` as const, + to: `/organization/$organizationId/${ProjectType.SecretManager}/overview` as const, params: { organizationId: organization.id } diff --git a/frontend-v2/src/components/utilities/attemptChangePassword.ts b/frontend-v2/src/components/utilities/attemptChangePassword.ts index 45281f2f2..e51168525 100644 --- a/frontend-v2/src/components/utilities/attemptChangePassword.ts +++ b/frontend-v2/src/components/utilities/attemptChangePassword.ts @@ -38,7 +38,7 @@ const attemptChangePassword = ({ email, currentPassword, newPassword }: Params): const clientProof = clientOldPassword.getProof(); clientNewPassword.init({ username: email, password: newPassword }, async () => { - clientNewPassword.createVerifier(async (err, result) => { + clientNewPassword.createVerifier(async (_err, result) => { try { const derivedKey = await deriveArgonKey({ password: newPassword, diff --git a/frontend-v2/src/components/utilities/intercom/intercom.ts b/frontend-v2/src/components/utilities/intercom/intercom.ts deleted file mode 100644 index 7228fceb7..000000000 --- a/frontend-v2/src/components/utilities/intercom/intercom.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* eslint-disable prefer-template */ -/* eslint-disable prefer-rest-params */ -/* eslint-disable @typescript-eslint/no-unused-expressions */ -/* eslint-disable no-nested-ternary */ -/* eslint-disable no-unexpected-multiline */ -/* eslint-disable react-hooks/exhaustive-deps */ -/* eslint-disable vars-on-top */ -/* eslint-disable no-var */ -/* eslint-disable func-names */ -// eslint-disable-next-line @typescript-eslint/ban-ts-comment -// @ts-nocheck - -import { INTERCOMid as APPid } from "@app/components/utilities/config"; - -// Loads Intercom with the snippet -// This must be run before boot, it initializes window.Intercom - -// prettier-ignore -export const load = () => { - (function(){ - var w=window; - var ic=w.Intercom; - - if(typeof ic==="function"){ - ic("reattach_activator"); - ic("update",w.intercomSettings); - } else { - var d=document; - var i=function() { - i.c(arguments); - }; - i.q=[]; - i.c=function(args) { - i.q.push(args); - }; - w.Intercom=i; - var l=function() { - var s=d.createElement("script"); - s.type="text/javascript"; - s.async=true; - s.src="https://widget.intercom.io/widget/" + APPid; - var x=d.getElementsByTagName("script")[0]; - x.parentNode.insertBefore(s, x); - }; - if (document.readyState==="complete") { - l(); - } else if (w.attachEvent) { - w.attachEvent("onload",l); - } else { - w.addEventListener("load",l,false); - } - } - })(); -} - -// Initializes Intercom -export const boot = (options = {}) => { - window && window.Intercom && window.Intercom("boot", { appid: APPid, ...options }); -}; - -export const update = () => { - window && window.Intercom && window.Intercom("update"); -}; diff --git a/frontend-v2/src/components/utilities/intercom/intercomProvider.ts b/frontend-v2/src/components/utilities/intercom/intercomProvider.ts deleted file mode 100644 index ef586261d..000000000 --- a/frontend-v2/src/components/utilities/intercom/intercomProvider.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { useEffect } from "react"; -import { useRouter } from "next/router"; - -import { useUser } from "@app/context"; - -import { boot as bootIntercom, load as loadIntercom, update as updateIntercom } from "./intercom"; - -// eslint-disable-next-line @typescript-eslint/no-unused-vars -export const IntercomProvider = ({ children }: { children: any }) => { - const { user } = useUser(); - const router = useRouter(); - - if (typeof window !== "undefined") { - loadIntercom(); - bootIntercom({ - name: `${user?.firstName || ""} ${user?.lastName || ""}`, - email: user?.email || "", - created_at: Math.floor((new Date(user?.createdAt)?.getTime() || 0) / 1000) - }); - } - - useEffect(() => { - // eslint-disable-next-line @typescript-eslint/no-unused-vars - const handleRouteChange = (url: string) => { - if (typeof window !== "undefined") { - updateIntercom(); - } - }; - - router.events.on("routeChangeStart", handleRouteChange); - - // If the component is unmounted, unsubscribe - // from the event with the `off` method: - return () => { - router.events.off("routeChangeStart", handleRouteChange); - }; - }, [router.events]); - - return children; -}; diff --git a/frontend-v2/src/components/v2/SecretPathInput/SecretPathInput.tsx b/frontend-v2/src/components/v2/SecretPathInput/SecretPathInput.tsx index d8f4c7546..c28b17927 100644 --- a/frontend-v2/src/components/v2/SecretPathInput/SecretPathInput.tsx +++ b/frontend-v2/src/components/v2/SecretPathInput/SecretPathInput.tsx @@ -39,7 +39,7 @@ export const SecretPathInput = ({ const workspaceId = currentWorkspace?.id || ""; const { folderNames: folders } = useGetFoldersByEnv({ path: secretPath, - environments: [environment || currentWorkspace?.environments?.[0].slug], + environments: [environment || currentWorkspace?.environments?.[0].slug || ""], projectId: workspaceId }); diff --git a/frontend-v2/src/context/OrgPermissionContext/OrgPermissionContext.tsx b/frontend-v2/src/context/OrgPermissionContext/OrgPermissionContext.tsx index c3cde82fb..1d399dedf 100644 --- a/frontend-v2/src/context/OrgPermissionContext/OrgPermissionContext.tsx +++ b/frontend-v2/src/context/OrgPermissionContext/OrgPermissionContext.tsx @@ -1,54 +1,5 @@ -import { createContext, ReactNode } from "react"; import { useRouteContext } from "@tanstack/react-router"; -import { useGetUserOrgPermissions } from "@app/hooks/api"; -import { OrgUser } from "@app/hooks/api/types"; - -import { useOrganization } from "../OrganizationContext"; -import { TOrgPermission } from "./types"; - -type Props = { - children: ReactNode; -}; - -const OrgPermissionContext = createContext(null); - -export const OrgPermissionProvider = ({ children }: Props): JSX.Element => { - const { currentOrg } = useOrganization(); - const orgId = currentOrg?.id || ""; - const { data: permission, isLoading } = useGetUserOrgPermissions({ orgId }); - - if (isLoading) { - return ( -
- infisical loading indicator -
- ); - } - - if (!permission) { - return ( -
- Failed to load user permissions -
- ); - } - - return ( - {children} - ); -}; - export const useOrgPermission = () => { const ctx = useRouteContext({ from: "/_authenticate/_org_details", diff --git a/frontend-v2/src/context/OrgPermissionContext/index.tsx b/frontend-v2/src/context/OrgPermissionContext/index.tsx index 730fe55b1..300f05904 100644 --- a/frontend-v2/src/context/OrgPermissionContext/index.tsx +++ b/frontend-v2/src/context/OrgPermissionContext/index.tsx @@ -1,3 +1,3 @@ -export { OrgPermissionProvider, useOrgPermission } from "./OrgPermissionContext"; +export { useOrgPermission } from "./OrgPermissionContext"; export type { TOrgPermission } from "./types"; export { OrgPermissionActions, OrgPermissionSubjects } from "./types"; diff --git a/frontend-v2/src/context/OrganizationContext/OrganizationContext.tsx b/frontend-v2/src/context/OrganizationContext/OrganizationContext.tsx index 2db7a19d7..78c471759 100644 --- a/frontend-v2/src/context/OrganizationContext/OrganizationContext.tsx +++ b/frontend-v2/src/context/OrganizationContext/OrganizationContext.tsx @@ -1,40 +1,5 @@ -import { createContext, ReactNode, useContext, useMemo } from "react"; import { useRouteContext } from "@tanstack/react-router"; -import { useGetOrganizations } from "@app/hooks/api"; -import { Organization } from "@app/hooks/api/types"; - -type TOrgContext = { - orgs?: Organization[]; - currentOrg?: Organization; - isLoading: boolean; -}; - -const OrgContext = createContext(null); - -type Props = { - children: ReactNode; -}; - -export const OrgProvider = ({ children }: Props): JSX.Element => { - const { data: userOrgs, isLoading } = useGetOrganizations(); - - // const currentWsOrgID = currentWorkspace?.organization; - const currentWsOrgID = localStorage.getItem("orgData.id"); - - // memorize the workspace details for the context - const value = useMemo( - () => ({ - orgs: userOrgs, - currentOrg: (userOrgs || []).find(({ id }) => id === currentWsOrgID), - isLoading - }), - [currentWsOrgID, userOrgs, isLoading] - ); - - return {children}; -}; - export const useOrganization = () => { const currentOrg = useRouteContext({ from: "/_authenticate/_org_details", diff --git a/frontend-v2/src/context/OrganizationContext/index.tsx b/frontend-v2/src/context/OrganizationContext/index.tsx index 65aba8ca4..ba97abd12 100644 --- a/frontend-v2/src/context/OrganizationContext/index.tsx +++ b/frontend-v2/src/context/OrganizationContext/index.tsx @@ -1 +1 @@ -export { OrgProvider, useOrganization } from "./OrganizationContext"; +export { useOrganization } from "./OrganizationContext"; diff --git a/frontend-v2/src/context/ServerConfigContext/ServerConfigContext.tsx b/frontend-v2/src/context/ServerConfigContext/ServerConfigContext.tsx index 6dd8c9952..3af31dbb7 100644 --- a/frontend-v2/src/context/ServerConfigContext/ServerConfigContext.tsx +++ b/frontend-v2/src/context/ServerConfigContext/ServerConfigContext.tsx @@ -1,86 +1,11 @@ -import { createContext, ReactNode, useEffect, useMemo } from "react"; -import { Helmet } from "react-helmet"; -import { useNavigate, useRouteContext } from "@tanstack/react-router"; - -import { ContentLoader } from "@app/components/v2/ContentLoader"; -import { useGetServerConfig } from "@app/hooks/api"; -import { TServerConfig } from "@app/hooks/api/admin/types"; - -type TServerConfigContext = { - config: TServerConfig; -}; - -const ServerConfigContext = createContext(null); - -type Props = { - children: ReactNode; -}; - -export const ServerConfigProvider = ({ children }: Props): JSX.Element => { - const navigate = useNavigate(); - const { data, isLoading } = useGetServerConfig(); - - // memorize the workspace details for the context - const value = useMemo(() => { - return { - config: data! - }; - }, [data]); - - useEffect(() => { - if (!isLoading && data && !data.initialized && !data.isMigrationModeOn) { - navigate({ to: "/admin/signup" }); - } - }, [isLoading, data]); - - if (!isLoading && data?.isMigrationModeOn) { - return ( -
- - Infisical Maintenance Mode - - - maintenance mode -

- Scheduled Maintenance -

-
- Infisical is undergoing planned maintenance.
No action is required on your end — - your applications will continue to fetch secrets. -
If you have questions, please{" "} - - join our Slack community - - . -
-
- ); - } - - if (isLoading) { - return ( -
- -
- ); - } - - return {children}; -}; +import { adminQueryKeys, fetchServerConfig } from "@app/hooks/api/admin/queries"; +import { useSuspenseQuery } from "@tanstack/react-query"; export const useServerConfig = () => { - const config = useRouteContext({ from: "__root__", select: (el) => el.serverConfig }); + const { data: config } = useSuspenseQuery({ + queryKey: adminQueryKeys.serverConfig(), + queryFn: fetchServerConfig + }); return { config }; }; diff --git a/frontend-v2/src/context/ServerConfigContext/index.tsx b/frontend-v2/src/context/ServerConfigContext/index.tsx index 856eb5c77..41c2a5f26 100644 --- a/frontend-v2/src/context/ServerConfigContext/index.tsx +++ b/frontend-v2/src/context/ServerConfigContext/index.tsx @@ -1 +1 @@ -export { ServerConfigProvider, useServerConfig } from "./ServerConfigContext"; +export { useServerConfig } from "./ServerConfigContext"; diff --git a/frontend-v2/src/context/SubscriptionContext/SubscriptionContext.tsx b/frontend-v2/src/context/SubscriptionContext/SubscriptionContext.tsx index 21c103081..ac563b5f1 100644 --- a/frontend-v2/src/context/SubscriptionContext/SubscriptionContext.tsx +++ b/frontend-v2/src/context/SubscriptionContext/SubscriptionContext.tsx @@ -1,41 +1,5 @@ -import { createContext, ReactNode, useContext, useMemo } from "react"; import { useRouteContext } from "@tanstack/react-router"; -import { useGetOrgSubscription } from "@app/hooks/api"; -import { SubscriptionPlan } from "@app/hooks/api/types"; - -import { useOrganization } from "../OrganizationContext"; - -type TSubscriptionContext = { - subscription?: SubscriptionPlan; - isLoading: boolean; -}; - -const SubscriptionContext = createContext(null); - -type Props = { - children: ReactNode; -}; - -export const SubscriptionProvider = ({ children }: Props): JSX.Element => { - const { currentOrg } = useOrganization(); - - const { data, isLoading } = useGetOrgSubscription({ - orgID: currentOrg?.id || "" - }); - - // memorize the workspace details for the context - const value = useMemo( - () => ({ - subscription: data, - isLoading - }), - [data, isLoading] - ); - - return {children}; -}; - export const useSubscription = () => { const subscription = useRouteContext({ from: "/_authenticate/_org_details", diff --git a/frontend-v2/src/context/SubscriptionContext/index.tsx b/frontend-v2/src/context/SubscriptionContext/index.tsx index 50a97eeb2..0c5a89552 100644 --- a/frontend-v2/src/context/SubscriptionContext/index.tsx +++ b/frontend-v2/src/context/SubscriptionContext/index.tsx @@ -1 +1 @@ -export { SubscriptionProvider, useSubscription } from "./SubscriptionContext"; +export { useSubscription } from "./SubscriptionContext"; diff --git a/frontend-v2/src/context/UserContext/UserContext.tsx b/frontend-v2/src/context/UserContext/UserContext.tsx index 58c953470..507e0aaea 100644 --- a/frontend-v2/src/context/UserContext/UserContext.tsx +++ b/frontend-v2/src/context/UserContext/UserContext.tsx @@ -1,49 +1,5 @@ -import { createContext, ReactNode, useContext, useMemo } from "react"; import { useRouteContext } from "@tanstack/react-router"; -import { useGetUser } from "@app/hooks/api"; -import { User, UserEnc } from "@app/hooks/api/types"; - -type TUserContext = { - user: User & UserEnc; - isLoading: boolean; -}; - -const UserContext = createContext(null); - -type Props = { - children: ReactNode; -}; - -export const UserProvider = ({ children }: Props): JSX.Element => { - const { data, isLoading } = useGetUser(); - - // memorize the workspace details for the context - const value = useMemo(() => { - return { - user: data!, - isLoading - }; - }, [data, isLoading]); - - if (isLoading) { - return ( -
- infisical loading indicator -
- ); - } - - return {children}; -}; - export const useUser = () => { const user = useRouteContext({ from: "/_authenticate", select: (el) => el.user })!; diff --git a/frontend-v2/src/context/UserContext/index.tsx b/frontend-v2/src/context/UserContext/index.tsx index b4f6056dd..c425b8073 100644 --- a/frontend-v2/src/context/UserContext/index.tsx +++ b/frontend-v2/src/context/UserContext/index.tsx @@ -1 +1 @@ -export { UserProvider, useUser } from "./UserContext"; +export { useUser } from "./UserContext"; diff --git a/frontend-v2/src/context/index.tsx b/frontend-v2/src/context/index.tsx index 91dae5d2d..4b273bcb7 100644 --- a/frontend-v2/src/context/index.tsx +++ b/frontend-v2/src/context/index.tsx @@ -1,9 +1,8 @@ export { AuthProvider } from "./AuthContext"; -export { OrgProvider, useOrganization } from "./OrganizationContext"; +export { useOrganization } from "./OrganizationContext"; export type { TOrgPermission } from "./OrgPermissionContext"; export { OrgPermissionActions, - OrgPermissionProvider, OrgPermissionSubjects, useOrgPermission } from "./OrgPermissionContext"; @@ -16,7 +15,7 @@ export { ProjectPermissionSub, useProjectPermission } from "./ProjectPermissionContext"; -export { ServerConfigProvider, useServerConfig } from "./ServerConfigContext"; -export { SubscriptionProvider, useSubscription } from "./SubscriptionContext"; -export { UserProvider, useUser } from "./UserContext"; +export { useServerConfig } from "./ServerConfigContext"; +export { useSubscription } from "./SubscriptionContext"; +export { useUser } from "./UserContext"; export { useWorkspace, WorkspaceProvider } from "./WorkspaceContext"; diff --git a/frontend-v2/src/helpers/project.ts b/frontend-v2/src/helpers/project.ts index 8898f00c9..cfd39a9c6 100644 --- a/frontend-v2/src/helpers/project.ts +++ b/frontend-v2/src/helpers/project.ts @@ -60,16 +60,15 @@ export const initProjectHelper = async ({ projectName }: { projectName: string } return project; }; - export const getProjectHomePage = (workspace: Workspace) => { if (workspace.type === ProjectType.SecretManager) { - return `/${workspace.type}/${workspace.id}/secrets/overview`; + return `/${workspace.type}/$projectId/secrets/overview` as const; } if (workspace.type === ProjectType.CertificateManager) { - return `/${workspace.type}/${workspace.id}/certificates`; + return `/${workspace.type}/$projectId/certificates` as const; } - return `/${workspace.type}/${workspace.id}/kms`; + return `/${workspace.type}/$projectId/kms` as const; }; export const getProjectTitle = (type: ProjectType) => { diff --git a/frontend-v2/src/hooks/api/auth/queries.tsx b/frontend-v2/src/hooks/api/auth/queries.tsx index 8d03ce614..23c7fc70e 100644 --- a/frontend-v2/src/hooks/api/auth/queries.tsx +++ b/frontend-v2/src/hooks/api/auth/queries.tsx @@ -89,10 +89,9 @@ export const useSelectOrganization = () => { return data; }, onSuccess: () => { - queryClient.invalidateQueries([ - organizationKeys.getUserOrganizations, - workspaceKeys.getAllUserWorkspace - ]); + queryClient.invalidateQueries({ + queryKey: [organizationKeys.getUserOrganizations, workspaceKeys.getAllUserWorkspace] + }); } }); }; diff --git a/frontend-v2/src/hooks/api/migration/mutations.tsx b/frontend-v2/src/hooks/api/migration/mutations.tsx index feee7778d..f40fbb05f 100644 --- a/frontend-v2/src/hooks/api/migration/mutations.tsx +++ b/frontend-v2/src/hooks/api/migration/mutations.tsx @@ -21,7 +21,9 @@ export const useImportEnvKey = () => { "Content-Type": "multipart/form-data" }, onUploadProgress: (progressEvent) => { - const percentCompleted = Math.round((progressEvent.loaded * 100) / progressEvent.total); + const percentCompleted = Math.round( + (progressEvent.loaded * 100) / (progressEvent?.total || 1) + ); console.log(`Upload Progress: ${percentCompleted}%`); } }); diff --git a/frontend-v2/src/hooks/api/secretApprovalRequest/queries.tsx b/frontend-v2/src/hooks/api/secretApprovalRequest/queries.tsx index d5bca0ccd..a15316018 100644 --- a/frontend-v2/src/hooks/api/secretApprovalRequest/queries.tsx +++ b/frontend-v2/src/hooks/api/secretApprovalRequest/queries.tsx @@ -143,7 +143,7 @@ const fetchSecretApprovalRequestList = async ({ export const useGetSecretApprovalRequests = ({ workspaceId, environment, - options = object, + options = {}, status, limit = 20, committer diff --git a/frontend-v2/src/hooks/api/secretScanning/queries.ts b/frontend-v2/src/hooks/api/secretScanning/queries.ts index 84ad6deda..fc5f04052 100644 --- a/frontend-v2/src/hooks/api/secretScanning/queries.ts +++ b/frontend-v2/src/hooks/api/secretScanning/queries.ts @@ -1,5 +1,7 @@ -import { apiRequest } from "@app/config/request"; import { useQuery } from "@tanstack/react-query"; + +import { apiRequest } from "@app/config/request"; + import { TSecretScanningGitRisks } from "./types"; export const secretScanningQueryKeys = { diff --git a/frontend-v2/src/hooks/api/secretSharing/queries.ts b/frontend-v2/src/hooks/api/secretSharing/queries.ts index 479f3ec16..c267adabf 100644 --- a/frontend-v2/src/hooks/api/secretSharing/queries.ts +++ b/frontend-v2/src/hooks/api/secretSharing/queries.ts @@ -49,9 +49,10 @@ export const useGetActiveSharedSecretById = ({ hashedHex: string | null; password?: string; }) => { - return useQuery( - secretSharingKeys.getSecretById({ id: sharedSecretId, hashedHex, password }), - async () => { + return useQuery({ + queryKey: secretSharingKeys.getSecretById({ id: sharedSecretId, hashedHex, password }), + + queryFn: async () => { const { data } = await apiRequest.post( `/api/v1/secret-sharing/public/${sharedSecretId}`, { @@ -61,9 +62,8 @@ export const useGetActiveSharedSecretById = ({ ); return data; - }, - { - enabled: Boolean(sharedSecretId) } - ); + }, { + enabled: Boolean(sharedSecretId) + }); }; diff --git a/frontend-v2/src/hooks/api/secretSnapshots/queries.tsx b/frontend-v2/src/hooks/api/secretSnapshots/queries.tsx index 5003d5abe..b9be2878d 100644 --- a/frontend-v2/src/hooks/api/secretSnapshots/queries.tsx +++ b/frontend-v2/src/hooks/api/secretSnapshots/queries.tsx @@ -148,14 +148,18 @@ export const usePerformSecretRollback = () => { return data; }, onSuccess: (_, { workspaceId, environment, directory }) => { - queryClient.invalidateQueries([ - { workspaceId, environment, secretPath: directory }, - "secrets" - ]); - queryClient.invalidateQueries([ - "secret-folders", - { projectId: workspaceId, environment, path: directory } - ]); + queryClient.invalidateQueries({ + queryKey: [ + { workspaceId, environment, secretPath: directory }, + "secrets" + ] + }); + queryClient.invalidateQueries({ + queryKey: [ + "secret-folders", + { projectId: workspaceId, environment, path: directory } + ] + }); queryClient.invalidateQueries( secretSnapshotKeys.list({ workspaceId, environment, directory }) ); diff --git a/frontend-v2/src/hooks/api/workspace/queries.tsx b/frontend-v2/src/hooks/api/workspace/queries.tsx index 74fdfda98..909d5a895 100644 --- a/frontend-v2/src/hooks/api/workspace/queries.tsx +++ b/frontend-v2/src/hooks/api/workspace/queries.tsx @@ -148,9 +148,12 @@ export const useGetUserWorkspaces = ({ includeRoles?: boolean; type?: ProjectType | "all"; } = {}) => - useQuery(workspaceKeys.getAllUserWorkspace(type || ""), () => - fetchUserWorkspaces(includeRoles, type) - ); + useQuery({ + queryKey: workspaceKeys.getAllUserWorkspace(type || ""), + + queryFn: () => + fetchUserWorkspaces(includeRoles, type) + }); const fetchUserWorkspaceMemberships = async (orgId: string) => { const { data } = await apiRequest.get>( @@ -324,7 +327,9 @@ export const useDeleteWorkspace = () => { }, onSuccess: (dto) => { queryClient.invalidateQueries(workspaceKeys.getAllUserWorkspace(dto.type)); - queryClient.invalidateQueries(["org-admin-projects"]); + queryClient.invalidateQueries({ + queryKey: ["org-admin-projects"] + }); } }); }; diff --git a/frontend-v2/src/layouts/OrganizationLayout/OrganizationLayout.tsx b/frontend-v2/src/layouts/OrganizationLayout/OrganizationLayout.tsx index b178f1dc2..ace362ba9 100644 --- a/frontend-v2/src/layouts/OrganizationLayout/OrganizationLayout.tsx +++ b/frontend-v2/src/layouts/OrganizationLayout/OrganizationLayout.tsx @@ -74,7 +74,9 @@ export const OrganizationLayout = () => {
@@ -86,7 +88,7 @@ export const OrganizationLayout = () => { { )} diff --git a/frontend-v2/src/layouts/PersonalSettingsLayout/PersonalSettingsLayout.tsx b/frontend-v2/src/layouts/PersonalSettingsLayout/PersonalSettingsLayout.tsx index 31a050105..948df5a3f 100644 --- a/frontend-v2/src/layouts/PersonalSettingsLayout/PersonalSettingsLayout.tsx +++ b/frontend-v2/src/layouts/PersonalSettingsLayout/PersonalSettingsLayout.tsx @@ -32,7 +32,9 @@ export const PersonalSettingsLayout = () => {