From 54b3d4a8232bf4d33a265b671b44cc96641700d6 Mon Sep 17 00:00:00 2001 From: wwsun Date: Fri, 26 Jul 2024 13:50:40 +0800 Subject: [PATCH] fix: display file error source name --- packages/core/src/models/interfaces.ts | 3 ++- packages/core/src/models/workspace.ts | 9 ++++++--- packages/core/src/types.ts | 5 +++++ .../src/components/files-error-overlay.tsx | 16 ++++++++-------- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/packages/core/src/models/interfaces.ts b/packages/core/src/models/interfaces.ts index c4141f3..e57d3f0 100644 --- a/packages/core/src/models/interfaces.ts +++ b/packages/core/src/models/interfaces.ts @@ -10,6 +10,7 @@ import { IPageConfigData, IImportSpecifierSourceData, IImportSpecifierData, + IFileError, } from '../types'; import { TangoFile, TangoJsonFile } from './file'; import { TangoRouteModule } from './route-module'; @@ -322,7 +323,7 @@ export interface IWorkspace { /** * 文件错误列表 */ - get fileErrors(): string[]; + get fileErrors(): IFileError[]; /** * 是否是合法的项目 */ diff --git a/packages/core/src/models/workspace.ts b/packages/core/src/models/workspace.ts index dfc360e..ec63a66 100644 --- a/packages/core/src/models/workspace.ts +++ b/packages/core/src/models/workspace.ts @@ -28,7 +28,7 @@ import { TangoNode } from './node'; import { TangoJsModule } from './module'; import { TangoFile, TangoJsonFile, TangoLessFile } from './file'; import { IWorkspace, WorkspaceMode } from './interfaces'; -import { IFileConfig, FileType, ITangoConfigPackages, IPageConfigData } from '../types'; +import { IFileConfig, FileType, ITangoConfigPackages, IPageConfigData, IFileError } from '../types'; import { SelectSource } from './select-source'; import { DragSource } from './drag-source'; import { TangoRouteModule } from './route-module'; @@ -238,10 +238,13 @@ export class Workspace extends EventTarget implements IWorkspace { } get fileErrors() { - const list: string[] = []; + const list: IFileError[] = []; this.files.forEach((file) => { if (file.isError) { - list.push(file.errorMessage); + list.push({ + filename: file.filename, + errorMessage: file.errorMessage, + }); } }); return list; diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 9af6892..6b59b15 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -57,6 +57,11 @@ export interface IFileConfig { type?: FileType; } +export interface IFileError { + filename: string; + errorMessage: string; +} + /** * 视图节点数据类型 */ diff --git a/packages/designer/src/components/files-error-overlay.tsx b/packages/designer/src/components/files-error-overlay.tsx index 5a2db6d..1d733e8 100644 --- a/packages/designer/src/components/files-error-overlay.tsx +++ b/packages/designer/src/components/files-error-overlay.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react'; +import React, { useState } from 'react'; import { Box, css } from 'coral-system'; import { observer, useWorkspace } from '@music163/tango-context'; import { CloseOutlined } from '@ant-design/icons'; @@ -13,13 +13,8 @@ const errorMessageStyle = css` */ export const FilesErrorOverlay = observer(() => { const [isVisible, setIsVisible] = useState(true); - const [errors, setErrors] = useState([]); const workspace = useWorkspace(); - useEffect(() => { - setErrors(workspace.fileErrors); - }, [workspace.fileErrors]); - const handleClose = () => { setIsVisible(false); }; @@ -55,8 +50,13 @@ export const FilesErrorOverlay = observer(() => { onClick={handleClose} /> - {errors.map((error, index) => ( - {error} + {workspace.fileErrors.map((fileError) => ( + + {fileError.filename} + + {fileError.errorMessage} + + ))}