import { WixPatternsError, withoutDefaults } from '@wix/bex-core'; import type { ReportBI, WixPatternsContainer, WixPatternsErrorCode, } from '@wix/bex-core'; import { cairoErrorInLoadingAComponent, cairoTryAgainClicked, } from '@wix/bex-core/bi'; export const handleFieldsSourceLoadError = ({ container, reportBi, error, errorCode, reload, }: { container: WixPatternsContainer; reportBi: ReportBI; error: unknown; errorCode: WixPatternsErrorCode; reload: () => Promise | void; }): void => { if (!error) { return; } const cairoError = new WixPatternsError({ errorCode, originalException: error, }); container.showToast?.({ message: container.translate('cairo.customFields.fetch.technicalError'), action: { uiType: 'LINK', text: container.translate('cairo.toast.retry'), onClick: () => { reportBi( withoutDefaults(cairoTryAgainClicked)({ actionName: 'Fetch extended fields', loaction: 'toast', }), ); Promise.resolve(reload()).catch((retryError) => handleFieldsSourceLoadError({ container, reportBi, error: retryError, errorCode, reload, }), ); }, removeToastOnClick: true, }, type: 'WARNING', biName: 'cairo-fetch-schemas-error-toast', }); container.internalMonitor.reportError({ error: cairoError }); reportBi( cairoErrorInLoadingAComponent({ errorType: cairoError.name, }), ); };