diff --git a/frontend/public/locales/en/translations.json b/frontend/public/locales/en/translations.json index 5c68e440d..8b6af1169 100644 --- a/frontend/public/locales/en/translations.json +++ b/frontend/public/locales/en/translations.json @@ -222,10 +222,10 @@ "org-members-description": "Manage members of your organization. These users could afterwards be formed into projects.", "search-members": "Search members...", "add-dialog": { - "add-member-to-project": "Add a member to your project", + "add-member-to-project": "Add users to your project", "already-all-invited": "All the users in your organization are already invited.", "add-user-org-first": "Add more users to the organization first.", - "user-will-email": "The user will receive an email with the instructions.", + "user-will-email": "Users will receive an email with instructions to gain access.", "looking-add": "<0>If you are looking to add users to your org,<1>click here", "add-user-to-org": "Add Users to Organization" } diff --git a/frontend/public/lotties/settings-cog.json b/frontend/public/lotties/settings-cog.json new file mode 100644 index 000000000..fdf1333c7 --- /dev/null +++ b/frontend/public/lotties/settings-cog.json @@ -0,0 +1 @@ +{"v":"5.12.1","fr":60,"ip":0,"op":60,"w":500,"h":500,"nm":"system-regular-63-settings-cog","ddd":0,"assets":[{"id":"comp_1","nm":"hover-cog-1","fr":60,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary.design","cl":"primary design","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.38],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0]},{"t":60,"s":[180]}],"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[65.415,17.27],[65.425,17.27]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ind":1,"ty":"sh","ix":2,"ks":{"a":0,"k":{"i":[[-5.279,-1.58],[-4.338,0],[-4.502,1.145],[-2.995,1.872],[-0.218,0.122],[-4.41,7.876],[-0.134,0.213],[-1.581,5.285],[0,4.342],[1.146,4.497],[1.868,2.989],[0.123,0.22],[7.877,4.411],[0.214,0.133],[5.283,1.581],[4.342,0],[4.498,-1.145],[2.992,-1.871],[0.22,-0.123],[4.411,-7.878],[0.134,-0.213],[1.581,-5.283],[0,-4.341],[-1.144,-4.497],[-1.871,-2.993],[-0.123,-0.219],[-7.879,-4.413],[-0.213,-0.132]],"o":[[4.502,1.145],[4.338,0],[5.28,-1.581],[0.212,-0.132],[7.878,-4.413],[0.123,-0.22],[1.868,-2.99],[1.146,-4.495],[0,-4.342],[-1.581,-5.285],[-0.134,-0.214],[-4.411,-7.877],[-0.219,-0.123],[-2.991,-1.87],[-4.497,-1.145],[-4.341,0],[-5.282,1.581],[-0.214,0.133],[-7.876,4.41],[-0.123,0.219],[-1.87,2.992],[-1.145,4.498],[0,4.341],[1.581,5.284],[0.133,0.213],[4.41,7.876],[0.218,0.122],[2.996,1.872]],"v":[[-13.321,50.103],[-0.001,51.829],[13.318,50.104],[25.456,45.04],[26.102,44.658],[44.885,25.874],[45.271,25.224],[50.331,13.088],[52.057,-0.229],[50.331,-13.547],[45.271,-25.682],[44.885,-26.332],[26.103,-45.116],[25.453,-45.5],[13.316,-50.562],[-0.001,-52.287],[-13.319,-50.562],[-25.455,-45.5],[-26.105,-45.115],[-44.888,-26.332],[-45.272,-25.684],[-50.334,-13.548],[-52.059,-0.229],[-50.335,13.087],[-45.271,25.226],[-44.888,25.874],[-26.104,44.658],[-25.458,45.04]],"c":true},"ix":2},"nm":"Path 2","mn":"ADBE Vector Shape - Group","hd":false},{"ind":2,"ty":"sh","ix":3,"ks":{"a":0,"k":{"i":[[7.066,0],[7.15,1.852],[0.174,0.051],[7.142,4.396],[7.169,12.665],[1.507,5.085],[0.045,0.174],[0,7.071],[-1.853,7.147],[-0.051,0.173],[-4.395,7.138],[-12.665,7.167],[-5.085,1.507],[-0.174,0.045],[-7.071,0],[-7.146,-1.853],[-0.172,-0.051],[-7.138,-4.395],[-7.169,-12.666],[-1.508,-5.086],[-0.045,-0.174],[0,-7.073],[1.854,-7.145],[0.051,-0.171],[4.395,-7.136],[12.666,-7.17],[5.083,-1.507],[0.176,-0.045]],"o":[[-7.065,0],[-0.175,-0.046],[-5.082,-1.506],[-12.667,-7.17],[-4.395,-7.139],[-0.051,-0.172],[-1.853,-7.146],[0,-7.071],[0.045,-0.175],[1.508,-5.085],[7.17,-12.666],[7.138,-4.396],[0.172,-0.051],[7.147,-1.853],[7.072,0],[0.174,0.045],[5.086,1.508],[12.664,7.168],[4.394,7.134],[0.051,0.172],[1.854,7.146],[0,7.074],[-0.045,0.173],[-1.508,5.086],[-7.168,12.664],[-7.142,4.396],[-0.174,0.051],[-7.149,1.852]],"v":[[-0.001,83.129],[-21.426,80.338],[-21.949,80.193],[-41.716,71.788],[-72.018,41.488],[-80.423,21.717],[-80.567,21.197],[-83.359,-0.229],[-80.567,-21.656],[-80.423,-22.178],[-72.018,-41.946],[-41.719,-72.244],[-21.949,-80.651],[-21.43,-80.795],[-0.001,-83.587],[21.427,-80.795],[21.946,-80.651],[41.717,-72.244],[72.015,-41.945],[80.42,-22.178],[80.563,-21.659],[83.357,-0.229],[80.563,21.2],[80.42,21.717],[72.015,41.487],[41.716,71.787],[21.946,80.193],[21.423,80.338]],"c":true},"ix":2},"nm":"Path 3","mn":"ADBE Vector Shape - Group","hd":false},{"ind":3,"ty":"sh","ix":4,"ks":{"a":0,"k":{"i":[[-0.007,0.004],[0,0]],"o":[[0,0],[0.006,-0.003]],"v":[[142.26,-118.378],[142.24,-118.367]],"c":true},"ix":2},"nm":"Path 4","mn":"ADBE Vector Shape - Group","hd":false},{"ind":4,"ty":"sh","ix":5,"ks":{"a":0,"k":{"i":[[0,0],[-0.007,-0.004]],"o":[[0.007,0.004],[0,0]],"v":[[-142.23,-118.359],[-142.211,-118.348]],"c":true},"ix":2},"nm":"Path 5","mn":"ADBE Vector Shape - Group","hd":false},{"ind":5,"ty":"sh","ix":6,"ks":{"a":0,"k":{"i":[[0,0],[0,0]],"o":[[0,0],[0,0]],"v":[[173.794,64.156],[173.804,64.156]],"c":true},"ix":2},"nm":"Path 6","mn":"ADBE Vector Shape - Group","hd":false},{"ind":6,"ty":"sh","ix":7,"ks":{"a":0,"k":{"i":[[0.007,0.003],[0,0]],"o":[[0,0],[-0.006,-0.003]],"v":[[142.209,117.89],[142.228,117.901]],"c":true},"ix":2},"nm":"Path 7","mn":"ADBE Vector Shape - Group","hd":false},{"ind":7,"ty":"sh","ix":8,"ks":{"a":0,"k":{"i":[[0,0],[0.006,-0.003]],"o":[[-0.007,0.003],[0,0]],"v":[[-142.24,117.907],[-142.259,117.918]],"c":true},"ix":2},"nm":"Path 8","mn":"ADBE Vector Shape - Group","hd":false},{"ind":8,"ty":"sh","ix":9,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[-6.556,2.028],[-14.196,13.044],[-5.925,-3.438],[0,0],[0,0],[0,0],[-1.534,6.696],[0,9.907],[1.949,8.508],[-5.948,3.436],[0,0],[0,0],[0,0],[5.044,4.635],[17.51,5.416],[0,6.862],[0,0],[0,0],[0,0],[6.556,-2.027],[14.196,-13.046],[5.926,3.438],[0,0],[0,0],[0,0],[1.535,-6.697],[0,-9.912],[-1.949,-8.505],[5.949,-3.437],[0,0],[0,0],[0,0],[-5.046,-4.636],[-17.514,-5.417],[0,-6.862]],"o":[[0,0],[0,0],[0,-6.862],[17.513,-5.417],[5.045,-4.635],[0,0],[0,0],[0,0],[-5.948,-3.437],[1.949,-8.51],[0,-9.908],[-1.534,-6.696],[0,0],[0,0],[0,0],[-5.927,3.438],[-14.198,-13.046],[-6.556,-2.027],[0,0],[0,0],[0,0],[0,6.862],[-17.511,5.416],[-5.046,4.636],[0,0],[0,0],[0,0],[5.949,3.437],[-1.948,8.503],[0,9.911],[1.534,6.697],[0,0],[0,0],[0,0],[5.927,-3.439],[14.194,13.044],[6.556,2.028],[0,0]],"v":[[-31.226,176.828],[31.224,176.828],[31.224,143.104],[42.249,128.152],[90.035,100.33],[108.479,98.318],[137.809,115.337],[168.973,61.378],[139.879,44.572],[132.452,27.526],[135.39,-0.229],[132.452,-27.984],[139.879,-45.03],[168.973,-61.837],[137.809,-115.795],[108.479,-98.776],[90.035,-100.788],[42.25,-128.611],[31.224,-143.562],[31.224,-177.286],[-31.226,-177.286],[-31.226,-143.562],[-42.252,-128.611],[-90.036,-100.788],[-108.48,-98.776],[-137.812,-115.795],[-168.976,-61.836],[-139.881,-45.031],[-132.455,-27.982],[-135.392,-0.229],[-132.454,27.525],[-139.881,44.572],[-168.976,61.378],[-137.812,115.337],[-108.48,98.318],[-90.036,100.33],[-42.251,128.152],[-31.226,143.104]],"c":true},"ix":2},"nm":"Path 9","mn":"ADBE Vector Shape - Group","hd":false},{"ind":9,"ty":"sh","ix":10,"ks":{"a":0,"k":{"i":[[14.373,0],[0,0],[0,14.373],[0,0],[12.287,9.814],[0,0],[7.26,12.444],[0,0],[0.067,0.125],[-12.372,6.865],[0,0],[0,8.014],[-1.062,7.435],[0,0],[-6.843,12.634],[-0.072,0.124],[0,0],[-6.784,1.764],[-6.019,-3.511],[0,0],[-14.219,5.629],[0,0],[-14.373,0],[0,0],[0,-14.373],[0,0],[-12.288,-9.814],[0,0],[-7.261,-12.448],[0,0],[-0.068,-0.125],[12.369,-6.866],[0,0],[0,-8.012],[1.062,-7.437],[0,0],[6.844,-12.634],[0.071,-0.124],[0,0],[12.468,7.269],[0,0],[14.221,-5.63],[0,0]],"o":[[0,0],[-14.373,0],[0,0],[-14.221,-5.63],[0,0],[-12.438,7.253],[0,0],[-0.071,-0.124],[-6.844,-12.634],[0,0],[-1.062,-7.436],[0,-8.014],[0,0],[-12.371,-6.865],[0.068,-0.125],[0,0],[3.559,-6.101],[6.745,-1.756],[0,0],[12.287,-9.814],[0,0],[0,-14.373],[0,0],[14.373,0],[0,0],[14.218,5.629],[0,0],[12.436,-7.256],[0,0],[0.071,0.124],[6.842,12.633],[0,0],[1.062,7.437],[0,8.011],[0,0],[12.372,6.865],[-0.067,0.125],[0,0],[-7.293,12.502],[0,0],[-12.288,9.814],[0,0],[0,14.373]],"v":[[36.457,208.128],[-36.459,208.128],[-62.526,182.062],[-62.526,154.174],[-102.371,130.96],[-126.521,144.973],[-162.269,135.573],[-198.761,72.389],[-198.97,72.015],[-188.935,36.76],[-165.094,22.989],[-166.692,-0.229],[-165.094,-23.448],[-188.936,-37.219],[-198.971,-72.473],[-198.761,-72.848],[-162.303,-135.973],[-146.283,-148.136],[-126.489,-145.413],[-102.371,-131.418],[-62.526,-154.633],[-62.526,-182.52],[-36.459,-208.586],[36.457,-208.586],[62.524,-182.52],[62.524,-154.633],[102.369,-131.418],[126.519,-145.432],[162.266,-136.032],[198.759,-72.848],[198.969,-72.473],[188.935,-37.221],[165.092,-23.448],[166.69,-0.229],[165.092,22.989],[188.934,36.761],[198.968,72.015],[198.759,72.389],[162.3,135.514],[126.49,144.957],[102.369,130.96],[62.524,154.174],[62.524,182.062]],"c":true},"ix":2},"nm":"Path 10","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.914,0.91,0.91,1],"ix":4,"x":"var $bm_rt;\n$bm_rt = comp('system-regular-63-settings-cog').layer('control').effect('primary')('Color');"},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":".primary","mn":"ADBE Vector Graphic - Fill","hd":false,"cl":"primary"},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Group 1","np":11,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":425,"st":60,"ct":1,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"control","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[0,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ef":[{"ty":5,"nm":"primary","np":3,"mn":"ADBE Color Control","ix":1,"en":1,"ef":[{"ty":2,"nm":"Color","mn":"ADBE Color Control-0001","ix":1,"v":{"a":0,"k":[0.914,0.91,0.91],"ix":1}}]}],"ip":0,"op":271,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"hover-cog-1","refId":"comp_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[250,250,0],"ix":2,"l":2},"a":{"a":0,"k":[250,250,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":500,"h":500,"ip":0,"op":70,"st":0,"bm":0}],"markers":[{"tm":0,"cm":"default:hover-cog-1","dr":60}],"props":{}} \ No newline at end of file diff --git a/frontend/src/components/secret-syncs/DeleteSecretSyncModal.tsx b/frontend/src/components/secret-syncs/DeleteSecretSyncModal.tsx index 1daed67a3..71c20832b 100644 --- a/frontend/src/components/secret-syncs/DeleteSecretSyncModal.tsx +++ b/frontend/src/components/secret-syncs/DeleteSecretSyncModal.tsx @@ -18,7 +18,7 @@ export const DeleteSecretSyncModal = ({ isOpen, onOpenChange, secretSync, onComp if (!secretSync) return null; - const { id: syncId, name, destination } = secretSync; + const { id: syncId, name, destination, projectId } = secretSync; const handleDeleteSecretSync = async () => { const destinationName = SECRET_SYNC_MAP[destination].name; @@ -27,7 +27,8 @@ export const DeleteSecretSyncModal = ({ isOpen, onOpenChange, secretSync, onComp await deleteSync.mutateAsync({ syncId, destination, - removeSecrets + removeSecrets, + projectId }); createNotification({ diff --git a/frontend/src/components/secret-syncs/SecretSyncImportSecretsModal.tsx b/frontend/src/components/secret-syncs/SecretSyncImportSecretsModal.tsx index 8f0fdc40e..8b587c62f 100644 --- a/frontend/src/components/secret-syncs/SecretSyncImportSecretsModal.tsx +++ b/frontend/src/components/secret-syncs/SecretSyncImportSecretsModal.tsx @@ -37,7 +37,7 @@ const FormSchema = z.object({ type TFormData = z.infer; const Content = ({ secretSync, onComplete }: ContentProps) => { - const { id: syncId, destination } = secretSync; + const { id: syncId, destination, projectId } = secretSync; const destinationName = SECRET_SYNC_MAP[destination].name; const { @@ -53,7 +53,8 @@ const Content = ({ secretSync, onComplete }: ContentProps) => { await triggerImportSecrets.mutateAsync({ syncId, destination, - importBehavior + importBehavior, + projectId }); createNotification({ diff --git a/frontend/src/components/secret-syncs/SecretSyncRemoveSecretsModal.tsx b/frontend/src/components/secret-syncs/SecretSyncRemoveSecretsModal.tsx index c8bdeee6d..718392b92 100644 --- a/frontend/src/components/secret-syncs/SecretSyncRemoveSecretsModal.tsx +++ b/frontend/src/components/secret-syncs/SecretSyncRemoveSecretsModal.tsx @@ -15,7 +15,7 @@ type ContentProps = { }; const Content = ({ secretSync, onComplete }: ContentProps) => { - const { id: syncId, destination } = secretSync; + const { id: syncId, destination, projectId } = secretSync; const destinationName = SECRET_SYNC_MAP[destination].name; const triggerSyncImport = useTriggerSecretSyncRemoveSecrets(); @@ -24,7 +24,8 @@ const Content = ({ secretSync, onComplete }: ContentProps) => { try { await triggerSyncImport.mutateAsync({ syncId, - destination + destination, + projectId }); createNotification({ diff --git a/frontend/src/components/secret-syncs/forms/EditSecretSyncForm.tsx b/frontend/src/components/secret-syncs/forms/EditSecretSyncForm.tsx index d9306c671..6d15e8007 100644 --- a/frontend/src/components/secret-syncs/forms/EditSecretSyncForm.tsx +++ b/frontend/src/components/secret-syncs/forms/EditSecretSyncForm.tsx @@ -41,7 +41,8 @@ export const EditSecretSyncForm = ({ secretSync, fields, onComplete }: Props) => syncId: secretSync.id, ...formData, environment: environment?.slug, - connectionId: connection.id + connectionId: connection.id, + projectId: secretSync.projectId }); createNotification({ diff --git a/frontend/src/components/secret-syncs/forms/SecretSyncConnectionField.tsx b/frontend/src/components/secret-syncs/forms/SecretSyncConnectionField.tsx index d1a10d7e8..60a81605b 100644 --- a/frontend/src/components/secret-syncs/forms/SecretSyncConnectionField.tsx +++ b/frontend/src/components/secret-syncs/forms/SecretSyncConnectionField.tsx @@ -71,12 +71,8 @@ export const SecretSyncConnectionField = ({ onChange: callback }: Props) => { {canCreateConnection ? ( <> You do not have access to any {appName} Connections. Create one from the{" "} - - Organization Settings + + App Connections {" "} page. diff --git a/frontend/src/components/v2/PageHeader/PageHeader.tsx b/frontend/src/components/v2/PageHeader/PageHeader.tsx index f07aa2f2e..337011b38 100644 --- a/frontend/src/components/v2/PageHeader/PageHeader.tsx +++ b/frontend/src/components/v2/PageHeader/PageHeader.tsx @@ -1,15 +1,17 @@ import { ReactNode } from "@tanstack/react-router"; +import { twMerge } from "tailwind-merge"; type Props = { title: ReactNode; description?: ReactNode; children?: ReactNode; + className?: string; }; -export const PageHeader = ({ title, description, children }: Props) => ( -
+export const PageHeader = ({ title, description, children, className }: Props) => ( +
-
+

{title}

{children}
diff --git a/frontend/src/hooks/api/secretSyncs/mutations.tsx b/frontend/src/hooks/api/secretSyncs/mutations.tsx index 1efab6688..bde4ce026 100644 --- a/frontend/src/hooks/api/secretSyncs/mutations.tsx +++ b/frontend/src/hooks/api/secretSyncs/mutations.tsx @@ -23,7 +23,8 @@ export const useCreateSecretSync = () => { return data.secretSync; }, - onSuccess: () => queryClient.invalidateQueries({ queryKey: secretSyncKeys.list() }) + onSuccess: (_, { projectId }) => + queryClient.invalidateQueries({ queryKey: secretSyncKeys.list(projectId) }) }); }; @@ -38,8 +39,8 @@ export const useUpdateSecretSync = () => { return data.secretSync; }, - onSuccess: (_, { syncId, destination }) => { - queryClient.invalidateQueries({ queryKey: secretSyncKeys.list() }); + onSuccess: (_, { syncId, destination, projectId }) => { + queryClient.invalidateQueries({ queryKey: secretSyncKeys.list(projectId) }); queryClient.invalidateQueries({ queryKey: secretSyncKeys.byId(destination, syncId) }); } }); @@ -55,8 +56,8 @@ export const useDeleteSecretSync = () => { return data; }, - onSuccess: (_, { syncId, destination }) => { - queryClient.invalidateQueries({ queryKey: secretSyncKeys.list() }); + onSuccess: (_, { syncId, destination, projectId }) => { + queryClient.invalidateQueries({ queryKey: secretSyncKeys.list(projectId) }); queryClient.invalidateQueries({ queryKey: secretSyncKeys.byId(destination, syncId) }); } }); @@ -72,8 +73,8 @@ export const useTriggerSecretSyncSyncSecrets = () => { return data; }, - onSuccess: (_, { syncId, destination }) => { - queryClient.invalidateQueries({ queryKey: secretSyncKeys.list() }); + onSuccess: (_, { syncId, destination, projectId }) => { + queryClient.invalidateQueries({ queryKey: secretSyncKeys.list(projectId) }); queryClient.invalidateQueries({ queryKey: secretSyncKeys.byId(destination, syncId) }); } }); @@ -93,8 +94,8 @@ export const useTriggerSecretSyncImportSecrets = () => { return data; }, - onSuccess: (_, { syncId, destination }) => { - queryClient.invalidateQueries({ queryKey: secretSyncKeys.list() }); + onSuccess: (_, { syncId, destination, projectId }) => { + queryClient.invalidateQueries({ queryKey: secretSyncKeys.list(projectId) }); queryClient.invalidateQueries({ queryKey: secretSyncKeys.byId(destination, syncId) }); } }); @@ -110,8 +111,8 @@ export const useTriggerSecretSyncRemoveSecrets = () => { return data; }, - onSuccess: (_, { syncId, destination }) => { - queryClient.invalidateQueries({ queryKey: secretSyncKeys.list() }); + onSuccess: (_, { syncId, destination, projectId }) => { + queryClient.invalidateQueries({ queryKey: secretSyncKeys.list(projectId) }); queryClient.invalidateQueries({ queryKey: secretSyncKeys.byId(destination, syncId) }); } }); diff --git a/frontend/src/hooks/api/secretSyncs/queries.tsx b/frontend/src/hooks/api/secretSyncs/queries.tsx index dbf444e20..bb0787a7b 100644 --- a/frontend/src/hooks/api/secretSyncs/queries.tsx +++ b/frontend/src/hooks/api/secretSyncs/queries.tsx @@ -12,7 +12,7 @@ import { export const secretSyncKeys = { all: ["secret-sync"] as const, options: () => [...secretSyncKeys.all, "options"] as const, - list: () => [...secretSyncKeys.all, "list"] as const, + list: (projectId: string) => [...secretSyncKeys.all, "list", projectId] as const, byId: (destination: SecretSync, syncId: string) => [...secretSyncKeys.all, destination, "by-id", syncId] as const }; @@ -46,6 +46,14 @@ export const useSecretSyncOption = (destination: SecretSync) => { return { syncOption, isPending }; }; +export const fetchSecretSyncsByProjectId = async (projectId: string) => { + const { data } = await apiRequest.get("/api/v1/secret-syncs", { + params: { projectId } + }); + + return data.secretSyncs; +}; + export const useListSecretSyncs = ( projectId: string, options?: Omit< @@ -54,14 +62,8 @@ export const useListSecretSyncs = ( > ) => { return useQuery({ - queryKey: secretSyncKeys.list(), - queryFn: async () => { - const { data } = await apiRequest.get("/api/v1/secret-syncs", { - params: { projectId } - }); - - return data.secretSyncs; - }, + queryKey: secretSyncKeys.list(projectId), + queryFn: () => fetchSecretSyncsByProjectId(projectId), ...options }); }; diff --git a/frontend/src/hooks/api/secretSyncs/types/index.ts b/frontend/src/hooks/api/secretSyncs/types/index.ts index 51f60810c..a83a3151f 100644 --- a/frontend/src/hooks/api/secretSyncs/types/index.ts +++ b/frontend/src/hooks/api/secretSyncs/types/index.ts @@ -43,26 +43,31 @@ export type TUpdateSecretSyncDTO = Partial< > & { destination: SecretSync; syncId: string; + projectId: string; }; export type TDeleteSecretSyncDTO = { destination: SecretSync; syncId: string; removeSecrets: boolean; + projectId: string; }; export type TTriggerSecretSyncSyncSecretsDTO = { destination: SecretSync; syncId: string; + projectId: string; }; export type TTriggerSecretSyncImportSecretsDTO = { destination: SecretSync; syncId: string; importBehavior: SecretSyncImportBehavior; + projectId: string; }; export type TTriggerSecretSyncRemoveSecretsDTO = { destination: SecretSync; syncId: string; + projectId: string; }; diff --git a/frontend/src/hooks/api/workspace/queries.tsx b/frontend/src/hooks/api/workspace/queries.tsx index 7ceeec450..60867fcf4 100644 --- a/frontend/src/hooks/api/workspace/queries.tsx +++ b/frontend/src/hooks/api/workspace/queries.tsx @@ -206,7 +206,7 @@ export const useGetWorkspaceAuthorizations = ( select }); -const fetchWorkspaceIntegrations = async (workspaceId: string) => { +export const fetchWorkspaceIntegrations = async (workspaceId: string) => { const { data } = await apiRequest.get<{ integrations: TIntegration[] }>( `/api/v1/workspace/${workspaceId}/integrations` ); diff --git a/frontend/src/layouts/OrganizationLayout/OrganizationLayout.tsx b/frontend/src/layouts/OrganizationLayout/OrganizationLayout.tsx index bb69e6a62..589e82895 100644 --- a/frontend/src/layouts/OrganizationLayout/OrganizationLayout.tsx +++ b/frontend/src/layouts/OrganizationLayout/OrganizationLayout.tsx @@ -94,6 +94,13 @@ export const OrganizationLayout = () => { )} + + {({ isActive }) => ( + + App Connections + + )} + {({ isActive }) => ( diff --git a/frontend/src/layouts/OrganizationLayout/components/MinimizedOrgSidebar/MinimizedOrgSidebar.tsx b/frontend/src/layouts/OrganizationLayout/components/MinimizedOrgSidebar/MinimizedOrgSidebar.tsx index 8a11b6ca0..01dcf4f0c 100644 --- a/frontend/src/layouts/OrganizationLayout/components/MinimizedOrgSidebar/MinimizedOrgSidebar.tsx +++ b/frontend/src/layouts/OrganizationLayout/components/MinimizedOrgSidebar/MinimizedOrgSidebar.tsx @@ -10,6 +10,7 @@ import { faInfo, faInfoCircle, faMoneyBill, + faPlug, faSignOut, faUser, faUsers @@ -100,6 +101,7 @@ export const MinimizedOrgSidebar = () => { const isMoreSelected = ( [ linkOptions({ to: "/organization/access-management" }).to, + linkOptions({ to: "/organization/app-connections" }).to, linkOptions({ to: "/organization/settings" }).to, linkOptions({ to: "/organization/audit-logs" }).to ] as string[] @@ -311,10 +313,10 @@ export const MinimizedOrgSidebar = () => {
- More + Org Controls
@@ -325,6 +327,11 @@ export const MinimizedOrgSidebar = () => { Access Control + + }> + App Connections + + {(window.location.origin.includes("https://app.infisical.com") || window.location.origin.includes("https://eu.infisical.com") || window.location.origin.includes("https://gamma.infisical.com")) && ( diff --git a/frontend/src/pages/organization/AppConnections/AppConnectionsPage/AppConnectionsPage.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/AppConnectionsPage.tsx new file mode 100644 index 000000000..ff3f31c9e --- /dev/null +++ b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/AppConnectionsPage.tsx @@ -0,0 +1,90 @@ +import { Helmet } from "react-helmet"; +import { faArrowUpRightFromSquare, faBookOpen, faPlus } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; + +import { OrgPermissionCan } from "@app/components/permissions"; +import { Button, PageHeader } from "@app/components/v2"; +import { + OrgPermissionAppConnectionActions, + OrgPermissionSubjects +} from "@app/context/OrgPermissionContext/types"; +import { withPermission } from "@app/hoc"; +import { usePopUp } from "@app/hooks"; +import { + AddAppConnectionModal, + AppConnectionsTable +} from "@app/pages/organization/AppConnections/AppConnectionsPage/components"; + +export const AppConnectionsPage = withPermission( + () => { + const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp(["addConnection"] as const); + + return ( +
+ + Infisical | App Connections + + + +
+
+ + App Connections + +
+ + Docs + +
+
+ + {(isAllowed) => ( + + )} + +
+ } + description="Create and configure connections with third-party apps for re-use across Infisical projects" + /> +
+ + handlePopUpToggle("addConnection", isOpen)} + /> +
+
+
+
+ ); + }, + { + action: OrgPermissionAppConnectionActions.Read, + subject: OrgPermissionSubjects.AppConnections + } +); diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AddAppConnectionModal.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AddAppConnectionModal.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AddAppConnectionModal.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AddAppConnectionModal.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/AppConnectionForm.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/AppConnectionForm.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/AppConnectionForm.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/AppConnectionForm.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/AwsConnectionForm.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/AwsConnectionForm.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/AwsConnectionForm.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/AwsConnectionForm.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/AzureAppConfigurationConnectionForm.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/AzureAppConfigurationConnectionForm.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/AzureAppConfigurationConnectionForm.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/AzureAppConfigurationConnectionForm.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/AzureKeyVaultConnectionForm.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/AzureKeyVaultConnectionForm.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/AzureKeyVaultConnectionForm.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/AzureKeyVaultConnectionForm.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/GcpConnectionForm.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/GcpConnectionForm.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/GcpConnectionForm.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/GcpConnectionForm.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/GenericAppConnectionFields.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/GenericAppConnectionFields.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/GenericAppConnectionFields.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/GenericAppConnectionFields.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/GitHubConnectionForm.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/GitHubConnectionForm.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/GitHubConnectionForm.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/GitHubConnectionForm.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/index.ts b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/index.ts similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionForm/index.ts rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionForm/index.ts diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionHeader.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionHeader.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionHeader.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionHeader.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionList.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionList.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionList.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionList.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionRow.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionRow.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionRow.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionRow.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionsTable.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionsTable.tsx similarity index 99% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionsTable.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionsTable.tsx index db5e218ec..ee71669ba 100644 --- a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/AppConnectionsTable.tsx +++ b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/AppConnectionsTable.tsx @@ -159,7 +159,7 @@ export const AppConnectionsTable = () => { value={search} onChange={(e) => setSearch(e.target.value)} leftIcon={} - placeholder="Search integrations..." + placeholder="Search connections..." className="flex-1" /> diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/DeleteAppConnectionModal.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/DeleteAppConnectionModal.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/DeleteAppConnectionModal.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/DeleteAppConnectionModal.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/EditAppConnectionCredentialsModal.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/EditAppConnectionCredentialsModal.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/EditAppConnectionCredentialsModal.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/EditAppConnectionCredentialsModal.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/EditAppConnectionDetailsModal.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/EditAppConnectionDetailsModal.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/EditAppConnectionDetailsModal.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/EditAppConnectionDetailsModal.tsx diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/index.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/index.tsx similarity index 100% rename from frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/components/index.tsx rename to frontend/src/pages/organization/AppConnections/AppConnectionsPage/components/index.tsx diff --git a/frontend/src/pages/organization/AppConnections/AppConnectionsPage/route.tsx b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/route.tsx new file mode 100644 index 000000000..3b4205656 --- /dev/null +++ b/frontend/src/pages/organization/AppConnections/AppConnectionsPage/route.tsx @@ -0,0 +1,23 @@ +import { faHome } from "@fortawesome/free-solid-svg-icons"; +import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import { createFileRoute, linkOptions } from "@tanstack/react-router"; + +import { AppConnectionsPage } from "./AppConnectionsPage"; + +export const Route = createFileRoute( + "/_authenticate/_inject-org-details/_org-layout/organization/app-connections/" +)({ + component: AppConnectionsPage, + context: () => ({ + breadcrumbs: [ + { + label: "Home", + icon: () => , + link: linkOptions({ to: "/organization/secret-manager/overview" }) + }, + { + label: "App Connections" + } + ] + }) +}); diff --git a/frontend/src/pages/organization/AppConnections/OauthCallbackPage/OauthCallbackPage.tsx b/frontend/src/pages/organization/AppConnections/OauthCallbackPage/OauthCallbackPage.tsx index e327a78c7..8832d611e 100644 --- a/frontend/src/pages/organization/AppConnections/OauthCallbackPage/OauthCallbackPage.tsx +++ b/frontend/src/pages/organization/AppConnections/OauthCallbackPage/OauthCallbackPage.tsx @@ -135,7 +135,7 @@ export const OAuthCallbackPage = () => { type: "error" }); navigate({ - to: returnUrl ?? "/organization/settings?selectedTab=app-connections" + to: returnUrl ?? "/organization/app-connections" }); } @@ -183,7 +183,7 @@ export const OAuthCallbackPage = () => { type: "error" }); navigate({ - to: returnUrl ?? "/organization/settings?selectedTab=app-connections" + to: returnUrl ?? "/organization/app-connections" }); } @@ -249,7 +249,7 @@ export const OAuthCallbackPage = () => { type: "error" }); navigate({ - to: returnUrl ?? "/organization/settings?selectedTab=app-connections" + to: returnUrl ?? "/organization/app-connections" }); } @@ -295,7 +295,7 @@ export const OAuthCallbackPage = () => { } await navigate({ - to: data?.returnUrl ?? "/organization/settings?selectedTab=app-connections" + to: data?.returnUrl ?? "/organization/app-connections" }); })(); }, [isReady]); diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/AppConnectionsTab.tsx b/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/AppConnectionsTab.tsx deleted file mode 100644 index 393bb4381..000000000 --- a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/AppConnectionsTab.tsx +++ /dev/null @@ -1,77 +0,0 @@ -import { faArrowUpRightFromSquare, faBookOpen, faPlus } from "@fortawesome/free-solid-svg-icons"; -import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; - -import { OrgPermissionCan } from "@app/components/permissions"; -import { Button } from "@app/components/v2"; -import { OrgPermissionSubjects } from "@app/context"; -import { OrgPermissionAppConnectionActions } from "@app/context/OrgPermissionContext/types"; -import { withPermission } from "@app/hoc"; -import { usePopUp } from "@app/hooks"; - -import { AddAppConnectionModal, AppConnectionsTable } from "./components"; - -export const AppConnectionsTab = withPermission( - () => { - const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp(["addConnection"] as const); - - return ( -
-
-
-
-
-

App Connections

- -
- - Docs - -
-
-
-

- Create and configure connections with third-party apps for re-use across Infisical - projects -

-
- - {(isAllowed) => ( - - )} - -
- - handlePopUpToggle("addConnection", isOpen)} - /> -
-
- ); - }, - { - action: OrgPermissionAppConnectionActions.Read, - subject: OrgPermissionSubjects.AppConnections - } -); diff --git a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/index.tsx b/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/index.tsx deleted file mode 100644 index 79649edaf..000000000 --- a/frontend/src/pages/organization/SettingsPage/components/AppConnectionsTab/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { AppConnectionsTab } from "./AppConnectionsTab"; diff --git a/frontend/src/pages/organization/SettingsPage/components/OrgTabGroup/OrgTabGroup.tsx b/frontend/src/pages/organization/SettingsPage/components/OrgTabGroup/OrgTabGroup.tsx index 080139540..bfc2ee745 100644 --- a/frontend/src/pages/organization/SettingsPage/components/OrgTabGroup/OrgTabGroup.tsx +++ b/frontend/src/pages/organization/SettingsPage/components/OrgTabGroup/OrgTabGroup.tsx @@ -4,7 +4,6 @@ import { useSearch } from "@tanstack/react-router"; import { Tab, TabList, TabPanel, Tabs } from "@app/components/v2"; import { ROUTE_PATHS } from "@app/const/routes"; -import { AppConnectionsTab } from "../AppConnectionsTab"; import { AuditLogStreamsTab } from "../AuditLogStreamTab"; import { ImportTab } from "../ImportTab"; import { OrgAuthTab } from "../OrgAuthTab"; @@ -26,7 +25,6 @@ export const OrgTabGroup = () => { key: "workflow-integrations", component: OrgWorkflowIntegrationTab }, - { name: "App Connections", key: "app-connections", component: AppConnectionsTab }, { name: "Audit Log Streams", key: "tag-audit-log-streams", component: AuditLogStreamsTab }, { name: "Import", key: "tab-import", component: ImportTab }, { name: "Project Templates", key: "project-templates", component: ProjectTemplatesTab } diff --git a/frontend/src/pages/project/AccessControlPage/components/MembersTab/components/AddMemberModal.tsx b/frontend/src/pages/project/AccessControlPage/components/MembersTab/components/AddMemberModal.tsx index 492df2aaa..0bf666b4b 100644 --- a/frontend/src/pages/project/AccessControlPage/components/MembersTab/components/AddMemberModal.tsx +++ b/frontend/src/pages/project/AccessControlPage/components/MembersTab/components/AddMemberModal.tsx @@ -1,12 +1,12 @@ import { useMemo } from "react"; -import { Controller, useForm } from "react-hook-form"; +import { Controller, useFieldArray, useForm } from "react-hook-form"; import { useTranslation } from "react-i18next"; import { zodResolver } from "@hookform/resolvers/zod"; -import { Link } from "@tanstack/react-router"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; import { Button, FilterableSelect, FormControl, Modal, ModalContent } from "@app/components/v2"; +import { CreatableSelect } from "@app/components/v2/CreatableSelect"; import { useOrganization, useWorkspace } from "@app/context"; import { useAddUsersToOrg, @@ -19,7 +19,15 @@ import { ProjectVersion } from "@app/hooks/api/workspace/types"; import { UsePopUpState } from "@app/hooks/usePopUp"; const addMemberFormSchema = z.object({ - orgMemberships: z.array(z.object({ label: z.string().trim(), value: z.string().trim() })).min(1), + orgMemberships: z + .array( + z.object({ + label: z.string().trim(), + value: z.string().trim(), + isNewInvitee: z.boolean().optional() + }) + ) + .min(1), projectRoleSlugs: z.array(z.object({ slug: z.string().trim(), name: z.string().trim() })).min(1) }); @@ -60,7 +68,12 @@ export const AddMemberModal = ({ popUp, handlePopUpToggle }: Props) => { if (!currentWorkspace) return; if (!currentOrg?.id) return; - const selectedMembers = orgMemberships.map((orgMembership) => + const existingMembers = orgMemberships.filter((membership) => !membership.isNewInvitee); + const newInvitees = orgMemberships + .filter((membership) => membership.isNewInvitee) + .map((membership) => membership.value); + + const selectedMembers = existingMembers.map((orgMembership) => orgUsers?.find((orgUser) => orgUser.id === orgMembership.value) ); @@ -76,11 +89,11 @@ export const AddMemberModal = ({ popUp, handlePopUpToggle }: Props) => { const inviteeEmails = selectedMembers .map((member) => member?.user.username as string) .filter(Boolean); - if (inviteeEmails.length) { + if (inviteeEmails.length || newInvitees.length) { await addMembersToProject({ - inviteeEmails, + inviteeEmails: [...inviteeEmails, ...newInvitees], organizationId: orgId, - organizationRoleSlug: ProjectMembershipRole.Member, // ? This doesn't apply in this case, because we know the users being added are already part of the organization + organizationRoleSlug: ProjectMembershipRole.Member, // only applies to new invites projects: [ { slug: currentWorkspace.slug, @@ -125,6 +138,8 @@ export const AddMemberModal = ({ popUp, handlePopUpToggle }: Props) => { const selectedOrgMemberships = watch("orgMemberships"); const selectedRoleSlugs = watch("projectRoleSlugs"); + const { append } = useFieldArray({ control, name: "orgMemberships" }); + return ( { title={t("section.members.add-dialog.add-member-to-project") as string} subTitle={t("section.members.add-dialog.user-will-email")} > - {filteredOrgUsers.length ? ( -
-
- ( - - - - )} - /> + +
+ ( + + ( + <> +

+ {!filteredOrgUsers.length && ( +

All organization members are already assigned to this project.

+ )} +

+

Add new users to your organization by typing out their email address.

+ + )} + onCreateOption={(inputValue) => + append({ label: inputValue, value: inputValue, isNewInvitee: true }) + } + formatCreateLabel={(inputValue) => `Invite "${inputValue}"`} + isValidNewOption={(input) => + Boolean(input) && + z.string().email().safeParse(input).success && + !orgUsers + ?.flatMap(({ user }) => { + const emails: string[] = []; - ( - - option.slug} - getOptionLabel={(option) => option.name} - /> - - )} - /> -
-
- - -
- - ) : ( -
-
All the users in your organization are already invited.
- - - + placeholder="Add one or more users..." + isMulti + name="members" + options={filteredOrgUsers} + value={field.value} + onChange={field.onChange} + /> + + )} + /> + + ( + + option.slug} + getOptionLabel={(option) => option.name} + /> + + )} + />
- )} +
+ + +
+ ); diff --git a/frontend/src/pages/secret-manager/IntegrationsDetailsByIDPage/route.tsx b/frontend/src/pages/secret-manager/IntegrationsDetailsByIDPage/route.tsx index 94290372e..916812e66 100644 --- a/frontend/src/pages/secret-manager/IntegrationsDetailsByIDPage/route.tsx +++ b/frontend/src/pages/secret-manager/IntegrationsDetailsByIDPage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { IntegrationDetailsByIDPage } from "./IntegrationsDetailsByIDPage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/IntegrationsListPage/IntegrationsListPage.tsx b/frontend/src/pages/secret-manager/IntegrationsListPage/IntegrationsListPage.tsx index 947850e22..a96a4d595 100644 --- a/frontend/src/pages/secret-manager/IntegrationsListPage/IntegrationsListPage.tsx +++ b/frontend/src/pages/secret-manager/IntegrationsListPage/IntegrationsListPage.tsx @@ -29,7 +29,7 @@ export const IntegrationsListPage = () => { const updateSelectedTab = (tab: string) => { navigate({ to: ROUTE_PATHS.SecretManager.IntegrationsListPage.path, - search: (prev) => ({ ...prev, selectedTab: tab }), + search: (prev) => ({ ...prev, selectedTab: tab as IntegrationsListPageTabs }), params: { projectId: currentWorkspace.id } diff --git a/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/SecretSyncsTable.tsx b/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/SecretSyncsTable.tsx index fefb1ad41..802e88bc1 100644 --- a/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/SecretSyncsTable.tsx +++ b/frontend/src/pages/secret-manager/IntegrationsListPage/components/SecretSyncsTab/SecretSyncTable/SecretSyncsTable.tsx @@ -227,7 +227,8 @@ export const SecretSyncsTable = ({ secretSyncs }: Props) => { await updateSync.mutateAsync({ syncId: secretSync.id, destination: secretSync.destination, - isAutoSyncEnabled + isAutoSyncEnabled, + projectId: secretSync.projectId }); createNotification({ @@ -248,7 +249,8 @@ export const SecretSyncsTable = ({ secretSyncs }: Props) => { try { await triggerSync.mutateAsync({ syncId: secretSync.id, - destination: secretSync.destination + destination: secretSync.destination, + projectId: secretSync.projectId }); createNotification({ diff --git a/frontend/src/pages/secret-manager/IntegrationsListPage/route.tsx b/frontend/src/pages/secret-manager/IntegrationsListPage/route.tsx index 5a176b2f9..54142e2d9 100644 --- a/frontend/src/pages/secret-manager/IntegrationsListPage/route.tsx +++ b/frontend/src/pages/secret-manager/IntegrationsListPage/route.tsx @@ -1,15 +1,16 @@ -import { createFileRoute } from "@tanstack/react-router"; +import { createFileRoute, redirect } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { workspaceKeys } from "@app/hooks/api"; +import { fetchSecretSyncsByProjectId, secretSyncKeys } from "@app/hooks/api/secretSyncs"; +import { fetchWorkspaceIntegrations } from "@app/hooks/api/workspace/queries"; import { IntegrationsListPageTabs } from "@app/types/integrations"; import { IntegrationsListPage } from "./IntegrationsListPage"; const IntegrationsListPageQuerySchema = z.object({ - selectedTab: z - .nativeEnum(IntegrationsListPageTabs) - .catch(IntegrationsListPageTabs.NativeIntegrations) + selectedTab: z.nativeEnum(IntegrationsListPageTabs).optional() }); export const Route = createFileRoute( @@ -17,7 +18,47 @@ export const Route = createFileRoute( )({ component: IntegrationsListPage, validateSearch: zodValidator(IntegrationsListPageQuerySchema), - beforeLoad: ({ context }) => { + beforeLoad: async ({ context, search, params: { projectId } }) => { + if (!search.selectedTab) { + const secretSyncs = await context.queryClient.ensureQueryData({ + queryKey: secretSyncKeys.list(projectId), + queryFn: () => fetchSecretSyncsByProjectId(projectId) + }); + + if (secretSyncs.length) { + throw redirect({ + to: "/secret-manager/$projectId/integrations", + params: { + projectId + }, + search: { selectedTab: IntegrationsListPageTabs.SecretSyncs } + }); + } + + const integrations = await context.queryClient.ensureQueryData({ + queryKey: workspaceKeys.getWorkspaceIntegrations(projectId), + queryFn: () => fetchWorkspaceIntegrations(projectId) + }); + + if (integrations.length) { + throw redirect({ + to: "/secret-manager/$projectId/integrations", + params: { + projectId + }, + search: { selectedTab: IntegrationsListPageTabs.NativeIntegrations } + }); + } + + throw redirect({ + to: "/secret-manager/$projectId/integrations", + params: { + projectId + }, + search: { selectedTab: IntegrationsListPageTabs.SecretSyncs } + }); + } + return { breadcrumbs: [ ...context.breadcrumbs, diff --git a/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncActionTriggers.tsx b/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncActionTriggers.tsx index bc4f6d2b8..bda6e55e3 100644 --- a/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncActionTriggers.tsx +++ b/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/components/SecretSyncActionTriggers.tsx @@ -92,7 +92,8 @@ export const SecretSyncActionTriggers = ({ secretSync }: Props) => { await updateSync.mutateAsync({ syncId: secretSync.id, destination: secretSync.destination, - isAutoSyncEnabled + isAutoSyncEnabled, + projectId: secretSync.projectId }); createNotification({ @@ -111,7 +112,8 @@ export const SecretSyncActionTriggers = ({ secretSync }: Props) => { try { await triggerSyncSecrets.mutateAsync({ syncId: secretSync.id, - destination: secretSync.destination + destination: secretSync.destination, + projectId: secretSync.projectId }); createNotification({ diff --git a/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/route.tsx b/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/route.tsx index 7fcade485..8e76138ea 100644 --- a/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/route.tsx +++ b/frontend/src/pages/secret-manager/SecretSyncDetailsByIDPage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { SecretSyncDetailsByIDPage } from "./SecretSyncDetailsByIDPage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.SecretSyncs + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/AwsParameterStoreAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/AwsParameterStoreAuthorizePage/route.tsx index c885d2e10..f066497ff 100644 --- a/frontend/src/pages/secret-manager/integrations/AwsParameterStoreAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AwsParameterStoreAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { AWSParameterStoreAuthorizeIntegrationPage } from "./AwsParameterStoreAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/AwsParameterStoreConfigurePage/AwsParamterStoreConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/AwsParameterStoreConfigurePage/AwsParamterStoreConfigurePage.tsx index 3bf787763..efb8573b3 100644 --- a/frontend/src/pages/secret-manager/integrations/AwsParameterStoreConfigurePage/AwsParamterStoreConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/AwsParameterStoreConfigurePage/AwsParamterStoreConfigurePage.tsx @@ -30,6 +30,7 @@ import { useWorkspace } from "@app/context"; import { useCreateIntegration } from "@app/hooks/api"; import { useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; import { useGetIntegrationAuthAwsKmsKeys } from "@app/hooks/api/integrationAuth/queries"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; enum TabSections { Connection = "connection", @@ -158,6 +159,9 @@ export const AWSParameterStoreConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/AwsParameterStoreConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/AwsParameterStoreConfigurePage/route.tsx index ce686c860..9195a08b8 100644 --- a/frontend/src/pages/secret-manager/integrations/AwsParameterStoreConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AwsParameterStoreConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { AWSParameterStoreConfigurePage } from "./AwsParamterStoreConfigurePage"; const AwsParameterStoreConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/AwsSecretManagerAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/AwsSecretManagerAuthorizePage/route.tsx index 67230282e..6f56da795 100644 --- a/frontend/src/pages/secret-manager/integrations/AwsSecretManagerAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AwsSecretManagerAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { AWSSecretManagerAuthorizePage } from "./AwsSecretManagerAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/AwsSecretManagerConfigurePage/AwsSecretManagerConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/AwsSecretManagerConfigurePage/AwsSecretManagerConfigurePage.tsx index 2a5bdbf70..2297575d7 100644 --- a/frontend/src/pages/secret-manager/integrations/AwsSecretManagerConfigurePage/AwsSecretManagerConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/AwsSecretManagerConfigurePage/AwsSecretManagerConfigurePage.tsx @@ -38,6 +38,7 @@ import { IntegrationMappingBehavior, IntegrationMetadataSyncMode } from "@app/hooks/api/integrations/types"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; enum TabSections { Connection = "connection", @@ -206,6 +207,9 @@ export const AwsSecretManagerConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/AwsSecretManagerConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/AwsSecretManagerConfigurePage/route.tsx index 7275bc2aa..97df1702c 100644 --- a/frontend/src/pages/secret-manager/integrations/AwsSecretManagerConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AwsSecretManagerConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { AwsSecretManagerConfigurePage } from "./AwsSecretManagerConfigurePage"; const AwsSecretManagerConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationConfigurePage/AzureAppConfigurationConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationConfigurePage/AzureAppConfigurationConfigurePage.tsx index 792ed9010..7485068ab 100644 --- a/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationConfigurePage/AzureAppConfigurationConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationConfigurePage/AzureAppConfigurationConfigurePage.tsx @@ -26,6 +26,7 @@ import { useCreateIntegration } from "@app/hooks/api"; import { useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; import { IntegrationSyncBehavior } from "@app/hooks/api/integrations/types"; import { useGetWorkspaceById } from "@app/hooks/api/workspace"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const schema = z.object({ baseUrl: z @@ -133,6 +134,9 @@ export const AzureAppConfigurationConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationConfigurePage/route.tsx index 020941e0c..250160f4f 100644 --- a/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { AzureAppConfigurationConfigurePage } from "./AzureAppConfigurationConfigurePage"; const AzureAppConfigurationPageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationOauthCallbackPage/route.tsx index 5a94048d5..d8371fcf4 100644 --- a/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AzureAppConfigurationOauthCallbackPage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { AzureAppConfigurationOauthCallbackPage } from "./AzureAppConfigurationOauthCallbackPage"; export const AzureAppConfigurationOauthCallbackPageQueryParamsSchema = z.object({ @@ -22,7 +24,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/AzureDevopsAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/AzureDevopsAuthorizePage/route.tsx index 4dca8b8c6..c9284f800 100644 --- a/frontend/src/pages/secret-manager/integrations/AzureDevopsAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AzureDevopsAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { AzureDevopsAuthorizePage } from "./AzureDevopsAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/AzureDevopsConfigurePage/AzureDevopsConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/AzureDevopsConfigurePage/AzureDevopsConfigurePage.tsx index 7935b615b..7615909ad 100644 --- a/frontend/src/pages/secret-manager/integrations/AzureDevopsConfigurePage/AzureDevopsConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/AzureDevopsConfigurePage/AzureDevopsConfigurePage.tsx @@ -21,6 +21,7 @@ import { useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; import { useGetWorkspaceById } from "@app/hooks/api/workspace"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const AzureDevopsConfigurePage = () => { const navigate = useNavigate(); @@ -82,6 +83,9 @@ export const AzureDevopsConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/AzureDevopsConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/AzureDevopsConfigurePage/route.tsx index 620e71660..766963366 100644 --- a/frontend/src/pages/secret-manager/integrations/AzureDevopsConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AzureDevopsConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { AzureDevopsConfigurePage } from "./AzureDevopsConfigurePage"; const AzureDevopsConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/AzureKeyVaultAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/AzureKeyVaultAuthorizePage/route.tsx index 6d14a4bb7..3975e7da1 100644 --- a/frontend/src/pages/secret-manager/integrations/AzureKeyVaultAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AzureKeyVaultAuthorizePage/route.tsx @@ -1,6 +1,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import z from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { AzureKeyVaultAuthorizePage } from "./AzureKeyVaultAuthorizePage"; const PageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/AzureKeyVaultConfigurePage/AzureKeyVaultConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/AzureKeyVaultConfigurePage/AzureKeyVaultConfigurePage.tsx index aaf65289a..4dd3c4a11 100644 --- a/frontend/src/pages/secret-manager/integrations/AzureKeyVaultConfigurePage/AzureKeyVaultConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/AzureKeyVaultConfigurePage/AzureKeyVaultConfigurePage.tsx @@ -16,6 +16,7 @@ import { useCreateIntegration } from "@app/hooks/api"; import { useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; import { IntegrationSyncBehavior } from "@app/hooks/api/integrations/types"; import { useGetWorkspaceById } from "@app/hooks/api/workspace"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const initialSyncBehaviors = [ { @@ -90,6 +91,9 @@ export const AzureKeyVaultConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/AzureKeyVaultConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/AzureKeyVaultConfigurePage/route.tsx index 773fa5468..76a945ee3 100644 --- a/frontend/src/pages/secret-manager/integrations/AzureKeyVaultConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AzureKeyVaultConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { AzureKeyVaultConfigurePage } from "./AzureKeyVaultConfigurePage"; const AzureKeyVaultConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/AzureKeyVaultOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/AzureKeyVaultOauthCallbackPage/route.tsx index 2e3e03455..c2239f48e 100644 --- a/frontend/src/pages/secret-manager/integrations/AzureKeyVaultOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/AzureKeyVaultOauthCallbackPage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { AzureKeyVaultOauthCallbackPage } from "./AzureKeyVaultOauthCallback"; export const AzureKeyVaultOauthCallbackQueryParamsSchema = z.object({ @@ -22,7 +24,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/BitbucketConfigurePage/BitbucketConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/BitbucketConfigurePage/BitbucketConfigurePage.tsx index 5d4d9710b..abf8d9f02 100644 --- a/frontend/src/pages/secret-manager/integrations/BitbucketConfigurePage/BitbucketConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/BitbucketConfigurePage/BitbucketConfigurePage.tsx @@ -23,6 +23,7 @@ import { useGetIntegrationAuthBitBucketWorkspaces } from "@app/hooks/api"; import { useGetIntegrationAuthBitBucketEnvironments } from "@app/hooks/api/integrationAuth/queries"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; enum BitbucketScope { Repo = "repo", @@ -131,6 +132,9 @@ export const BitbucketConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/BitbucketConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/BitbucketConfigurePage/route.tsx index d10fbbc80..68b1acd63 100644 --- a/frontend/src/pages/secret-manager/integrations/BitbucketConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/BitbucketConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { BitbucketConfigurePage } from "./BitbucketConfigurePage"; const BitbucketConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/BitbucketOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/BitbucketOauthCallbackPage/route.tsx index be898d684..d02697846 100644 --- a/frontend/src/pages/secret-manager/integrations/BitbucketOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/BitbucketOauthCallbackPage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { BitbucketOauthCallbackPage } from "./BitbucketOauthCallbackPage"; export const BitbucketOauthCallbackQueryParamsSchema = z.object({ @@ -22,7 +24,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/ChecklyAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/ChecklyAuthorizePage/route.tsx index cd38ff7ec..7b54ba00e 100644 --- a/frontend/src/pages/secret-manager/integrations/ChecklyAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/ChecklyAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { ChecklyAuthorizePage } from "./ChecklyAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/ChecklyConfigurePage/ChecklyConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/ChecklyConfigurePage/ChecklyConfigurePage.tsx index 99b182bfe..63169a3d1 100644 --- a/frontend/src/pages/secret-manager/integrations/ChecklyConfigurePage/ChecklyConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/ChecklyConfigurePage/ChecklyConfigurePage.tsx @@ -27,6 +27,7 @@ import { useGetIntegrationAuthChecklyGroups } from "@app/hooks/api/integrationAuth"; import { useGetWorkspaceById } from "@app/hooks/api/workspace"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; enum TabSections { Connection = "connection", @@ -115,6 +116,9 @@ export const ChecklyConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/ChecklyConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/ChecklyConfigurePage/route.tsx index 832ecc202..652aae23a 100644 --- a/frontend/src/pages/secret-manager/integrations/ChecklyConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/ChecklyConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { ChecklyConfigurePage } from "./ChecklyConfigurePage"; const ChecklyConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/CircleCIAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/CircleCIAuthorizePage/route.tsx index 0fb0e577b..b625dcce4 100644 --- a/frontend/src/pages/secret-manager/integrations/CircleCIAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/CircleCIAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { CircleCIAuthorizePage } from "./CircleCIAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/CircleCIConfigurePage/CircleCIConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/CircleCIConfigurePage/CircleCIConfigurePage.tsx index e91a3ca89..9ba050808 100644 --- a/frontend/src/pages/secret-manager/integrations/CircleCIConfigurePage/CircleCIConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/CircleCIConfigurePage/CircleCIConfigurePage.tsx @@ -21,6 +21,7 @@ import { ROUTE_PATHS } from "@app/const/routes"; import { useWorkspace } from "@app/context"; import { useCreateIntegration, useGetIntegrationAuthCircleCIOrganizations } from "@app/hooks/api"; import { CircleCiScope } from "@app/hooks/api/integrationAuth/types"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const formSchema = z.discriminatedUnion("scope", [ z.object({ @@ -105,6 +106,9 @@ export const CircleCIConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/CircleCIConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/CircleCIConfigurePage/route.tsx index 7f3ed1d37..0c6bb61f0 100644 --- a/frontend/src/pages/secret-manager/integrations/CircleCIConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/CircleCIConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { CircleCIConfigurePage } from "./CircleCIConfigurePage"; const CircleCIConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/Cloud66AuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/Cloud66AuthorizePage/route.tsx index b0dd2c467..5b6e06c55 100644 --- a/frontend/src/pages/secret-manager/integrations/Cloud66AuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/Cloud66AuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { Cloud66AuthorizePage } from "./Cloud66AuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/Cloud66ConfigurePage/Cloud66ConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/Cloud66ConfigurePage/Cloud66ConfigurePage.tsx index 73c410ce2..ace6e4f6c 100644 --- a/frontend/src/pages/secret-manager/integrations/Cloud66ConfigurePage/Cloud66ConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/Cloud66ConfigurePage/Cloud66ConfigurePage.tsx @@ -17,6 +17,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const Cloud66ConfigurePage = () => { const navigate = useNavigate(); @@ -77,6 +78,9 @@ export const Cloud66ConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/Cloud66ConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/Cloud66ConfigurePage/route.tsx index 422d0ce5f..1c7fe58d2 100644 --- a/frontend/src/pages/secret-manager/integrations/Cloud66ConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/Cloud66ConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { Cloud66ConfigurePage } from "./Cloud66ConfigurePage"; const Cloud66ConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/CloudflarePagesAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/CloudflarePagesAuthorizePage/route.tsx index 4f216cccb..10a49dbf8 100644 --- a/frontend/src/pages/secret-manager/integrations/CloudflarePagesAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/CloudflarePagesAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { CloudflarePagesAuthorizePage } from "./CloudflarePagesAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/CloudflarePagesConfigurePage/CloudflarePagesConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/CloudflarePagesConfigurePage/CloudflarePagesConfigurePage.tsx index 03be1dab6..1d9c188e6 100644 --- a/frontend/src/pages/secret-manager/integrations/CloudflarePagesConfigurePage/CloudflarePagesConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/CloudflarePagesConfigurePage/CloudflarePagesConfigurePage.tsx @@ -20,6 +20,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const cloudflareEnvironments = [ { name: "Production", slug: "production" }, @@ -96,6 +97,9 @@ export const CloudflarePagesConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/CloudflarePagesConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/CloudflarePagesConfigurePage/route.tsx index 29310625e..30be97266 100644 --- a/frontend/src/pages/secret-manager/integrations/CloudflarePagesConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/CloudflarePagesConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { CloudflarePagesConfigurePage } from "./CloudflarePagesConfigurePage"; const CloudflarePagesConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/CloudflareWorkersAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/CloudflareWorkersAuthorizePage/route.tsx index 0558baed2..731053ce0 100644 --- a/frontend/src/pages/secret-manager/integrations/CloudflareWorkersAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/CloudflareWorkersAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { CloudflareWorkersAuthorizePage } from "./CloudflareWorkersAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/CloudflareWorkersConfigurePage/CloudflareWorkersConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/CloudflareWorkersConfigurePage/CloudflareWorkersConfigurePage.tsx index 0f2149633..c650c47af 100644 --- a/frontend/src/pages/secret-manager/integrations/CloudflareWorkersConfigurePage/CloudflareWorkersConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/CloudflareWorkersConfigurePage/CloudflareWorkersConfigurePage.tsx @@ -12,6 +12,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const CloudflareWorkersConfigurePage = () => { const navigate = useNavigate(); @@ -69,6 +70,9 @@ export const CloudflareWorkersConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/CloudflareWorkersConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/CloudflareWorkersConfigurePage/route.tsx index 1687628e3..ffbb56a83 100644 --- a/frontend/src/pages/secret-manager/integrations/CloudflareWorkersConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/CloudflareWorkersConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { CloudflareWorkersConfigurePage } from "./CloudflareWorkersConfigurePage"; const CloudflareWorkersConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/CodefreshAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/CodefreshAuthorizePage/route.tsx index 443fc2267..b414b9819 100644 --- a/frontend/src/pages/secret-manager/integrations/CodefreshAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/CodefreshAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { CodefreshAuthorizePage } from "./CodefreshAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/CodefreshConfigurePage/CodefreshConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/CodefreshConfigurePage/CodefreshConfigurePage.tsx index 1961236d9..23dbcabf1 100644 --- a/frontend/src/pages/secret-manager/integrations/CodefreshConfigurePage/CodefreshConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/CodefreshConfigurePage/CodefreshConfigurePage.tsx @@ -17,6 +17,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const CodefreshConfigurePage = () => { const navigate = useNavigate(); @@ -73,6 +74,9 @@ export const CodefreshConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/CodefreshConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/CodefreshConfigurePage/route.tsx index 717462908..5ddde68e6 100644 --- a/frontend/src/pages/secret-manager/integrations/CodefreshConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/CodefreshConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { CodefreshConfigurePage } from "./CodefreshConfigurePage"; const CodefreshConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/DatabricksAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/DatabricksAuthorizePage/route.tsx index a49d94583..4fdee2ba6 100644 --- a/frontend/src/pages/secret-manager/integrations/DatabricksAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/DatabricksAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { DatabricksAuthorizePage } from "./DatabricksAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/DatabricksConfigurePage/DatabricksConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/DatabricksConfigurePage/DatabricksConfigurePage.tsx index 73453c80a..69538a318 100644 --- a/frontend/src/pages/secret-manager/integrations/DatabricksConfigurePage/DatabricksConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/DatabricksConfigurePage/DatabricksConfigurePage.tsx @@ -26,6 +26,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const DatabricksConfigurePage = () => { const navigate = useNavigate(); @@ -89,6 +90,9 @@ export const DatabricksConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/DatabricksConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/DatabricksConfigurePage/route.tsx index 76bb65f1f..e7e8ae2db 100644 --- a/frontend/src/pages/secret-manager/integrations/DatabricksConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/DatabricksConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { DatabricksConfigurePage } from "./DatabricksConfigurePage"; const DatabricksConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/DigitalOceanAppPlatformAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/DigitalOceanAppPlatformAuthorizePage/route.tsx index 68277ce59..5b3a62175 100644 --- a/frontend/src/pages/secret-manager/integrations/DigitalOceanAppPlatformAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/DigitalOceanAppPlatformAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { DigitalOceanAppPlatformAuthorizePage } from "./DigitalOceanAppPlatformAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/DigitalOceanAppPlatformConfigurePage/DigitalOceanAppPlatformConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/DigitalOceanAppPlatformConfigurePage/DigitalOceanAppPlatformConfigurePage.tsx index 61c2c5789..2bc740f05 100644 --- a/frontend/src/pages/secret-manager/integrations/DigitalOceanAppPlatformConfigurePage/DigitalOceanAppPlatformConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/DigitalOceanAppPlatformConfigurePage/DigitalOceanAppPlatformConfigurePage.tsx @@ -17,6 +17,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const DigitalOceanAppPlatformConfigurePage = () => { const navigate = useNavigate(); @@ -74,6 +75,9 @@ export const DigitalOceanAppPlatformConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/DigitalOceanAppPlatformConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/DigitalOceanAppPlatformConfigurePage/route.tsx index 80eaf0bae..505206b71 100644 --- a/frontend/src/pages/secret-manager/integrations/DigitalOceanAppPlatformConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/DigitalOceanAppPlatformConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { DigitalOceanAppPlatformConfigurePage } from "./DigitalOceanAppPlatformConfigurePage"; const DigitalOceanAppPlatformConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/FlyioAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/FlyioAuthorizePage/route.tsx index 44e78a708..3393aa029 100644 --- a/frontend/src/pages/secret-manager/integrations/FlyioAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/FlyioAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { FlyioAuthorizePage } from "./FlyioAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/FlyioConfigurePage/FlyioConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/FlyioConfigurePage/FlyioConfigurePage.tsx index c0002c553..44c81d994 100644 --- a/frontend/src/pages/secret-manager/integrations/FlyioConfigurePage/FlyioConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/FlyioConfigurePage/FlyioConfigurePage.tsx @@ -27,6 +27,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const FlyioConfigurePage = () => { const navigate = useNavigate(); @@ -88,6 +89,9 @@ export const FlyioConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/FlyioConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/FlyioConfigurePage/route.tsx index 254068dbe..19b009c70 100644 --- a/frontend/src/pages/secret-manager/integrations/FlyioConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/FlyioConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { FlyioConfigurePage } from "./FlyioConfigurePage"; const FlyioConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/GcpSecretManagerAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/GcpSecretManagerAuthorizePage/route.tsx index 92df323ce..6e48d2916 100644 --- a/frontend/src/pages/secret-manager/integrations/GcpSecretManagerAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/GcpSecretManagerAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { GcpSecretManagerAuthorizePage } from "./GcpSecretManagerAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/GcpSecretManagerConfigurePage/GcpSecretManagerConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/GcpSecretManagerConfigurePage/GcpSecretManagerConfigurePage.tsx index 698ec82aa..c0cb2c171 100644 --- a/frontend/src/pages/secret-manager/integrations/GcpSecretManagerConfigurePage/GcpSecretManagerConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/GcpSecretManagerConfigurePage/GcpSecretManagerConfigurePage.tsx @@ -33,6 +33,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; enum TabSections { Connection = "connection", @@ -153,6 +154,9 @@ export const GcpSecretManagerConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/GcpSecretManagerConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/GcpSecretManagerConfigurePage/route.tsx index 644a9f858..cad85ec41 100644 --- a/frontend/src/pages/secret-manager/integrations/GcpSecretManagerConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/GcpSecretManagerConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { GcpSecretManagerConfigurePage } from "./GcpSecretManagerConfigurePage"; const GcpConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/GcpSecretManagerOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/GcpSecretManagerOauthCallbackPage/route.tsx index 3049d2bb6..239f583b2 100644 --- a/frontend/src/pages/secret-manager/integrations/GcpSecretManagerOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/GcpSecretManagerOauthCallbackPage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { GcpSecretManagerOauthCallbackPage } from "./GcpSecretManagerOauthCallbackPage"; export const GcpSecretManagerOAuthCallbackPageQueryParamsSchema = z.object({ @@ -22,7 +24,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/GithubAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/GithubAuthorizePage/route.tsx index 584592ed1..248a0e328 100644 --- a/frontend/src/pages/secret-manager/integrations/GithubAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/GithubAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { GithubAuthorizePage } from "./GithubAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/GithubConfigurePage/GithubConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/GithubConfigurePage/GithubConfigurePage.tsx index 01309b661..c51582075 100644 --- a/frontend/src/pages/secret-manager/integrations/GithubConfigurePage/GithubConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/GithubConfigurePage/GithubConfigurePage.tsx @@ -45,6 +45,7 @@ import { useGetIntegrationAuthGithubEnvs, useGetIntegrationAuthGithubOrgs } from "@app/hooks/api"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; enum TabSections { Connection = "connection", @@ -269,6 +270,9 @@ export const GithubConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/GithubConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/GithubConfigurePage/route.tsx index 6bcf6db77..9ff038882 100644 --- a/frontend/src/pages/secret-manager/integrations/GithubConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/GithubConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { GithubConfigurePage } from "./GithubConfigurePage"; const GithubConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/GithubOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/GithubOauthCallbackPage/route.tsx index 234d43a41..bf6f7a342 100644 --- a/frontend/src/pages/secret-manager/integrations/GithubOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/GithubOauthCallbackPage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { GithubOauthCallbackPage } from "./GithubOauthCallbackPage"; export const GithubOAuthCallbackPageQueryParamsSchema = z.object({ @@ -23,7 +25,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/GitlabAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/GitlabAuthorizePage/route.tsx index 9b132210e..e38ac0809 100644 --- a/frontend/src/pages/secret-manager/integrations/GitlabAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/GitlabAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { GitlabAuthorizePage } from "./GitlabAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/GitlabConfigurePage/GitlabConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/GitlabConfigurePage/GitlabConfigurePage.tsx index f09e13024..b88b10b03 100644 --- a/frontend/src/pages/secret-manager/integrations/GitlabConfigurePage/GitlabConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/GitlabConfigurePage/GitlabConfigurePage.tsx @@ -35,6 +35,7 @@ import { useGetIntegrationAuthTeams } from "@app/hooks/api/integrationAuth"; import { IntegrationSyncBehavior } from "@app/hooks/api/integrations/types"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const gitLabEntities = [ { name: "Individual", value: "individual" }, @@ -177,6 +178,9 @@ export const GitlabConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/GitlabConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/GitlabConfigurePage/route.tsx index b09ab1cf0..64d3a3a36 100644 --- a/frontend/src/pages/secret-manager/integrations/GitlabConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/GitlabConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { GitlabConfigurePage } from "./GitlabConfigurePage"; const GitlabConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/GitlabOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/GitlabOauthCallbackPage/route.tsx index 9a4644845..f775a13fb 100644 --- a/frontend/src/pages/secret-manager/integrations/GitlabOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/GitlabOauthCallbackPage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { GitLabOAuthCallbackPage } from "./GitlabOauthCallbackPage"; export const GitlabOAuthCallbackPageQueryParamsSchema = z.object({ @@ -22,7 +24,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/HashicorpVaultAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/HashicorpVaultAuthorizePage/route.tsx index 02d2600c7..d6b124572 100644 --- a/frontend/src/pages/secret-manager/integrations/HashicorpVaultAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/HashicorpVaultAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { HashicorpVaultAuthorizePage } from "./HashicorpVaultAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/HashicorpVaultConfigurePage/HashicorpVaultConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/HashicorpVaultConfigurePage/HashicorpVaultConfigurePage.tsx index c31a74371..3fbb6501f 100644 --- a/frontend/src/pages/secret-manager/integrations/HashicorpVaultConfigurePage/HashicorpVaultConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/HashicorpVaultConfigurePage/HashicorpVaultConfigurePage.tsx @@ -29,6 +29,7 @@ import { useWorkspace } from "@app/context"; import { isValidPath } from "@app/helpers/string"; import { useCreateIntegration } from "@app/hooks/api"; import { useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const generateFormSchema = (availableEnvironmentNames: string[]) => { return z.object({ @@ -103,6 +104,9 @@ export const HashicorpVaultConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/HashicorpVaultConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/HashicorpVaultConfigurePage/route.tsx index a298b9bba..1f2c31660 100644 --- a/frontend/src/pages/secret-manager/integrations/HashicorpVaultConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/HashicorpVaultConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { HashicorpVaultConfigurePage } from "./HashicorpVaultConfigurePage"; const HashicorpVaultConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/HasuraCloudAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/HasuraCloudAuthorizePage/route.tsx index 7b9de974b..572b3a005 100644 --- a/frontend/src/pages/secret-manager/integrations/HasuraCloudAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/HasuraCloudAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { HasuraCloudAuthorizePage } from "./HasuraCloudAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/HasuraCloudConfigurePage/HasuraCloudConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/HasuraCloudConfigurePage/HasuraCloudConfigurePage.tsx index 939bd8254..06dbe61f1 100644 --- a/frontend/src/pages/secret-manager/integrations/HasuraCloudConfigurePage/HasuraCloudConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/HasuraCloudConfigurePage/HasuraCloudConfigurePage.tsx @@ -15,6 +15,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const schema = z.object({ secretPath: z.string().trim(), @@ -72,6 +73,9 @@ export const HasuraCloudConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/HasuraCloudConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/HasuraCloudConfigurePage/route.tsx index d7920bb1e..c475e5bd1 100644 --- a/frontend/src/pages/secret-manager/integrations/HasuraCloudConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/HasuraCloudConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { HasuraCloudConfigurePage } from "./HasuraCloudConfigurePage"; const HasuraCloudConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/HerokuConfigurePage/HerokuConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/HerokuConfigurePage/HerokuConfigurePage.tsx index 394c37212..79763e475 100644 --- a/frontend/src/pages/secret-manager/integrations/HerokuConfigurePage/HerokuConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/HerokuConfigurePage/HerokuConfigurePage.tsx @@ -18,6 +18,7 @@ import { useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; import { IntegrationSyncBehavior } from "@app/hooks/api/integrations/types"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const initialSyncBehaviors = [ { @@ -100,6 +101,9 @@ export const HerokuConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/HerokuConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/HerokuConfigurePage/route.tsx index a33757bc1..bcfaf2f3e 100644 --- a/frontend/src/pages/secret-manager/integrations/HerokuConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/HerokuConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { HerokuConfigurePage } from "./HerokuConfigurePage"; const HerokuConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/HerokuOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/HerokuOauthCallbackPage/route.tsx index b180e9d6a..5587e930b 100644 --- a/frontend/src/pages/secret-manager/integrations/HerokuOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/HerokuOauthCallbackPage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { HerokuOAuthCallbackPage } from "./HerokuOauthCallbackPage"; export const HerokuOAuthCallbackPageQueryParamsSchema = z.object({ @@ -22,7 +24,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/LaravelForgeAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/LaravelForgeAuthorizePage/route.tsx index 0778c8f5d..dd49bb33f 100644 --- a/frontend/src/pages/secret-manager/integrations/LaravelForgeAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/LaravelForgeAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { LaravelForgeAuthorizePage } from "./LaravelForgeAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/LaravelForgeConfigurePage/LaravelForgeConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/LaravelForgeConfigurePage/LaravelForgeConfigurePage.tsx index 2d7902c01..5c6ead598 100644 --- a/frontend/src/pages/secret-manager/integrations/LaravelForgeConfigurePage/LaravelForgeConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/LaravelForgeConfigurePage/LaravelForgeConfigurePage.tsx @@ -17,6 +17,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const LaravelForgeConfigurePage = () => { const navigate = useNavigate(); @@ -74,6 +75,9 @@ export const LaravelForgeConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/LaravelForgeConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/LaravelForgeConfigurePage/route.tsx index 98d95b670..3a58ecacf 100644 --- a/frontend/src/pages/secret-manager/integrations/LaravelForgeConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/LaravelForgeConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { LaravelForgeConfigurePage } from "./LaravelForgeConfigurePage"; const LaravelForgeConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/NetlifyConfigurePage/NetlifyConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/NetlifyConfigurePage/NetlifyConfigurePage.tsx index 44a9acbd7..99cf2b434 100644 --- a/frontend/src/pages/secret-manager/integrations/NetlifyConfigurePage/NetlifyConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/NetlifyConfigurePage/NetlifyConfigurePage.tsx @@ -17,6 +17,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const netlifyEnvironments = [ { name: "Local development", slug: "dev" }, @@ -81,6 +82,9 @@ export const NetlifyConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/NetlifyConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/NetlifyConfigurePage/route.tsx index 81f3877bd..2da84a523 100644 --- a/frontend/src/pages/secret-manager/integrations/NetlifyConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/NetlifyConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { NetlifyConfigurePage } from "./NetlifyConfigurePage"; const NetlifyConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/NetlifyOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/NetlifyOauthCallbackPage/route.tsx index d88dc29b2..37b667bf9 100644 --- a/frontend/src/pages/secret-manager/integrations/NetlifyOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/NetlifyOauthCallbackPage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { NetlifyOauthCallbackPage } from "./NetlifyOauthCallbackPage"; export const NetlifyOAuthCallbackPageQueryParamsSchema = z.object({ @@ -22,7 +24,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/NorthflankAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/NorthflankAuthorizePage/route.tsx index b0e2c10f8..1ddca538f 100644 --- a/frontend/src/pages/secret-manager/integrations/NorthflankAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/NorthflankAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { NorthflankAuthorizePage } from "./NorthflankAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/NorthflankConfigurePage/NorthflankConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/NorthflankConfigurePage/NorthflankConfigurePage.tsx index 9d99cc940..2338ea3ef 100644 --- a/frontend/src/pages/secret-manager/integrations/NorthflankConfigurePage/NorthflankConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/NorthflankConfigurePage/NorthflankConfigurePage.tsx @@ -18,6 +18,7 @@ import { useGetIntegrationAuthById, useGetIntegrationAuthNorthflankSecretGroups } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const NorthflankConfigurePage = () => { const navigate = useNavigate(); @@ -95,6 +96,9 @@ export const NorthflankConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/NorthflankConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/NorthflankConfigurePage/route.tsx index fe5c2283a..1d2db4fda 100644 --- a/frontend/src/pages/secret-manager/integrations/NorthflankConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/NorthflankConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { NorthflankConfigurePage } from "./NorthflankConfigurePage"; const NorthflankConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/OctopusDeployAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/OctopusDeployAuthorizePage/route.tsx index c50832858..0064e2a57 100644 --- a/frontend/src/pages/secret-manager/integrations/OctopusDeployAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/OctopusDeployAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { OctopusDeployAuthorizePage } from "./OctopusDeployAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/OctopusDeployConfigurePage/OctopusDeployConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/OctopusDeployConfigurePage/OctopusDeployConfigurePage.tsx index 2e9d699ba..93f0e58fc 100644 --- a/frontend/src/pages/secret-manager/integrations/OctopusDeployConfigurePage/OctopusDeployConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/OctopusDeployConfigurePage/OctopusDeployConfigurePage.tsx @@ -23,6 +23,7 @@ import { useGetIntegrationAuthOctopusDeploySpaces } from "@app/hooks/api/integrationAuth/queries"; import { OctopusDeployScope } from "@app/hooks/api/integrationAuth/types"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const formSchema = z.object({ scope: z.nativeEnum(OctopusDeployScope), @@ -137,6 +138,9 @@ export const OctopusDeployConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/OctopusDeployConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/OctopusDeployConfigurePage/route.tsx index 5c897a95c..264c17dcb 100644 --- a/frontend/src/pages/secret-manager/integrations/OctopusDeployConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/OctopusDeployConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { OctopusDeployConfigurePage } from "./OctopusDeployConfigurePage"; const OctopusDeployConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/QoveryAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/QoveryAuthorizePage/route.tsx index eddbca06f..e63745397 100644 --- a/frontend/src/pages/secret-manager/integrations/QoveryAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/QoveryAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { QoveryAuthorizePage } from "./QoveryAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/QoveryConfigurePage/QoveryConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/QoveryConfigurePage/QoveryConfigurePage.tsx index 5041782aa..e2d294442 100644 --- a/frontend/src/pages/secret-manager/integrations/QoveryConfigurePage/QoveryConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/QoveryConfigurePage/QoveryConfigurePage.tsx @@ -28,6 +28,7 @@ import { useGetIntegrationAuthQoveryProjects, useGetIntegrationAuthQoveryScopes } from "@app/hooks/api/integrationAuth/queries"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const qoveryScopes = [ { label: "Application", value: "application" }, @@ -178,6 +179,9 @@ export const QoveryConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/QoveryConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/QoveryConfigurePage/route.tsx index 1f14f02ca..ae6fb36fe 100644 --- a/frontend/src/pages/secret-manager/integrations/QoveryConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/QoveryConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { QoveryConfigurePage } from "./QoveryConfigurePage"; const QoveryConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/RailwayAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/RailwayAuthorizePage/route.tsx index d351b5f8f..8d66fbfc0 100644 --- a/frontend/src/pages/secret-manager/integrations/RailwayAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/RailwayAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { RailwayAuthorizePage } from "./RailwayAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/RailwayConfigurePage/RailwayConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/RailwayConfigurePage/RailwayConfigurePage.tsx index 9b4162072..ea3894203 100644 --- a/frontend/src/pages/secret-manager/integrations/RailwayConfigurePage/RailwayConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/RailwayConfigurePage/RailwayConfigurePage.tsx @@ -19,6 +19,7 @@ import { useGetIntegrationAuthRailwayEnvironments, useGetIntegrationAuthRailwayServices } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const RailwayConfigurePage = () => { const navigate = useNavigate(); @@ -110,6 +111,9 @@ export const RailwayConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/RailwayConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/RailwayConfigurePage/route.tsx index 411c960a5..aa7c9070f 100644 --- a/frontend/src/pages/secret-manager/integrations/RailwayConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/RailwayConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { RailwayConfigurePage } from "./RailwayConfigurePage"; const RailwayConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/RenderAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/RenderAuthorizePage/route.tsx index 3657f2a07..f8f25e764 100644 --- a/frontend/src/pages/secret-manager/integrations/RenderAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/RenderAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { RenderAuthorizePage } from "./RenderAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/RenderConfigurePage/RenderConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/RenderConfigurePage/RenderConfigurePage.tsx index 40c00d209..f30ff6b14 100644 --- a/frontend/src/pages/secret-manager/integrations/RenderConfigurePage/RenderConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/RenderConfigurePage/RenderConfigurePage.tsx @@ -29,6 +29,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const schema = z.object({ selectedSourceEnvironment: z.string(), @@ -106,6 +107,9 @@ export const RenderConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/RenderConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/RenderConfigurePage/route.tsx index 8c676c800..59486fa96 100644 --- a/frontend/src/pages/secret-manager/integrations/RenderConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/RenderConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { RenderConfigurePage } from "./RenderConfigurePage"; const RenderConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/RundeckAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/RundeckAuthorizePage/route.tsx index 3ff55ddb4..a878544b8 100644 --- a/frontend/src/pages/secret-manager/integrations/RundeckAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/RundeckAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { RundeckAuthorizePage } from "./RundeckAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/RundeckConfigurePage/RundeckConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/RundeckConfigurePage/RundeckConfigurePage.tsx index 10b16c6ea..9b49bd8ec 100644 --- a/frontend/src/pages/secret-manager/integrations/RundeckConfigurePage/RundeckConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/RundeckConfigurePage/RundeckConfigurePage.tsx @@ -20,6 +20,7 @@ import { ROUTE_PATHS } from "@app/const/routes"; import { useWorkspace } from "@app/context"; import { useCreateIntegration } from "@app/hooks/api"; import { useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const schema = z.object({ keyStoragePath: z.string().trim().min(1, { message: "Rundeck Key Storage path is required" }), @@ -73,6 +74,9 @@ export const RundeckConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/RundeckConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/RundeckConfigurePage/route.tsx index 3683b0fc0..866778387 100644 --- a/frontend/src/pages/secret-manager/integrations/RundeckConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/RundeckConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { RundeckConfigurePage } from "./RundeckConfigurePage"; const RundeskConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/SelectIntegrationAuthPage/route.tsx b/frontend/src/pages/secret-manager/integrations/SelectIntegrationAuthPage/route.tsx index 26eb213aa..1e7ce337c 100644 --- a/frontend/src/pages/secret-manager/integrations/SelectIntegrationAuthPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/SelectIntegrationAuthPage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { SelectIntegrationAuthPage } from "./SelectIntegrationAuthPage"; const SelectIntegrationAuthPageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/SupabaseAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/SupabaseAuthorizePage/route.tsx index 544867b50..a3b7a826e 100644 --- a/frontend/src/pages/secret-manager/integrations/SupabaseAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/SupabaseAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { SupabaseAuthorizePage } from "./SupabaseAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/SupabaseConfigurePage/SupabaseConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/SupabaseConfigurePage/SupabaseConfigurePage.tsx index 3cb604935..8c2aa0a09 100644 --- a/frontend/src/pages/secret-manager/integrations/SupabaseConfigurePage/SupabaseConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/SupabaseConfigurePage/SupabaseConfigurePage.tsx @@ -17,6 +17,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const SupabaseConfigurePage = () => { const navigate = useNavigate(); @@ -73,6 +74,9 @@ export const SupabaseConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/SupabaseConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/SupabaseConfigurePage/route.tsx index dc2f73eee..e5d50d350 100644 --- a/frontend/src/pages/secret-manager/integrations/SupabaseConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/SupabaseConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { SupabaseConfigurePage } from "./SupabaseConfigurePage"; const SupabaseConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/TeamcityAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/TeamcityAuthorizePage/route.tsx index 9983c9b9c..e9bc5534b 100644 --- a/frontend/src/pages/secret-manager/integrations/TeamcityAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/TeamcityAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { TeamcityAuthorizePage } from "./TeamcityAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/TeamcityConfigurePage/TeamcityConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/TeamcityConfigurePage/TeamcityConfigurePage.tsx index 24fda3be4..96770c19f 100644 --- a/frontend/src/pages/secret-manager/integrations/TeamcityConfigurePage/TeamcityConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/TeamcityConfigurePage/TeamcityConfigurePage.tsx @@ -21,6 +21,7 @@ import { useGetIntegrationAuthById, useGetIntegrationAuthTeamCityBuildConfigs } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const TeamcityConfigurePage = () => { const navigate = useNavigate(); @@ -92,6 +93,9 @@ export const TeamcityConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/TeamcityConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/TeamcityConfigurePage/route.tsx index 57301a69c..73532c919 100644 --- a/frontend/src/pages/secret-manager/integrations/TeamcityConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/TeamcityConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { TeamcityConfigurePage } from "./TeamcityConfigurePage"; const TeamcityConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/TerraformCloudAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/TerraformCloudAuthorizePage/route.tsx index d15f50f2c..ad936b182 100644 --- a/frontend/src/pages/secret-manager/integrations/TerraformCloudAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/TerraformCloudAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { TerraformCloudAuthorizePage } from "./TerraformCloudAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/TerraformCloudConfigurePage/TerraformCloudConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/TerraformCloudConfigurePage/TerraformCloudConfigurePage.tsx index 97f6bd166..a247144fa 100644 --- a/frontend/src/pages/secret-manager/integrations/TerraformCloudConfigurePage/TerraformCloudConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/TerraformCloudConfigurePage/TerraformCloudConfigurePage.tsx @@ -21,6 +21,7 @@ import { useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; import { IntegrationSyncBehavior } from "@app/hooks/api/integrations/types"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const initialSyncBehaviors = [ { @@ -107,6 +108,9 @@ export const TerraformCloudConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/TerraformCloudConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/TerraformCloudConfigurePage/route.tsx index 373e10839..ad2a48182 100644 --- a/frontend/src/pages/secret-manager/integrations/TerraformCloudConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/TerraformCloudConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { TerraformCloudConfigurePage } from "./TerraformCloudConfigurePage"; const TerraformCloudConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/TravisCIAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/TravisCIAuthorizePage/route.tsx index 71e5c123b..eaa138804 100644 --- a/frontend/src/pages/secret-manager/integrations/TravisCIAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/TravisCIAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { TravisCIAuthorizePage } from "./TravisCIAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/TravisCIConfigurePage/TravisCIConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/TravisCIConfigurePage/TravisCIConfigurePage.tsx index b6fff7fef..807a6a87e 100644 --- a/frontend/src/pages/secret-manager/integrations/TravisCIConfigurePage/TravisCIConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/TravisCIConfigurePage/TravisCIConfigurePage.tsx @@ -17,6 +17,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const TravisCIConfigurePage = () => { const navigate = useNavigate(); @@ -74,6 +75,9 @@ export const TravisCIConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/TravisCIConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/TravisCIConfigurePage/route.tsx index ecc256de4..cc5600ffd 100644 --- a/frontend/src/pages/secret-manager/integrations/TravisCIConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/TravisCIConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { TravisCIConfigurePage } from "./TravisCIConfigurePage"; const TravisCIConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/VercelConfigurePage/VercelConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/VercelConfigurePage/VercelConfigurePage.tsx index fabccb6bb..4a421274c 100644 --- a/frontend/src/pages/secret-manager/integrations/VercelConfigurePage/VercelConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/VercelConfigurePage/VercelConfigurePage.tsx @@ -29,6 +29,7 @@ import { useGetIntegrationAuthVercelCustomEnvironments } from "@app/hooks/api/integrationAuth"; import { IntegrationSyncBehavior } from "@app/hooks/api/integrations/types"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; const vercelEnvironments = [ { name: "Development", slug: "development" }, @@ -134,6 +135,9 @@ export const VercelConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/VercelConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/VercelConfigurePage/route.tsx index 4b743ceb1..3f36ba5fa 100644 --- a/frontend/src/pages/secret-manager/integrations/VercelConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/VercelConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { VercelConfigurePage } from "./VercelConfigurePage"; const VercelConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/VercelOauthCallbackPage/route.tsx b/frontend/src/pages/secret-manager/integrations/VercelOauthCallbackPage/route.tsx index fcdf72976..6bfa5dac8 100644 --- a/frontend/src/pages/secret-manager/integrations/VercelOauthCallbackPage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/VercelOauthCallbackPage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { VercelOauthCallbackPage } from "./VercelOauthCallbackPage"; export const VercelOAuthCallbackPageQueryParamsSchema = z.object({ @@ -22,7 +24,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/WindmillAuthorizePage/route.tsx b/frontend/src/pages/secret-manager/integrations/WindmillAuthorizePage/route.tsx index b81b4a7fd..1985bef00 100644 --- a/frontend/src/pages/secret-manager/integrations/WindmillAuthorizePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/WindmillAuthorizePage/route.tsx @@ -1,5 +1,7 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { WindmillAuthorizePage } from "./WindmillAuthorizePage"; export const Route = createFileRoute( @@ -14,7 +16,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/pages/secret-manager/integrations/WindmillConfigurePage/WindmillConfigurePage.tsx b/frontend/src/pages/secret-manager/integrations/WindmillConfigurePage/WindmillConfigurePage.tsx index 1d8094059..ad70c75ba 100644 --- a/frontend/src/pages/secret-manager/integrations/WindmillConfigurePage/WindmillConfigurePage.tsx +++ b/frontend/src/pages/secret-manager/integrations/WindmillConfigurePage/WindmillConfigurePage.tsx @@ -17,6 +17,7 @@ import { useGetIntegrationAuthApps, useGetIntegrationAuthById } from "@app/hooks/api/integrationAuth"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; export const WindmillConfigurePage = () => { const navigate = useNavigate(); @@ -75,6 +76,9 @@ export const WindmillConfigurePage = () => { to: "/secret-manager/$projectId/integrations", params: { projectId: currentWorkspace.id + }, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations } }); } catch (err) { diff --git a/frontend/src/pages/secret-manager/integrations/WindmillConfigurePage/route.tsx b/frontend/src/pages/secret-manager/integrations/WindmillConfigurePage/route.tsx index 4ff5443b2..cc3442340 100644 --- a/frontend/src/pages/secret-manager/integrations/WindmillConfigurePage/route.tsx +++ b/frontend/src/pages/secret-manager/integrations/WindmillConfigurePage/route.tsx @@ -2,6 +2,8 @@ import { createFileRoute, linkOptions } from "@tanstack/react-router"; import { zodValidator } from "@tanstack/zod-adapter"; import { z } from "zod"; +import { IntegrationsListPageTabs } from "@app/types/integrations"; + import { WindmillConfigurePage } from "./WindmillConfigurePage"; const WindmillConfigurePageQueryParamsSchema = z.object({ @@ -21,7 +23,10 @@ export const Route = createFileRoute( label: "Integrations", link: linkOptions({ to: "/secret-manager/$projectId/integrations", - params + params, + search: { + selectedTab: IntegrationsListPageTabs.NativeIntegrations + } }) }, { diff --git a/frontend/src/routeTree.gen.ts b/frontend/src/routeTree.gen.ts index ca3a45155..968e098cf 100644 --- a/frontend/src/routeTree.gen.ts +++ b/frontend/src/routeTree.gen.ts @@ -60,6 +60,7 @@ import { Route as organizationKmsOverviewPageRouteImport } from './pages/organiz import { Route as organizationIdentityDetailsByIDPageRouteImport } from './pages/organization/IdentityDetailsByIDPage/route' import { Route as organizationGroupDetailsByIDPageRouteImport } from './pages/organization/GroupDetailsByIDPage/route' import { Route as organizationCertManagerOverviewPageRouteImport } from './pages/organization/CertManagerOverviewPage/route' +import { Route as organizationAppConnectionsAppConnectionsPageRouteImport } from './pages/organization/AppConnections/AppConnectionsPage/route' import { Route as projectAccessControlPageRouteSshImport } from './pages/project/AccessControlPage/route-ssh' import { Route as projectAccessControlPageRouteSecretManagerImport } from './pages/project/AccessControlPage/route-secret-manager' import { Route as projectAccessControlPageRouteKmsImport } from './pages/project/AccessControlPage/route-kms' @@ -207,6 +208,10 @@ const AuthenticateInjectOrgDetailsOrgLayoutSecretManagerProjectIdImport = createFileRoute( '/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId', )() +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsImport = + createFileRoute( + '/_authenticate/_inject-org-details/_org-layout/organization/app-connections', + )() const AuthenticateInjectOrgDetailsOrgLayoutKmsProjectIdImport = createFileRoute( '/_authenticate/_inject-org-details/_org-layout/kms/$projectId', )() @@ -440,6 +445,14 @@ const AuthenticateInjectOrgDetailsOrgLayoutSecretManagerProjectIdRoute = getParentRoute: () => organizationLayoutRoute, } as any) +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRoute = + AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsImport.update({ + id: '/app-connections', + path: '/app-connections', + getParentRoute: () => + AuthenticateInjectOrgDetailsOrgLayoutOrganizationRoute, + } as any) + const AuthenticateInjectOrgDetailsOrgLayoutKmsProjectIdRoute = AuthenticateInjectOrgDetailsOrgLayoutKmsProjectIdImport.update({ id: '/kms/$projectId', @@ -612,6 +625,14 @@ const organizationCertManagerOverviewPageRouteRoute = AuthenticateInjectOrgDetailsOrgLayoutOrganizationRoute, } as any) +const organizationAppConnectionsAppConnectionsPageRouteRoute = + organizationAppConnectionsAppConnectionsPageRouteImport.update({ + id: '/', + path: '/', + getParentRoute: () => + AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRoute, + } as any) + const projectAccessControlPageRouteSshRoute = projectAccessControlPageRouteSshImport.update({ id: '/access-management', @@ -918,10 +939,10 @@ const secretManagerIntegrationsDetailsByIDPageRouteRoute = const organizationAppConnectionsOauthCallbackPageRouteRoute = organizationAppConnectionsOauthCallbackPageRouteImport.update({ - id: '/app-connections/$appConnection/oauth/callback', - path: '/app-connections/$appConnection/oauth/callback', + id: '/$appConnection/oauth/callback', + path: '/$appConnection/oauth/callback', getParentRoute: () => - AuthenticateInjectOrgDetailsOrgLayoutOrganizationRoute, + AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRoute, } as any) const certManagerCertAuthDetailsByIDPageRouteRoute = @@ -1852,6 +1873,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutKmsProjectIdImport parentRoute: typeof organizationLayoutImport } + '/_authenticate/_inject-org-details/_org-layout/organization/app-connections': { + id: '/_authenticate/_inject-org-details/_org-layout/organization/app-connections' + path: '/app-connections' + fullPath: '/organization/app-connections' + preLoaderRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsImport + parentRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationImport + } '/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId': { id: '/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId' path: '/secret-manager/$projectId' @@ -1866,6 +1894,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutSshProjectIdImport parentRoute: typeof organizationLayoutImport } + '/_authenticate/_inject-org-details/_org-layout/organization/app-connections/': { + id: '/_authenticate/_inject-org-details/_org-layout/organization/app-connections/' + path: '/' + fullPath: '/organization/app-connections/' + preLoaderRoute: typeof organizationAppConnectionsAppConnectionsPageRouteImport + parentRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsImport + } '/_authenticate/_inject-org-details/_org-layout/organization/cert-manager/overview': { id: '/_authenticate/_inject-org-details/_org-layout/organization/cert-manager/overview' path: '/cert-manager/overview' @@ -2141,10 +2176,10 @@ declare module '@tanstack/react-router' { } '/_authenticate/_inject-org-details/_org-layout/organization/app-connections/$appConnection/oauth/callback': { id: '/_authenticate/_inject-org-details/_org-layout/organization/app-connections/$appConnection/oauth/callback' - path: '/app-connections/$appConnection/oauth/callback' + path: '/$appConnection/oauth/callback' fullPath: '/organization/app-connections/$appConnection/oauth/callback' preLoaderRoute: typeof organizationAppConnectionsOauthCallbackPageRouteImport - parentRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationImport + parentRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsImport } '/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/$integrationId': { id: '/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/$integrationId' @@ -2834,6 +2869,24 @@ const AuthenticateInjectOrgDetailsOrgLayoutIntegrationsRouteWithChildren = AuthenticateInjectOrgDetailsOrgLayoutIntegrationsRouteChildren, ) +interface AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRouteChildren { + organizationAppConnectionsAppConnectionsPageRouteRoute: typeof organizationAppConnectionsAppConnectionsPageRouteRoute + organizationAppConnectionsOauthCallbackPageRouteRoute: typeof organizationAppConnectionsOauthCallbackPageRouteRoute +} + +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRouteChildren: AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRouteChildren = + { + organizationAppConnectionsAppConnectionsPageRouteRoute: + organizationAppConnectionsAppConnectionsPageRouteRoute, + organizationAppConnectionsOauthCallbackPageRouteRoute: + organizationAppConnectionsOauthCallbackPageRouteRoute, + } + +const AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRouteWithChildren = + AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRoute._addFileChildren( + AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRouteChildren, + ) + interface AuthenticateInjectOrgDetailsOrgLayoutOrganizationRouteChildren { organizationAccessManagementPageRouteRoute: typeof organizationAccessManagementPageRouteRoute organizationAdminPageRouteRoute: typeof organizationAdminPageRouteRoute @@ -2843,6 +2896,7 @@ interface AuthenticateInjectOrgDetailsOrgLayoutOrganizationRouteChildren { organizationSecretScanningPageRouteRoute: typeof organizationSecretScanningPageRouteRoute organizationSecretSharingPageRouteRoute: typeof organizationSecretSharingPageRouteRoute organizationSettingsPageRouteRoute: typeof organizationSettingsPageRouteRoute + AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRoute: typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRouteWithChildren organizationCertManagerOverviewPageRouteRoute: typeof organizationCertManagerOverviewPageRouteRoute organizationGroupDetailsByIDPageRouteRoute: typeof organizationGroupDetailsByIDPageRouteRoute organizationIdentityDetailsByIDPageRouteRoute: typeof organizationIdentityDetailsByIDPageRouteRoute @@ -2851,7 +2905,6 @@ interface AuthenticateInjectOrgDetailsOrgLayoutOrganizationRouteChildren { organizationRoleByIDPageRouteRoute: typeof organizationRoleByIDPageRouteRoute organizationSecretManagerOverviewPageRouteRoute: typeof organizationSecretManagerOverviewPageRouteRoute organizationSshOverviewPageRouteRoute: typeof organizationSshOverviewPageRouteRoute - organizationAppConnectionsOauthCallbackPageRouteRoute: typeof organizationAppConnectionsOauthCallbackPageRouteRoute } const AuthenticateInjectOrgDetailsOrgLayoutOrganizationRouteChildren: AuthenticateInjectOrgDetailsOrgLayoutOrganizationRouteChildren = @@ -2867,6 +2920,8 @@ const AuthenticateInjectOrgDetailsOrgLayoutOrganizationRouteChildren: Authentica organizationSecretSharingPageRouteRoute: organizationSecretSharingPageRouteRoute, organizationSettingsPageRouteRoute: organizationSettingsPageRouteRoute, + AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRoute: + AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRouteWithChildren, organizationCertManagerOverviewPageRouteRoute: organizationCertManagerOverviewPageRouteRoute, organizationGroupDetailsByIDPageRouteRoute: @@ -2882,8 +2937,6 @@ const AuthenticateInjectOrgDetailsOrgLayoutOrganizationRouteChildren: Authentica organizationSecretManagerOverviewPageRouteRoute, organizationSshOverviewPageRouteRoute: organizationSshOverviewPageRouteRoute, - organizationAppConnectionsOauthCallbackPageRouteRoute: - organizationAppConnectionsOauthCallbackPageRouteRoute, } const AuthenticateInjectOrgDetailsOrgLayoutOrganizationRouteWithChildren = @@ -3539,8 +3592,10 @@ export interface FileRoutesByFullPath { '/organization/settings': typeof organizationSettingsPageRouteRoute '/cert-manager/$projectId': typeof certManagerLayoutRouteWithChildren '/kms/$projectId': typeof kmsLayoutRouteWithChildren + '/organization/app-connections': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRouteWithChildren '/secret-manager/$projectId': typeof secretManagerLayoutRouteWithChildren '/ssh/$projectId': typeof sshLayoutRouteWithChildren + '/organization/app-connections/': typeof organizationAppConnectionsAppConnectionsPageRouteRoute '/organization/cert-manager/overview': typeof organizationCertManagerOverviewPageRouteRoute '/organization/groups/$groupId': typeof organizationGroupDetailsByIDPageRouteRoute '/organization/identities/$identityId': typeof organizationIdentityDetailsByIDPageRouteRoute @@ -3708,6 +3763,7 @@ export interface FileRoutesByTo { '/kms/$projectId': typeof kmsLayoutRouteWithChildren '/secret-manager/$projectId': typeof secretManagerLayoutRouteWithChildren '/ssh/$projectId': typeof sshLayoutRouteWithChildren + '/organization/app-connections': typeof organizationAppConnectionsAppConnectionsPageRouteRoute '/organization/cert-manager/overview': typeof organizationCertManagerOverviewPageRouteRoute '/organization/groups/$groupId': typeof organizationGroupDetailsByIDPageRouteRoute '/organization/identities/$identityId': typeof organizationIdentityDetailsByIDPageRouteRoute @@ -3882,8 +3938,10 @@ export interface FileRoutesById { '/_authenticate/_inject-org-details/_org-layout/organization/settings': typeof organizationSettingsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId': typeof AuthenticateInjectOrgDetailsOrgLayoutCertManagerProjectIdRouteWithChildren '/_authenticate/_inject-org-details/_org-layout/kms/$projectId': typeof AuthenticateInjectOrgDetailsOrgLayoutKmsProjectIdRouteWithChildren + '/_authenticate/_inject-org-details/_org-layout/organization/app-connections': typeof AuthenticateInjectOrgDetailsOrgLayoutOrganizationAppConnectionsRouteWithChildren '/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId': typeof AuthenticateInjectOrgDetailsOrgLayoutSecretManagerProjectIdRouteWithChildren '/_authenticate/_inject-org-details/_org-layout/ssh/$projectId': typeof AuthenticateInjectOrgDetailsOrgLayoutSshProjectIdRouteWithChildren + '/_authenticate/_inject-org-details/_org-layout/organization/app-connections/': typeof organizationAppConnectionsAppConnectionsPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organization/cert-manager/overview': typeof organizationCertManagerOverviewPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organization/groups/$groupId': typeof organizationGroupDetailsByIDPageRouteRoute '/_authenticate/_inject-org-details/_org-layout/organization/identities/$identityId': typeof organizationIdentityDetailsByIDPageRouteRoute @@ -4059,8 +4117,10 @@ export interface FileRouteTypes { | '/organization/settings' | '/cert-manager/$projectId' | '/kms/$projectId' + | '/organization/app-connections' | '/secret-manager/$projectId' | '/ssh/$projectId' + | '/organization/app-connections/' | '/organization/cert-manager/overview' | '/organization/groups/$groupId' | '/organization/identities/$identityId' @@ -4227,6 +4287,7 @@ export interface FileRouteTypes { | '/kms/$projectId' | '/secret-manager/$projectId' | '/ssh/$projectId' + | '/organization/app-connections' | '/organization/cert-manager/overview' | '/organization/groups/$groupId' | '/organization/identities/$identityId' @@ -4399,8 +4460,10 @@ export interface FileRouteTypes { | '/_authenticate/_inject-org-details/_org-layout/organization/settings' | '/_authenticate/_inject-org-details/_org-layout/cert-manager/$projectId' | '/_authenticate/_inject-org-details/_org-layout/kms/$projectId' + | '/_authenticate/_inject-org-details/_org-layout/organization/app-connections' | '/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId' | '/_authenticate/_inject-org-details/_org-layout/ssh/$projectId' + | '/_authenticate/_inject-org-details/_org-layout/organization/app-connections/' | '/_authenticate/_inject-org-details/_org-layout/organization/cert-manager/overview' | '/_authenticate/_inject-org-details/_org-layout/organization/groups/$groupId' | '/_authenticate/_inject-org-details/_org-layout/organization/identities/$identityId' @@ -4759,6 +4822,7 @@ export const routeTree = rootRoute "/_authenticate/_inject-org-details/_org-layout/organization/secret-scanning", "/_authenticate/_inject-org-details/_org-layout/organization/secret-sharing", "/_authenticate/_inject-org-details/_org-layout/organization/settings", + "/_authenticate/_inject-org-details/_org-layout/organization/app-connections", "/_authenticate/_inject-org-details/_org-layout/organization/cert-manager/overview", "/_authenticate/_inject-org-details/_org-layout/organization/groups/$groupId", "/_authenticate/_inject-org-details/_org-layout/organization/identities/$identityId", @@ -4766,8 +4830,7 @@ export const routeTree = rootRoute "/_authenticate/_inject-org-details/_org-layout/organization/members/$membershipId", "/_authenticate/_inject-org-details/_org-layout/organization/roles/$roleId", "/_authenticate/_inject-org-details/_org-layout/organization/secret-manager/overview", - "/_authenticate/_inject-org-details/_org-layout/organization/ssh/overview", - "/_authenticate/_inject-org-details/_org-layout/organization/app-connections/$appConnection/oauth/callback" + "/_authenticate/_inject-org-details/_org-layout/organization/ssh/overview" ] }, "/_authenticate/_inject-org-details/admin/_admin-layout": { @@ -4827,6 +4890,14 @@ export const routeTree = rootRoute "/_authenticate/_inject-org-details/_org-layout/kms/$projectId/_kms-layout" ] }, + "/_authenticate/_inject-org-details/_org-layout/organization/app-connections": { + "filePath": "", + "parent": "/_authenticate/_inject-org-details/_org-layout/organization", + "children": [ + "/_authenticate/_inject-org-details/_org-layout/organization/app-connections/", + "/_authenticate/_inject-org-details/_org-layout/organization/app-connections/$appConnection/oauth/callback" + ] + }, "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId": { "filePath": "", "parent": "/_authenticate/_inject-org-details/_org-layout", @@ -4841,6 +4912,10 @@ export const routeTree = rootRoute "/_authenticate/_inject-org-details/_org-layout/ssh/$projectId/_ssh-layout" ] }, + "/_authenticate/_inject-org-details/_org-layout/organization/app-connections/": { + "filePath": "organization/AppConnections/AppConnectionsPage/route.tsx", + "parent": "/_authenticate/_inject-org-details/_org-layout/organization/app-connections" + }, "/_authenticate/_inject-org-details/_org-layout/organization/cert-manager/overview": { "filePath": "organization/CertManagerOverviewPage/route.tsx", "parent": "/_authenticate/_inject-org-details/_org-layout/organization" @@ -5119,7 +5194,7 @@ export const routeTree = rootRoute }, "/_authenticate/_inject-org-details/_org-layout/organization/app-connections/$appConnection/oauth/callback": { "filePath": "organization/AppConnections/OauthCallbackPage/route.tsx", - "parent": "/_authenticate/_inject-org-details/_org-layout/organization" + "parent": "/_authenticate/_inject-org-details/_org-layout/organization/app-connections" }, "/_authenticate/_inject-org-details/_org-layout/secret-manager/$projectId/_secret-manager-layout/integrations/$integrationId": { "filePath": "secret-manager/IntegrationsDetailsByIDPage/route.tsx", diff --git a/frontend/src/routes.ts b/frontend/src/routes.ts index 8cdd4087c..c284f816f 100644 --- a/frontend/src/routes.ts +++ b/frontend/src/routes.ts @@ -24,11 +24,13 @@ const organizationRoutes = route("/organization", [ route("/members/$membershipId", "organization/UserDetailsByIDPage/route.tsx"), route("/roles/$roleId", "organization/RoleByIDPage/route.tsx"), route("/identities/$identityId", "organization/IdentityDetailsByIDPage/route.tsx"), - - route( - "/app-connections/$appConnection/oauth/callback", - "organization/AppConnections/OauthCallbackPage/route.tsx" - ) + route("/app-connections", [ + index("organization/AppConnections/AppConnectionsPage/route.tsx"), + route( + "/$appConnection/oauth/callback", + "organization/AppConnections/OauthCallbackPage/route.tsx" + ) + ]) ]); const secretManagerRoutes = route("/secret-manager/$projectId", [