mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-15 03:55:56 +08:00
refactor: replace Toast notifications with emit for editing state management
This commit is contained in:
parent
934d0a32cd
commit
e87261e8ce
@ -9,7 +9,7 @@ import { JSON_SCHEMA_MAX_DEPTH } from '@/config'
|
||||
import CodeEditor from './code-editor'
|
||||
import ErrorMessage from './error-message'
|
||||
import { useVisualEditorStore } from './visual-editor/store'
|
||||
import Toast from '@/app/components/base/toast'
|
||||
import { useMittContext } from './visual-editor/context'
|
||||
|
||||
type JsonImporterProps = {
|
||||
onSubmit: (schema: any) => void
|
||||
@ -27,6 +27,7 @@ const JsonImporter: FC<JsonImporterProps> = ({
|
||||
const importBtnRef = useRef<HTMLButtonElement>(null)
|
||||
const advancedEditing = useVisualEditorStore(state => state.advancedEditing)
|
||||
const isAddingNewField = useVisualEditorStore(state => state.isAddingNewField)
|
||||
const { emit } = useMittContext()
|
||||
|
||||
useEffect(() => {
|
||||
if (importBtnRef.current) {
|
||||
@ -38,15 +39,10 @@ const JsonImporter: FC<JsonImporterProps> = ({
|
||||
|
||||
const handleTrigger = useCallback((e: React.MouseEvent<HTMLElement, MouseEvent>) => {
|
||||
e.stopPropagation()
|
||||
if (advancedEditing || isAddingNewField) {
|
||||
Toast.notify({
|
||||
type: 'warning',
|
||||
message: t('workflow.nodes.llm.jsonSchema.warningTips.jsonImport'),
|
||||
})
|
||||
return
|
||||
}
|
||||
if (advancedEditing || isAddingNewField)
|
||||
emit('quitEditing', {})
|
||||
setOpen(!open)
|
||||
}, [open, advancedEditing, isAddingNewField, t])
|
||||
}, [open, advancedEditing, isAddingNewField, emit])
|
||||
|
||||
const onClose = useCallback(() => {
|
||||
setOpen(false)
|
||||
|
@ -17,7 +17,7 @@ import {
|
||||
preValidateSchema,
|
||||
validateSchemaAgainstDraft7,
|
||||
} from '../../utils'
|
||||
import { MittProvider, VisualEditorContextProvider } from './visual-editor/context'
|
||||
import { MittProvider, VisualEditorContextProvider, useMittContext } from './visual-editor/context'
|
||||
import ErrorMessage from './error-message'
|
||||
import { useVisualEditorStore } from './visual-editor/store'
|
||||
import Toast from '@/app/components/base/toast'
|
||||
@ -73,6 +73,7 @@ const JsonSchemaConfig: FC<JsonSchemaConfigProps> = ({
|
||||
const isAddingNewField = useVisualEditorStore(state => state.isAddingNewField)
|
||||
const setIsAddingNewField = useVisualEditorStore(state => state.setIsAddingNewField)
|
||||
const setHoveringProperty = useVisualEditorStore(state => state.setHoveringProperty)
|
||||
const { emit } = useMittContext()
|
||||
|
||||
const updateBtnWidth = useCallback((width: number) => {
|
||||
setBtnWidth(width + 32)
|
||||
@ -113,18 +114,12 @@ const JsonSchemaConfig: FC<JsonSchemaConfigProps> = ({
|
||||
}
|
||||
}
|
||||
else if (currentTab === SchemaView.VisualEditor) {
|
||||
if (advancedEditing || isAddingNewField) {
|
||||
Toast.notify({
|
||||
type: 'warning',
|
||||
message: t('workflow.nodes.llm.jsonSchema.warningTips.switchToJsonSchema'),
|
||||
})
|
||||
return
|
||||
}
|
||||
setJson(JSON.stringify(jsonSchema, null, 2))
|
||||
if (advancedEditing || isAddingNewField)
|
||||
emit('quitEditing', { callback: (backup: SchemaRoot) => setJson(JSON.stringify(backup || jsonSchema, null, 2)) })
|
||||
}
|
||||
|
||||
setCurrentTab(value)
|
||||
}, [currentTab, jsonSchema, json, advancedEditing, isAddingNewField, t])
|
||||
}, [currentTab, jsonSchema, json, advancedEditing, isAddingNewField, emit])
|
||||
|
||||
const handleApplySchema = useCallback((schema: SchemaRoot) => {
|
||||
if (currentTab === SchemaView.VisualEditor)
|
||||
|
@ -20,6 +20,7 @@ import { type FormValue, ModelTypeEnum } from '@/app/components/header/account-s
|
||||
import { useModelListAndDefaultModelAndCurrentProviderAndModel } from '@/app/components/header/account-setting/model-provider-page/hooks'
|
||||
import { useVisualEditorStore } from '../visual-editor/store'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { useMittContext } from '../visual-editor/context'
|
||||
|
||||
type JsonSchemaGeneratorProps = {
|
||||
onApply: (schema: SchemaRoot) => void
|
||||
@ -52,6 +53,7 @@ export const JsonSchemaGenerator: FC<JsonSchemaGeneratorProps> = ({
|
||||
} = useModelListAndDefaultModelAndCurrentProviderAndModel(ModelTypeEnum.textGeneration)
|
||||
const advancedEditing = useVisualEditorStore(state => state.advancedEditing)
|
||||
const isAddingNewField = useVisualEditorStore(state => state.isAddingNewField)
|
||||
const { emit } = useMittContext()
|
||||
const SchemaGenerator = theme === Theme.light ? SchemaGeneratorLight : SchemaGeneratorDark
|
||||
|
||||
useEffect(() => {
|
||||
@ -66,15 +68,10 @@ export const JsonSchemaGenerator: FC<JsonSchemaGeneratorProps> = ({
|
||||
|
||||
const handleTrigger = useCallback((e: React.MouseEvent<HTMLElement, MouseEvent>) => {
|
||||
e.stopPropagation()
|
||||
if (advancedEditing || isAddingNewField) {
|
||||
Toast.notify({
|
||||
type: 'warning',
|
||||
message: t('workflow.nodes.llm.jsonSchema.warningTips.jsonGeneration'),
|
||||
})
|
||||
return
|
||||
}
|
||||
if (advancedEditing || isAddingNewField)
|
||||
emit('quitEditing', {})
|
||||
setOpen(!open)
|
||||
}, [open, advancedEditing, isAddingNewField, t])
|
||||
}, [open, advancedEditing, isAddingNewField, emit])
|
||||
|
||||
const onClose = useCallback(() => {
|
||||
setOpen(false)
|
||||
|
@ -89,11 +89,8 @@ const EditCard: FC<EditCardProps> = ({
|
||||
})
|
||||
|
||||
useSubscribe('fieldChangeSuccess', () => {
|
||||
if (isAddingNewField) {
|
||||
setIsAddingNewField(false)
|
||||
return
|
||||
}
|
||||
setAdvancedEditing(false)
|
||||
isAddingNewField && setIsAddingNewField(false)
|
||||
advancedEditing && setAdvancedEditing(false)
|
||||
})
|
||||
|
||||
const emitPropertyNameChange = useCallback(() => {
|
||||
|
@ -22,7 +22,10 @@ export const useSchemaNodeOperations = (props: VisualEditorProps) => {
|
||||
const { schema: jsonSchema, onChange } = props
|
||||
const backupSchema = useVisualEditorStore(state => state.backupSchema)
|
||||
const setBackupSchema = useVisualEditorStore(state => state.setBackupSchema)
|
||||
const isAddingNewField = useVisualEditorStore(state => state.isAddingNewField)
|
||||
const setIsAddingNewField = useVisualEditorStore(state => state.setIsAddingNewField)
|
||||
const advancedEditing = useVisualEditorStore(state => state.advancedEditing)
|
||||
const setAdvancedEditing = useVisualEditorStore(state => state.setAdvancedEditing)
|
||||
const setHoveringProperty = useVisualEditorStore(state => state.setHoveringProperty)
|
||||
const { emit, useSubscribe } = useMittContext()
|
||||
|
||||
@ -33,6 +36,15 @@ export const useSchemaNodeOperations = (props: VisualEditorProps) => {
|
||||
}
|
||||
})
|
||||
|
||||
useSubscribe('quitEditing', (params) => {
|
||||
const { callback } = params as any
|
||||
callback?.(backupSchema)
|
||||
emit('restoreSchema')
|
||||
isAddingNewField && setIsAddingNewField(false)
|
||||
advancedEditing && setAdvancedEditing(false)
|
||||
setHoveringProperty(null)
|
||||
})
|
||||
|
||||
useSubscribe('propertyNameChange', (params) => {
|
||||
const { parentPath, oldFields, fields } = params as ChangeEventParams
|
||||
const { name: oldName } = oldFields
|
||||
@ -204,6 +216,7 @@ export const useSchemaNodeOperations = (props: VisualEditorProps) => {
|
||||
})
|
||||
|
||||
useSubscribe('addField', (params) => {
|
||||
advancedEditing && setAdvancedEditing(false)
|
||||
setBackupSchema(jsonSchema)
|
||||
const { path } = params as AddEventParams
|
||||
setIsAddingNewField(true)
|
||||
|
@ -442,9 +442,6 @@ const translation = {
|
||||
fieldNamePlaceholder: 'Field Name',
|
||||
descriptionPlaceholder: 'Add description',
|
||||
warningTips: {
|
||||
jsonGeneration: 'Please finish editing the current field before generating a schema',
|
||||
jsonImport: 'Please finish editing the current field before importing a schema',
|
||||
switchToJsonSchema: 'Please finish editing the current field before switching to JSON Schema',
|
||||
saveSchema: 'Please finish editing the current field before saving the schema',
|
||||
},
|
||||
},
|
||||
|
@ -443,9 +443,6 @@ const translation = {
|
||||
fieldNamePlaceholder: '字段名',
|
||||
descriptionPlaceholder: '添加描述',
|
||||
warningTips: {
|
||||
jsonGeneration: '请先完成当前字段的编辑',
|
||||
jsonImport: '请先完成当前字段的编辑',
|
||||
switchToJsonSchema: '请先完成当前字段的编辑',
|
||||
saveSchema: '请先完成当前字段的编辑',
|
||||
},
|
||||
},
|
||||
|
Loading…
x
Reference in New Issue
Block a user