import React, { ReactElement } from 'react'; import { useWixPatternsContainer } from '@wix/bex-core/react'; import { OfflineErrorState } from './OfflineErrorState'; import { CollectionErrorState } from '../CollectionErrorState'; import { observer } from 'mobx-react-lite'; import { isServerErrorCode } from '@wix/bex-core'; export interface ErrorStateProps { dataHook?: string; errorStatus?: { error: unknown; } | null; /** @deprecated */ renderError?: (params: { err: unknown; isOnline: boolean; retry: () => void; }) => ReactElement; errorState?: ( err: unknown, params: { isOnline: boolean; retry: () => void; }, ) => ReactElement; state: { errorStatus?: { error: unknown; } | null; retryErrorState: () => void; }; image?: ReactElement; } function _ErrorState({ state, errorStatus: errorStatusProp, errorState, dataHook, image, }: ErrorStateProps) { const { onlineState: { isOnline }, errorHandler, translate: t, } = useWixPatternsContainer(); const errorStatus = errorStatusProp ?? state.errorStatus; if (!isOnline) { return ( ); } if (errorState && errorStatus) { return errorState(errorStatus.error, { isOnline, retry: state.retryErrorState, }); } const resolvedError = errorHandler.getResolvedError?.(errorStatus?.error); const action = resolvedError?.action ?? (isServerErrorCode(errorStatus?.error) ? { text: t('cairo.error.tryAgain.cta'), onClick: state.retryErrorState } : undefined); return ( action?.onClick?.() } } requestId={resolvedError?.requestId} /> ); } export const ErrorState = observer(_ErrorState);