mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 17:27:16 +00:00
Refactor into component and use React Query
This commit is contained in:
@@ -4,5 +4,6 @@ export {
|
|||||||
useDeleteWsEnvironment,
|
useDeleteWsEnvironment,
|
||||||
useGetUserWorkspaces,
|
useGetUserWorkspaces,
|
||||||
useRenameWorkspace,
|
useRenameWorkspace,
|
||||||
|
useToggleAutoCapitalization,
|
||||||
useUpdateWsEnvironment
|
useUpdateWsEnvironment
|
||||||
} from './queries';
|
} from './queries';
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import {
|
|||||||
DeleteEnvironmentDTO,
|
DeleteEnvironmentDTO,
|
||||||
DeleteWorkspaceDTO,
|
DeleteWorkspaceDTO,
|
||||||
RenameWorkspaceDTO,
|
RenameWorkspaceDTO,
|
||||||
|
ToggleAutoCapitalizationDTO,
|
||||||
UpdateEnvironmentDTO,
|
UpdateEnvironmentDTO,
|
||||||
Workspace
|
Workspace
|
||||||
} from './types';
|
} from './types';
|
||||||
@@ -17,7 +18,6 @@ const workspaceKeys = {
|
|||||||
|
|
||||||
const fetchUserWorkspaces = async () => {
|
const fetchUserWorkspaces = async () => {
|
||||||
const { data } = await apiRequest.get<{ workspaces: Workspace[] }>('/api/v1/workspace');
|
const { data } = await apiRequest.get<{ workspaces: Workspace[] }>('/api/v1/workspace');
|
||||||
|
|
||||||
return data.workspaces;
|
return data.workspaces;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -37,6 +37,18 @@ export const useRenameWorkspace = () => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const useToggleAutoCapitalization = () => {
|
||||||
|
const queryClient = useQueryClient();
|
||||||
|
|
||||||
|
return useMutation<{}, {}, ToggleAutoCapitalizationDTO>({
|
||||||
|
mutationFn: ({ workspaceID, state }) =>
|
||||||
|
apiRequest.post(`/api/v2/workspace/${workspaceID}/settings`, { autoCapitalization: state }),
|
||||||
|
onSuccess: () => {
|
||||||
|
queryClient.invalidateQueries(workspaceKeys.getAllUserWorkspace);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
export const useDeleteWorkspace = () => {
|
export const useDeleteWorkspace = () => {
|
||||||
const queryClient = useQueryClient();
|
const queryClient = useQueryClient();
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ export type Workspace = {
|
|||||||
_id: string;
|
_id: string;
|
||||||
name: string;
|
name: string;
|
||||||
organization: string;
|
organization: string;
|
||||||
|
autoCapitalization: boolean;
|
||||||
environments: WorkspaceEnv[];
|
environments: WorkspaceEnv[];
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -10,6 +11,7 @@ export type WorkspaceEnv = { name: string; slug: string };
|
|||||||
|
|
||||||
// mutation dto
|
// mutation dto
|
||||||
export type RenameWorkspaceDTO = { workspaceID: string; newWorkspaceName: string };
|
export type RenameWorkspaceDTO = { workspaceID: string; newWorkspaceName: string };
|
||||||
|
export type ToggleAutoCapitalizationDTO = { workspaceID: string; state: boolean };
|
||||||
|
|
||||||
export type DeleteWorkspaceDTO = { workspaceID: string };
|
export type DeleteWorkspaceDTO = { workspaceID: string };
|
||||||
|
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
import SecurityClient from '@app/components/utilities/SecurityClient';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This route lets us change the auto capitalization settings in a project.
|
|
||||||
* @param {*} req
|
|
||||||
* @param {*} res
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
const toggleAutoCapitalization = (workspaceId: string, state: boolean) =>
|
|
||||||
SecurityClient.fetchCall(`/api/v2/workspace/${workspaceId}/settings`, {
|
|
||||||
method: 'POST',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json'
|
|
||||||
},
|
|
||||||
body: JSON.stringify({
|
|
||||||
autoCapitalization: state
|
|
||||||
})
|
|
||||||
}).then(async (res) => {
|
|
||||||
if (res && res.status === 200) {
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
console.log('Failed to toggle auto capitalization state');
|
|
||||||
return undefined;
|
|
||||||
});
|
|
||||||
|
|
||||||
export default toggleAutoCapitalization;
|
|
||||||
@@ -24,9 +24,11 @@ import {
|
|||||||
useGetUserWsKey,
|
useGetUserWsKey,
|
||||||
useGetUserWsServiceTokens,
|
useGetUserWsServiceTokens,
|
||||||
useRenameWorkspace,
|
useRenameWorkspace,
|
||||||
|
useToggleAutoCapitalization,
|
||||||
useUpdateWsEnvironment
|
useUpdateWsEnvironment
|
||||||
} from '@app/hooks/api';
|
} from '@app/hooks/api';
|
||||||
|
|
||||||
|
import { AutoCapitalizationSection } from './components/AutoCapitalizationSection/AutoCapitalizationSection';
|
||||||
import {
|
import {
|
||||||
CopyProjectIDSection,
|
CopyProjectIDSection,
|
||||||
CreateServiceToken,
|
CreateServiceToken,
|
||||||
@@ -39,6 +41,7 @@ import {
|
|||||||
export const ProjectSettingsPage = () => {
|
export const ProjectSettingsPage = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const { currentWorkspace, workspaces } = useWorkspace();
|
const { currentWorkspace, workspaces } = useWorkspace();
|
||||||
|
console.log(currentWorkspace);
|
||||||
const router = useRouter();
|
const router = useRouter();
|
||||||
const { data: serviceTokens } = useGetUserWsServiceTokens({
|
const { data: serviceTokens } = useGetUserWsServiceTokens({
|
||||||
workspaceID: currentWorkspace?._id || ''
|
workspaceID: currentWorkspace?._id || ''
|
||||||
@@ -50,6 +53,8 @@ export const ProjectSettingsPage = () => {
|
|||||||
const [isDeleting, setIsDeleting] = useToggle();
|
const [isDeleting, setIsDeleting] = useToggle();
|
||||||
|
|
||||||
const renameWorkspace = useRenameWorkspace();
|
const renameWorkspace = useRenameWorkspace();
|
||||||
|
const toggleAutoCapitalization = useToggleAutoCapitalization();
|
||||||
|
|
||||||
const deleteWorkspace = useDeleteWorkspace();
|
const deleteWorkspace = useDeleteWorkspace();
|
||||||
// env crud operation
|
// env crud operation
|
||||||
const createWsEnv = useCreateWsEnvironment();
|
const createWsEnv = useCreateWsEnvironment();
|
||||||
@@ -83,6 +88,26 @@ export const ProjectSettingsPage = () => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const onAutoCapitalizationToggle = async (state: boolean) => {
|
||||||
|
try {
|
||||||
|
await toggleAutoCapitalization.mutateAsync({
|
||||||
|
workspaceID,
|
||||||
|
state
|
||||||
|
});
|
||||||
|
const text = `Successfully ${state ? 'enabled' : 'disabled'} auto capitalization`;
|
||||||
|
createNotification({
|
||||||
|
text,
|
||||||
|
type: 'success'
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
createNotification({
|
||||||
|
text: 'Failed to update auto capitalization',
|
||||||
|
type: 'error'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const onDeleteWorkspace = async () => {
|
const onDeleteWorkspace = async () => {
|
||||||
setIsDeleting.on();
|
setIsDeleting.on();
|
||||||
try {
|
try {
|
||||||
@@ -241,6 +266,10 @@ export const ProjectSettingsPage = () => {
|
|||||||
workspaceName={currentWorkspace?.name}
|
workspaceName={currentWorkspace?.name}
|
||||||
onProjectNameChange={onRenameWorkspace}
|
onProjectNameChange={onRenameWorkspace}
|
||||||
/>
|
/>
|
||||||
|
<AutoCapitalizationSection
|
||||||
|
workspaceAutoCapitalization={currentWorkspace?.autoCapitalization}
|
||||||
|
onAutoCapitalizationChange={onAutoCapitalizationToggle}
|
||||||
|
/>
|
||||||
<CopyProjectIDSection workspaceID={currentWorkspace?._id || ''} />
|
<CopyProjectIDSection workspaceID={currentWorkspace?._id || ''} />
|
||||||
<EnvironmentSection
|
<EnvironmentSection
|
||||||
environments={currentWorkspace?.environments || []}
|
environments={currentWorkspace?.environments || []}
|
||||||
|
|||||||
+34
@@ -0,0 +1,34 @@
|
|||||||
|
import { useTranslation } from 'react-i18next';
|
||||||
|
|
||||||
|
import { Checkbox } from '@app/components/v2';
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
workspaceAutoCapitalization?: boolean;
|
||||||
|
onAutoCapitalizationChange: (state: boolean) => Promise<void>;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const AutoCapitalizationSection = ({
|
||||||
|
workspaceAutoCapitalization,
|
||||||
|
onAutoCapitalizationChange
|
||||||
|
}: Props) => {
|
||||||
|
const { t } = useTranslation();
|
||||||
|
return (
|
||||||
|
<form>
|
||||||
|
<div className="mb-2 flex w-full flex-col items-start rounded-md bg-white/5 px-6 pb-6 pt-2">
|
||||||
|
<p className="mb-4 mt-2 text-xl font-semibold">
|
||||||
|
{t('settings-project:auto-capitalization')}
|
||||||
|
</p>
|
||||||
|
<Checkbox
|
||||||
|
className="data-[state=checked]:bg-primary"
|
||||||
|
id="autoCapitalization"
|
||||||
|
isChecked={workspaceAutoCapitalization}
|
||||||
|
onCheckedChange={(state) => {
|
||||||
|
onAutoCapitalizationChange(state as boolean);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{t('settings-project:auto-capitalization-description')}
|
||||||
|
</Checkbox>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
);
|
||||||
|
};
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
export { AutoCapitalizationSection } from './AutoCapitalizationSection';
|
||||||
Reference in New Issue
Block a user