11import type { FC } from 'react'
22import { useMemo } from 'react'
3+ import type { CustomValidator } from '@rjsf/utils'
34import type { Node } from '@xyflow/react'
45import { useTranslation } from 'react-i18next'
56import { Card , CardBody } from '@chakra-ui/react'
67
7- import type { DataPolicyData , PanelProps } from '@datahub/types.ts'
8- import useDataHubDraftStore from '@datahub/hooks/useDataHubDraftStore.ts'
8+ import LoaderSpinner from '@/components/Chakra/LoaderSpinner.tsx'
9+ import ErrorMessage from '@/components/ErrorMessage.tsx'
10+
11+ import { useGetAllDataPolicies } from '@datahub/api/hooks/DataHubDataPoliciesService/useGetAllDataPolicies.ts'
912import { ReactFlowSchemaForm } from '@datahub/components/forms/ReactFlowSchemaForm.tsx'
1013import { MOCK_DATA_POLICY_SCHEMA } from '@datahub/designer/data_policy/DataPolicySchema.ts'
11- import type { CustomValidator } from '@rjsf/utils'
12- import { useGetAllDataPolicies } from '@datahub/api/hooks/DataHubDataPoliciesService/useGetAllDataPolicies.ts'
14+ import useDataHubDraftStore from '@datahub/hooks/useDataHubDraftStore.ts'
1315import { usePolicyGuards } from '@datahub/hooks/usePolicyGuards.ts'
14- import ErrorMessage from '@/components/ErrorMessage.tsx '
16+ import type { DataPolicyData , PanelProps } from '@datahub/types.ts '
1517
1618export const DataPolicyPanel : FC < PanelProps > = ( { selectedNode, onFormSubmit } ) => {
1719 const { t } = useTranslation ( 'datahub' )
1820 const { nodes } = useDataHubDraftStore ( )
19- const { data : allPolicies } = useGetAllDataPolicies ( )
21+ const { data : allPolicies , isLoading , isError } = useGetAllDataPolicies ( )
2022 const { guardAlert, isNodeEditable } = usePolicyGuards ( selectedNode )
2123
2224 const data = useMemo ( ( ) => {
@@ -25,8 +27,8 @@ export const DataPolicyPanel: FC<PanelProps> = ({ selectedNode, onFormSubmit })
2527 } , [ selectedNode , nodes ] )
2628
2729 const customValidate : CustomValidator < DataPolicyData > = ( formData , errors ) => {
28- if ( ! allPolicies ) errors [ 'id' ] ?. addError ( t ( 'error.validation.dataPolicy.notLoading' ) )
29- else {
30+ if ( isError ) errors [ 'id' ] ?. addError ( t ( 'error.validation.dataPolicy.notLoading' ) )
31+ else if ( allPolicies ) {
3032 const isIdNotUnique = Boolean ( allPolicies . items ?. find ( ( e ) => e . id === formData ?. id ) )
3133 if ( isIdNotUnique ) errors [ 'id' ] ?. addError ( t ( 'error.validation.dataPolicy.notUnique' ) )
3234 }
@@ -35,17 +37,20 @@ export const DataPolicyPanel: FC<PanelProps> = ({ selectedNode, onFormSubmit })
3537
3638 return (
3739 < Card >
40+ { isLoading && < LoaderSpinner /> }
3841 { guardAlert && < ErrorMessage status = "info" type = { guardAlert . title } message = { guardAlert . description } /> }
39- < CardBody >
40- < ReactFlowSchemaForm
41- isNodeEditable = { isNodeEditable }
42- schema = { MOCK_DATA_POLICY_SCHEMA . schema }
43- uiSchema = { MOCK_DATA_POLICY_SCHEMA . uiSchema }
44- formData = { data }
45- onSubmit = { onFormSubmit }
46- customValidate = { customValidate }
47- />
48- </ CardBody >
42+ { ! isLoading && (
43+ < CardBody >
44+ < ReactFlowSchemaForm
45+ isNodeEditable = { isNodeEditable }
46+ schema = { MOCK_DATA_POLICY_SCHEMA . schema }
47+ uiSchema = { MOCK_DATA_POLICY_SCHEMA . uiSchema }
48+ formData = { data }
49+ onSubmit = { onFormSubmit }
50+ customValidate = { customValidate }
51+ />
52+ </ CardBody >
53+ ) }
4954 </ Card >
5055 )
5156}
0 commit comments