@@ -7,26 +7,29 @@ import {
|
||||
} from "relay-runtime";
|
||||
import { buildEndpoint } from "./utils";
|
||||
|
||||
const fetchRelay: FetchFunction = async (request, variables, _, uploadables) => {
|
||||
const fetchRelay: FetchFunction = async (
|
||||
request,
|
||||
variables,
|
||||
_,
|
||||
uploadables,
|
||||
) => {
|
||||
const requestInit: RequestInit = {
|
||||
method: 'POST',
|
||||
credentials: 'include',
|
||||
method: "POST",
|
||||
credentials: "include",
|
||||
headers: {},
|
||||
};
|
||||
|
||||
|
||||
if (uploadables) {
|
||||
const formData = new FormData();
|
||||
formData.append(
|
||||
'operations',
|
||||
"operations",
|
||||
JSON.stringify({
|
||||
operationName: request.name,
|
||||
query: request.text,
|
||||
variables: variables,
|
||||
})
|
||||
}),
|
||||
);
|
||||
|
||||
|
||||
const uploadableMap: {
|
||||
[key: string]: string[];
|
||||
} = {};
|
||||
@@ -35,19 +38,19 @@ const fetchRelay: FetchFunction = async (request, variables, _, uploadables) =>
|
||||
uploadableMap[index] = [`variables.${key}`];
|
||||
});
|
||||
|
||||
formData.append('map', JSON.stringify(uploadableMap));
|
||||
formData.append("map", JSON.stringify(uploadableMap));
|
||||
|
||||
Object.keys(uploadables).forEach((key, index) => {
|
||||
formData.append(index.toString(), uploadables[key]);
|
||||
});
|
||||
|
||||
requestInit.body = formData;
|
||||
|
||||
} else {
|
||||
requestInit.headers = {
|
||||
"Accept": "application/graphql-response+json; charset=utf-8, application/json; charset=utf-8",
|
||||
"Content-Type": "application/json"
|
||||
}
|
||||
Accept:
|
||||
"application/graphql-response+json; charset=utf-8, application/json; charset=utf-8",
|
||||
"Content-Type": "application/json",
|
||||
};
|
||||
|
||||
requestInit.body = JSON.stringify({
|
||||
operationName: request.name,
|
||||
|
||||
@@ -12,7 +12,7 @@ const Textarea = React.forwardRef<
|
||||
<textarea
|
||||
className={cn(
|
||||
"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
||||
className
|
||||
className,
|
||||
)}
|
||||
ref={ref}
|
||||
{...props}
|
||||
|
||||
@@ -58,7 +58,7 @@ function BreadcrumbHome({ children }: { children: React.ReactNode }) {
|
||||
}
|
||||
`,
|
||||
{ organizationId: organizationId! },
|
||||
{ fetchPolicy: "store-or-network" }
|
||||
{ fetchPolicy: "store-or-network" },
|
||||
);
|
||||
|
||||
return (
|
||||
@@ -118,7 +118,7 @@ function BreadcrumbFrameworkOverview() {
|
||||
}
|
||||
}
|
||||
`,
|
||||
{ frameworkId: frameworkId! }
|
||||
{ frameworkId: frameworkId! },
|
||||
);
|
||||
|
||||
return (
|
||||
@@ -152,7 +152,7 @@ function BreadcrumbUpdateFramework() {
|
||||
}
|
||||
`,
|
||||
{ frameworkId: frameworkId! },
|
||||
{ fetchPolicy: "store-or-network" }
|
||||
{ fetchPolicy: "store-or-network" },
|
||||
);
|
||||
|
||||
return (
|
||||
@@ -209,7 +209,7 @@ function BreadcrumbVendorOverview() {
|
||||
}
|
||||
`,
|
||||
{ vendorId: vendorId! },
|
||||
{ fetchPolicy: "store-or-network" }
|
||||
{ fetchPolicy: "store-or-network" },
|
||||
);
|
||||
|
||||
return (
|
||||
@@ -269,7 +269,7 @@ function BreadcrumbPeopleOverview() {
|
||||
}
|
||||
`,
|
||||
{ peopleId: peopleId! },
|
||||
{ fetchPolicy: "store-or-network" }
|
||||
{ fetchPolicy: "store-or-network" },
|
||||
);
|
||||
|
||||
return (
|
||||
@@ -302,7 +302,7 @@ function BreadcrumbControlOverview() {
|
||||
}
|
||||
}
|
||||
`,
|
||||
{ controlId: controlId! }
|
||||
{ controlId: controlId! },
|
||||
);
|
||||
|
||||
return (
|
||||
@@ -333,7 +333,7 @@ function BreadcrumbCreateControl() {
|
||||
}
|
||||
}
|
||||
`,
|
||||
{ frameworkId: frameworkId! }
|
||||
{ frameworkId: frameworkId! },
|
||||
);
|
||||
|
||||
return (
|
||||
|
||||
@@ -123,14 +123,14 @@ function ControlOverviewPageContent({
|
||||
}) {
|
||||
const data = usePreloadedQuery<ControlOverviewPageQueryType>(
|
||||
controlOverviewPageQuery,
|
||||
queryRef
|
||||
queryRef,
|
||||
);
|
||||
const { toast } = useToast();
|
||||
const { organizationId, frameworkId, controlId } = useParams();
|
||||
const navigate = useNavigate();
|
||||
const [updateTaskState] =
|
||||
useMutation<ControlOverviewPageUpdateTaskStateMutationType>(
|
||||
updateTaskStateMutation
|
||||
updateTaskStateMutation,
|
||||
);
|
||||
const [createTask] =
|
||||
useMutation<ControlOverviewPageCreateTaskMutationType>(createTaskMutation);
|
||||
@@ -138,7 +138,7 @@ function ControlOverviewPageContent({
|
||||
useMutation<ControlOverviewPageDeleteTaskMutationType>(deleteTaskMutation);
|
||||
const [uploadEvidence] =
|
||||
useMutation<ControlOverviewPageUploadEvidenceMutationType>(
|
||||
uploadEvidenceMutation
|
||||
uploadEvidenceMutation,
|
||||
);
|
||||
const control = data.control;
|
||||
const tasks = control?.tasks?.edges.map((edge) => edge?.node) ?? [];
|
||||
@@ -281,7 +281,7 @@ function ControlOverviewPageContent({
|
||||
|
||||
const handleEditControl = () => {
|
||||
navigate(
|
||||
`/organizations/${organizationId}/frameworks/${frameworkId}/controls/${controlId}/update`
|
||||
`/organizations/${organizationId}/frameworks/${frameworkId}/controls/${controlId}/update`,
|
||||
);
|
||||
};
|
||||
|
||||
@@ -629,7 +629,7 @@ function ControlOverviewPageFallback() {
|
||||
export default function ControlOverviewPage() {
|
||||
const { controlId } = useParams();
|
||||
const [queryRef, loadQuery] = useQueryLoader<ControlOverviewPageQueryType>(
|
||||
controlOverviewPageQuery
|
||||
controlOverviewPageQuery,
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
|
||||
@@ -87,7 +87,7 @@ function EditableField({
|
||||
}
|
||||
className={cn(
|
||||
"w-full resize-none",
|
||||
required && !value && "border-red-500"
|
||||
required && !value && "border-red-500",
|
||||
)}
|
||||
placeholder={`Enter ${label.toLowerCase()}`}
|
||||
rows={4}
|
||||
@@ -134,7 +134,7 @@ function UpdateFrameworkPageContent({
|
||||
|
||||
const [commit, isInFlight] =
|
||||
useMutation<UpdateFrameworkPageUpdateFrameworkMutation>(
|
||||
updateFrameworkMutation
|
||||
updateFrameworkMutation,
|
||||
);
|
||||
|
||||
const handleFieldChange = (field: keyof typeof formData, value: unknown) => {
|
||||
|
||||
Reference in New Issue
Block a user