|
3 | 3 | import { memo, useCallback, useEffect, useMemo, useReducer, useRef, useState } from 'react' |
4 | 4 | import type { OnMount } from '@monaco-editor/react' |
5 | 5 | import { createLogger } from '@sim/logger' |
| 6 | +import { toError } from '@sim/utils/errors' |
6 | 7 | import { ZoomIn, ZoomOut } from 'lucide-react' |
7 | 8 | import dynamic from 'next/dynamic' |
8 | 9 | import { Button, Skeleton } from '@/components/emcn' |
@@ -1024,7 +1025,7 @@ const IframePreview = memo(function IframePreview({ |
1024 | 1025 | setStreamingBuffer(buf) |
1025 | 1026 | } catch (err) { |
1026 | 1027 | if (!cancelled && !(err instanceof DOMException && err.name === 'AbortError')) { |
1027 | | - const msg = err instanceof Error ? err.message : 'Failed to render PDF' |
| 1028 | + const msg = toError(err).message || 'Failed to render PDF' |
1028 | 1029 | if (streamingBufferRef.current || shouldSuppressStreamingDocumentError(msg)) { |
1029 | 1030 | logger.info('Suppressing transient PDF streaming preview error', { error: msg }) |
1030 | 1031 | } else { |
@@ -1473,7 +1474,7 @@ const DocxPreview = memo(function DocxPreview({ |
1473 | 1474 | } |
1474 | 1475 | } catch (err) { |
1475 | 1476 | if (!cancelled) { |
1476 | | - const msg = err instanceof Error ? err.message : 'Failed to render document' |
| 1477 | + const msg = toError(err).message || 'Failed to render document' |
1477 | 1478 | logger.error('DOCX render failed', { error: msg }) |
1478 | 1479 | setRenderError(msg) |
1479 | 1480 | } |
@@ -1545,7 +1546,7 @@ const DocxPreview = memo(function DocxPreview({ |
1545 | 1546 | containerRef.current.innerHTML = previousHtml |
1546 | 1547 | setHasRenderedPreview(true) |
1547 | 1548 | } |
1548 | | - const msg = err instanceof Error ? err.message : 'Failed to render document' |
| 1549 | + const msg = toError(err).message || 'Failed to render document' |
1549 | 1550 | if (previousHtml || shouldSuppressStreamingDocumentError(msg)) { |
1550 | 1551 | logger.info('Suppressing transient DOCX streaming preview error', { error: msg }) |
1551 | 1552 | } else { |
@@ -1749,7 +1750,7 @@ function PptxPreview({ |
1749 | 1750 | ) |
1750 | 1751 | } catch (err) { |
1751 | 1752 | if (!cancelled && !(err instanceof DOMException && err.name === 'AbortError')) { |
1752 | | - const msg = err instanceof Error ? err.message : 'Failed to render presentation' |
| 1753 | + const msg = toError(err).message || 'Failed to render presentation' |
1753 | 1754 | if (shouldSuppressStreamingPptxError(msg)) { |
1754 | 1755 | logger.info('Suppressing transient PPTX streaming preview error', { error: msg }) |
1755 | 1756 | } else { |
@@ -1801,7 +1802,7 @@ function PptxPreview({ |
1801 | 1802 | } |
1802 | 1803 | } catch (err) { |
1803 | 1804 | if (!cancelled) { |
1804 | | - const msg = err instanceof Error ? err.message : 'Failed to render presentation' |
| 1805 | + const msg = toError(err).message || 'Failed to render presentation' |
1805 | 1806 | logger.error('PPTX render failed', { error: msg }) |
1806 | 1807 | setRenderError(msg) |
1807 | 1808 | } |
@@ -1911,7 +1912,7 @@ const XlsxPreview = memo(function XlsxPreview({ |
1911 | 1912 | } |
1912 | 1913 | } catch (err) { |
1913 | 1914 | if (!cancelled) { |
1914 | | - const msg = err instanceof Error ? err.message : 'Failed to parse spreadsheet' |
| 1915 | + const msg = toError(err).message || 'Failed to parse spreadsheet' |
1915 | 1916 | logger.error('XLSX parse failed', { error: msg }) |
1916 | 1917 | setRenderError(msg) |
1917 | 1918 | } |
@@ -1949,7 +1950,7 @@ const XlsxPreview = memo(function XlsxPreview({ |
1949 | 1950 | } |
1950 | 1951 | } catch (err) { |
1951 | 1952 | if (!cancelled) { |
1952 | | - const msg = err instanceof Error ? err.message : 'Failed to parse sheet' |
| 1953 | + const msg = toError(err).message || 'Failed to parse sheet' |
1953 | 1954 | logger.error('XLSX sheet parse failed', { error: msg }) |
1954 | 1955 | setRenderError(msg) |
1955 | 1956 | } |
@@ -2042,7 +2043,7 @@ const XlsxPreview = memo(function XlsxPreview({ |
2042 | 2043 | setIsDirty(false) |
2043 | 2044 | onSaveStatusChangeRef.current?.('saved') |
2044 | 2045 | } catch (err) { |
2045 | | - logger.error('XLSX save failed', { error: err instanceof Error ? err.message : String(err) }) |
| 2046 | + logger.error('XLSX save failed', { error: toError(err).message }) |
2046 | 2047 | onSaveStatusChangeRef.current?.('error') |
2047 | 2048 | } finally { |
2048 | 2049 | isSavingRef.current = false |
|
0 commit comments