From 33980bc9f48b705d5a8d35ea99ebb7099d5d7216 Mon Sep 17 00:00:00 2001 From: CodingOnStar Date: Fri, 6 Feb 2026 15:01:19 +0800 Subject: [PATCH] fix: ensure safe access to doc_metadata and update event emitter type - Updated the function in to safely handle potential undefined values in . - Modified the hook to correctly type the event emitter, enhancing type safety and clarity. - Adjusted the to support a new type for better event handling. --- .../detail/metadata/hooks/use-metadata-state.ts | 2 +- .../rag-pipeline/hooks/use-update-dsl-modal.ts | 2 +- web/context/event-emitter.tsx | 16 ++++++++++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/web/app/components/datasets/documents/detail/metadata/hooks/use-metadata-state.ts b/web/app/components/datasets/documents/detail/metadata/hooks/use-metadata-state.ts index 5f7aa4289d..08651b699e 100644 --- a/web/app/components/datasets/documents/detail/metadata/hooks/use-metadata-state.ts +++ b/web/app/components/datasets/documents/detail/metadata/hooks/use-metadata-state.ts @@ -89,7 +89,7 @@ export function useMetadataState({ docDetail, onUpdate }: UseMetadataStateOption } const cancelEdit = () => { - setMetadataParams({ documentType: docType || '', metadata: { ...docDetail?.doc_metadata } }) + setMetadataParams({ documentType: docType || '', metadata: { ...(docDetail?.doc_metadata || {}) } }) setEditStatus(!docType) if (!docType) setShowDocTypes(true) diff --git a/web/app/components/rag-pipeline/hooks/use-update-dsl-modal.ts b/web/app/components/rag-pipeline/hooks/use-update-dsl-modal.ts index 065a6b4ca5..3b86937417 100644 --- a/web/app/components/rag-pipeline/hooks/use-update-dsl-modal.ts +++ b/web/app/components/rag-pipeline/hooks/use-update-dsl-modal.ts @@ -97,7 +97,7 @@ export const useUpdateDSLModal = ({ onCancel, onImport }: UseUpdateDSLModalParam hash, rag_pipeline_variables: rag_pipeline_variables || [], }, - } as unknown as string) + }) }, [eventEmitter]) const completeImport = useCallback(async ( diff --git a/web/context/event-emitter.tsx b/web/context/event-emitter.tsx index 61a605cabf..14b81eacb6 100644 --- a/web/context/event-emitter.tsx +++ b/web/context/event-emitter.tsx @@ -4,7 +4,19 @@ import type { EventEmitter } from 'ahooks/lib/useEventEmitter' import { useEventEmitter } from 'ahooks' import { createContext, useContext } from 'use-context-selector' -const EventEmitterContext = createContext<{ eventEmitter: EventEmitter | null }>({ +/** + * Typed event object emitted via the shared EventEmitter. + * Covers workflow updates, prompt-editor commands, DSL export checks, etc. + */ +export type EventEmitterMessage = { + type: string + payload?: unknown + instanceId?: string +} + +export type EventEmitterValue = string | EventEmitterMessage + +const EventEmitterContext = createContext<{ eventEmitter: EventEmitter | null }>({ eventEmitter: null, }) @@ -16,7 +28,7 @@ type EventEmitterContextProviderProps = { export const EventEmitterContextProvider = ({ children, }: EventEmitterContextProviderProps) => { - const eventEmitter = useEventEmitter() + const eventEmitter = useEventEmitter() return (