Skip to content

Commit

Permalink
refactor: change how useUpdateResource works
Browse files Browse the repository at this point in the history
  • Loading branch information
mainawycliffe authored and moshloop committed Mar 22, 2024
1 parent 93ecca4 commit 8f25ae1
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 29 deletions.
37 changes: 19 additions & 18 deletions src/api/query-hooks/mutations/useSettingsResourcesMutations.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
import { useMutation, useQueryClient } from "@tanstack/react-query";
import {
UseMutationOptions,
useMutation,
useQueryClient
} from "@tanstack/react-query";
import { useNavigate } from "react-router-dom";
import {
SchemaApi,
Expand Down Expand Up @@ -43,29 +47,26 @@ export const useSettingsDeleteResource = (
export const useSettingsUpdateResource = (
resourceInfo: Pick<SchemaResourceType, "api" | "table" | "name">,
resource?: Record<string, any>,
isModal = false
options: Omit<
UseMutationOptions<void, any, Partial<SchemaResourceI>>,
"mutationFn"
> = {}
) => {
const navigate = useNavigate();

return useMutation(
async (props: Partial<SchemaResourceI>) => {
return useMutation({
mutationFn: async (props: Partial<SchemaResourceI>) => {
await updateResource(resourceInfo, {
...resource,
...props
});
},
{
onSuccess: () => {
toastSuccess(`${resourceInfo.name} updated successfully`);
if (!isModal) {
navigate(`/settings/${resourceInfo.table}`);
}
},
onError: (ex: any) => {
toastError(ex);
}
}
);
onSuccess: () => {
toastSuccess(`${resourceInfo.name} updated successfully`);
},
onError: (ex: any) => {
toastError(ex);
},
...options
});
};

export const useSettingsCreateResource = (
Expand Down
6 changes: 5 additions & 1 deletion src/components/LogBackends/LogBackendsForm.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,11 @@ export default function LogBackendsForm({
const { mutate: updateLoggingBackend } = useSettingsUpdateResource(
logsBackendSchemaAPI,
undefined,
true
{
onSuccess: () => {
onUpdated();
}
}
);

const queryClient = useQueryClient();
Expand Down
25 changes: 16 additions & 9 deletions src/components/SchemaResourcePage/SchemaResource.tsx
Original file line number Diff line number Diff line change
@@ -1,20 +1,22 @@
import { useParams } from "react-router-dom";
import { BreadcrumbNav } from "../BreadcrumbNav";
import { SearchLayout } from "../Layout";
import { SchemaResourceType } from "./resourceTypes";
import { SchemaResourceEdit } from "./SchemaResourceEdit";
import { useGetSettingsResourceDetails } from "../../api/query-hooks/settingsResourcesHooks";
import { Head } from "../Head/Head";
import { useNavigate, useParams } from "react-router-dom";
import { useSettingsUpdateResource } from "../../api/query-hooks/mutations/useSettingsResourcesMutations";
import { useGetSettingsResourceDetails } from "../../api/query-hooks/settingsResourcesHooks";
import { BreadcrumbNav } from "../BreadcrumbNav";
import EmptyState from "../EmptyState";
import ErrorPage from "../Errors/ErrorPage";
import { Head } from "../Head/Head";
import { SearchLayout } from "../Layout";
import TableSkeletonLoader from "../SkeletonLoader/TableSkeletonLoader";
import EmptyState from "../EmptyState";
import { SchemaResourceEdit } from "./SchemaResourceEdit";
import { SchemaResourceType } from "./resourceTypes";

export function SchemaResource({
resourceInfo
}: {
resourceInfo: SchemaResourceType;
}) {
const navigate = useNavigate();

const { name } = resourceInfo;
const { id } = useParams();

Expand All @@ -26,7 +28,12 @@ export function SchemaResource({

const { mutateAsync: updateResource } = useSettingsUpdateResource(
resourceInfo,
resource
resource,
{
onSuccess: () => {
navigate(`/settings/${resourceInfo.table}`);
}
}
);

return (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import clsx from "clsx";
import { Form, Formik } from "formik";
import { useCallback, useMemo } from "react";
import { FaSpinner } from "react-icons/fa";
import { useNavigate } from "react-router-dom";
import { TupleToUnion } from "type-fest";
import { parse } from "yaml";
import {
Expand Down Expand Up @@ -70,6 +71,7 @@ export default function TopologyResourceForm({
const resourceInfo = schemaResourceTypes.find(
(item) => item.name === "Topology"
);
const navigate = useNavigate();

const { data: spec, isLoading: isLoadingSpec } = useQuery({
queryKey: ["Github", "mission-control-registry", selectedOption],
Expand All @@ -86,7 +88,11 @@ export default function TopologyResourceForm({
useSettingsCreateResource(resourceInfo!, onSuccess);

const { mutate: updateResource, isLoading: isUpdatingResource } =
useSettingsUpdateResource(resourceInfo!, topology, isModal);
useSettingsUpdateResource(resourceInfo!, topology, {
onSuccess: () => {
navigate(`/settings/integrations`);
}
});

const isLoading = isCreatingResource || isUpdatingResource;

Expand Down

0 comments on commit 8f25ae1

Please sign in to comment.