fixing custom editor and spit convert
This commit is contained in:
parent
f3757bcfac
commit
007a6d9eec
|
|
@ -5,6 +5,7 @@ function CustomEditor(props) {
|
|||
const editorRef = useRef(null);
|
||||
const [isEditorReady, setIsEditorReady] = useState(false);
|
||||
const [currentContent, setCurrentContent] = useState(props.initialData || "");
|
||||
const isUserTypingRef = useRef(false);
|
||||
|
||||
// Handle editor initialization
|
||||
const handleInit = useCallback((evt, editor) => {
|
||||
|
|
@ -12,23 +13,29 @@ function CustomEditor(props) {
|
|||
setIsEditorReady(true);
|
||||
|
||||
// Set initial content immediately when editor is ready
|
||||
if (currentContent) {
|
||||
editor.setContent(currentContent);
|
||||
if (props.initialData) {
|
||||
editor.setContent(props.initialData);
|
||||
setCurrentContent(props.initialData);
|
||||
}
|
||||
|
||||
// Simple onChange handler
|
||||
editor.on('change', () => {
|
||||
isUserTypingRef.current = true; // Mark that user is typing
|
||||
const content = editor.getContent();
|
||||
setCurrentContent(content);
|
||||
if (props.onChange) {
|
||||
props.onChange(content);
|
||||
}
|
||||
// Reset typing flag after a short delay
|
||||
setTimeout(() => {
|
||||
isUserTypingRef.current = false;
|
||||
}, 100);
|
||||
});
|
||||
}, [currentContent, props.onChange]);
|
||||
}, [props.initialData, props.onChange]);
|
||||
|
||||
// Watch for changes in initialData prop
|
||||
// Watch for changes in initialData prop (from external sources like setValue)
|
||||
useEffect(() => {
|
||||
if (props.initialData !== currentContent) {
|
||||
if (props.initialData !== currentContent && !isUserTypingRef.current) {
|
||||
setCurrentContent(props.initialData || "");
|
||||
|
||||
// Update editor content if editor is ready
|
||||
|
|
@ -36,14 +43,15 @@ function CustomEditor(props) {
|
|||
editorRef.current.setContent(props.initialData || "");
|
||||
}
|
||||
}
|
||||
}, [props.initialData, currentContent, isEditorReady]);
|
||||
}, [props.initialData, isEditorReady]); // Removed currentContent from dependency
|
||||
|
||||
// Handle initial data when editor becomes ready
|
||||
// Handle initial data when editor becomes ready (only for initialization)
|
||||
useEffect(() => {
|
||||
if (isEditorReady && currentContent && editorRef.current) {
|
||||
editorRef.current.setContent(currentContent);
|
||||
if (isEditorReady && props.initialData && editorRef.current && !isUserTypingRef.current) {
|
||||
editorRef.current.setContent(props.initialData);
|
||||
setCurrentContent(props.initialData);
|
||||
}
|
||||
}, [isEditorReady, currentContent]);
|
||||
}, [isEditorReady]); // Only depend on isEditorReady, not currentContent
|
||||
|
||||
return (
|
||||
<Editor
|
||||
|
|
|
|||
|
|
@ -281,7 +281,10 @@ export default function FormConvertSPIT() {
|
|||
try {
|
||||
const response = await getTagsBySubCategoryId(categoryId);
|
||||
if (response?.data?.data?.length > 0) {
|
||||
const tagsMerge = [...tags, response?.data?.data]
|
||||
// Extract tag names from the response objects
|
||||
const apiTags = response?.data?.data?.map((tag: any) => tag.tagName || tag.name || tag);
|
||||
// Merge with existing tags, ensuring uniqueness
|
||||
const tagsMerge = Array.from(new Set([...tags, ...apiTags]));
|
||||
setTags(tagsMerge);
|
||||
}
|
||||
} catch (error) {
|
||||
|
|
@ -316,16 +319,16 @@ export default function FormConvertSPIT() {
|
|||
setValue("contentCreator", details.contentCreator || "");
|
||||
setValue("contentRewriteDescription", details.contentRewriteDescription || "");
|
||||
|
||||
// Set category
|
||||
// Set category and load category tags
|
||||
if (details.categoryId) {
|
||||
setSelectedCategoryId(details.categoryId);
|
||||
await loadTags(details.categoryId);
|
||||
}
|
||||
|
||||
// Set tags
|
||||
// Set content tags and merge with category tags
|
||||
if (details.contentTag) {
|
||||
const initialTags = details.contentTag.split(",").map((tag: string) => tag.trim());
|
||||
setTags(initialTags);
|
||||
const contentTags = details.contentTag.split(",").map((tag: string) => tag.trim());
|
||||
setTags(prev => [...new Set([...prev, ...contentTags])]);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("Failed to load detail:", error);
|
||||
|
|
|
|||
Loading…
Reference in New Issue