diff --git a/apps/cs/src/entities/organization/api/organization-service.ts b/apps/cs/src/entities/organization/api/organization-service.ts index 3a362df19..ba66c5b76 100644 --- a/apps/cs/src/entities/organization/api/organization-service.ts +++ b/apps/cs/src/entities/organization/api/organization-service.ts @@ -1,6 +1,7 @@ import { client } from "@/shared/api"; import { ENDPOINT } from "@/shared/config"; import { + type Organization, type OrganizationFormData, type OrganizationService, type OrganizationTree, @@ -28,6 +29,16 @@ export class OrganizationApiService implements OrganizationService { `${ENDPOINT.CMS_SERVICE.ORGANIZATIONS}/${ognzSn}`, ); } + + public async updateOrganizationName( + ognzSn: number, + name: string, + ): Promise { + const response = await client.put( + `${ENDPOINT.CMS_SERVICE.ORGANIZATIONS}/${ognzSn}/${name}`, + ); + return response.data; + } } export const OrganizationApi = new OrganizationApiService(); diff --git a/apps/cs/src/entities/organization/model/organization-interface.ts b/apps/cs/src/entities/organization/model/organization-interface.ts index ad8167708..d22ce2dc1 100644 --- a/apps/cs/src/entities/organization/model/organization-interface.ts +++ b/apps/cs/src/entities/organization/model/organization-interface.ts @@ -23,4 +23,5 @@ export interface OrganizationService { getOrganizationsTreeList(): Promise; createOrganization(organization: OrganizationFormData): Promise; deleteOrganization(ognzSn: number): Promise; + updateOrganizationName(ognzSn: number, name: string): Promise; } diff --git a/apps/cs/src/pages/organization/ui/organization-page.tsx b/apps/cs/src/pages/organization/ui/organization-page.tsx index 5a767ba6b..a7766b756 100644 --- a/apps/cs/src/pages/organization/ui/organization-page.tsx +++ b/apps/cs/src/pages/organization/ui/organization-page.tsx @@ -55,6 +55,17 @@ function OrganizationPage() { }, }); + const { mutateAsync: updateOrganizationName } = useMutation({ + mutationFn: ({ ognzSn, name }: { ognzSn: number; name: string }) => + OrganizationApi.updateOrganizationName(ognzSn, name), + onSuccess: () => { + alert("저장되었습니다."); + queryClient.invalidateQueries({ + queryKey: [ENDPOINT.CMS_SERVICE.ORGANIZATIONS], + }); + }, + }); + const additionalNodeForm = useForm({ resolver: zodResolver(organizationFormSchema), defaultValues: { @@ -145,7 +156,9 @@ function OrganizationPage() { )} handleSelectNode={handleNodeSelect} handleDropNode={() => {}} - updateNodeName={async () => {}} + updateNodeName={async (id, name) => { + await updateOrganizationName({ ognzSn: id as number, name }); + }} /> diff --git a/apps/cs/src/widgets/dnd-tree/ui/custom-node.tsx b/apps/cs/src/widgets/dnd-tree/ui/custom-node.tsx index b909f1bfb..ccd5ce75e 100644 --- a/apps/cs/src/widgets/dnd-tree/ui/custom-node.tsx +++ b/apps/cs/src/widgets/dnd-tree/ui/custom-node.tsx @@ -17,7 +17,7 @@ type CustomNodeProps = { treeMethods: TreeMethods | null; onToggle: (id: NodeModel["id"]) => void; onSelect: (node: NodeModel) => void; - updateNodeName: (nodeName: string) => Promise; + updateNodeName: (id: NodeModel["id"], nodeName: string) => Promise; }; function CustomNode({ @@ -41,7 +41,7 @@ function CustomNode({ const handleSelect = () => onSelect(node); const handleSave = async () => { - await updateNodeName(nodeName); + await updateNodeName(id, nodeName); setEditMode(false); }; diff --git a/apps/cs/src/widgets/dnd-tree/ui/dnd-tree.tsx b/apps/cs/src/widgets/dnd-tree/ui/dnd-tree.tsx index 98386f09c..1a0a36816 100644 --- a/apps/cs/src/widgets/dnd-tree/ui/dnd-tree.tsx +++ b/apps/cs/src/widgets/dnd-tree/ui/dnd-tree.tsx @@ -25,7 +25,7 @@ type TreeProps = { renderEditableNode: (props: EditableNodeProps) => ReactElement; handleSelectNode: (node: NodeModel) => void; handleDropNode: (newTree: NodeModel[], options: DropOptions) => void; - updateNodeName: (nodeName: string) => Promise; + updateNodeName: (id: NodeModel["id"], nodeName: string) => Promise; }; function DndTree({