diff --git a/src/components/Questionnaire/ManageQuestionnaireOrganizationsSheet.tsx b/src/components/Questionnaire/ManageQuestionnaireOrganizationsSheet.tsx index 9e2422ee300..d871652d195 100644 --- a/src/components/Questionnaire/ManageQuestionnaireOrganizationsSheet.tsx +++ b/src/components/Questionnaire/ManageQuestionnaireOrganizationsSheet.tsx @@ -63,11 +63,9 @@ export default function ManageQuestionnaireOrganizationsSheet({ }); const { mutate: setOrganizations, isPending: isUpdating } = useMutation({ - mutationFn: (organizations: string[]) => - mutate(questionnaireApi.setOrganizations, { - pathParams: { id: questionnaireId }, - body: { organizations: organizations }, - })({ organizations: organizations }), + mutationFn: mutate(questionnaireApi.setOrganizations, { + pathParams: { id: questionnaireId }, + }), onSuccess: () => { queryClient.invalidateQueries({ queryKey: ["questionnaire", questionnaireId, "organizations"], @@ -93,16 +91,18 @@ export default function ManageQuestionnaireOrganizationsSheet({ }; const handleSave = () => { - setOrganizations(selectedIds); + setOrganizations({ organizations: selectedIds }); }; const selectedOrganizations = organizations?.results.filter((org) => selectedIds.includes(org.id), ); - const hasChanges = - JSON.stringify(organizations?.results.map((org) => org.id).sort()) !== - JSON.stringify(selectedIds.sort()); + const hasChanges = !organizations?.results + ? false + : new Set(organizations.results.map((org) => org.id)).size !== + new Set(selectedIds).size || + !organizations.results.every((org) => selectedIds.includes(org.id)); return ( diff --git a/src/types/organization/organizationApi.ts b/src/types/organization/organizationApi.ts index 745cc7c7a6a..41a5cf5570e 100644 --- a/src/types/organization/organizationApi.ts +++ b/src/types/organization/organizationApi.ts @@ -8,39 +8,39 @@ export default { listMine: { path: "/api/v1/organization/mine/", method: HttpMethod.GET, - TRes: {} as PaginatedResponse, + TRes: Type>(), }, list: { path: "/api/v1/organization/", method: HttpMethod.GET, - TRes: {} as PaginatedResponse, + TRes: Type>(), }, get: { path: "/api/v1/organization/{id}/", method: HttpMethod.GET, - TRes: {} as Organization, + TRes: Type(), }, listUsers: { path: "/api/v1/organization/{id}/users/", method: HttpMethod.GET, - TRes: {} as PaginatedResponse, + TRes: Type>(), }, assignUser: { path: "/api/v1/organization/{id}/users/", method: HttpMethod.POST, - TRes: {} as OrganizationUserRole, - TBody: {} as { user: string; role: string }, + TRes: Type(), + TBody: Type<{ user: string; role: string }>(), }, updateUserRole: { path: "/api/v1/organization/{id}/users/{userRoleId}/", method: HttpMethod.PUT, - TRes: {} as OrganizationUserRole, - TBody: {} as { user: string; role: string }, + TRes: Type(), + TBody: Type<{ user: string; role: string }>(), }, removeUserRole: { path: "/api/v1/organization/{id}/users/{userRoleId}/", method: HttpMethod.DELETE, - TRes: {} as Record, + TRes: Type(), }, listPatients: { path: "/api/v1/patient/",