Thanks for the reply.
import React, { useState, useEffect } from "react";
import { useSelector, useDispatch } from "react-redux";
import { useHistory } from "react-router-dom";
import {
Button,
CssBaseline,
Grid,
Container,
} from "@material-ui/core/";
import { makeStyles } from "@material-ui/core/styles";
import {
RichTextEditorComponent,
HtmlEditor,
Inject,
Toolbar,
Image,
Link,
RichTextEditor,
Count,
QuickToolbar,
} from "@syncfusion/ej2-react-richtexteditor";
import { CreatePost, UpdatePost } from "../../api/post";
import { sendBasicMail } from "../../api/mail";
import { CommonLoading } from "react-loadingg";
import "./Posts.scss";
export default function Post(props) {
const dispatch = useDispatch();
const history = useHistory();
const classes = useStyles();
const [template, setTemplate] = useState("");
const [rteObj, setRetObj] = useState({});
const [loading, setLoading] = useState(false);
let toolbarSettings = {
items: [
"Bold",
"Italic",
"Underline",
"StrikeThrough",
"FontName",
"FontSize",
"FontColor",
"BackgroundColor",
"LowerCase",
"UpperCase",
"|",
"Formats",
"Alignments",
"OrderedList",
"UnorderedList",
"Outdent",
"Indent",
"|",
"CreateLink",
"Image",
"|",
"ClearFormat",
"Print",
"SourceCode",
"FullScreen",
"|",
"Undo",
"Redo",
],
};
let imageSettings = {
saveFormat: "Base64",
};
useEffect(() => {
if (props.page === undefined) {
RichTextEditor.Inject(
HtmlEditor,
Image,
Link,
Toolbar,
Count,
QuickToolbar
);
const obj = new RichTextEditor(
{
height: 400,
valueTemplate: template,
toolbarSettings: toolbarSettings,
insertImageSettings: imageSettings,
},
"#rteElement"
);
setRetObj(obj);
}
}, []);
useEffect(() => {
async function setMyPost() {
if (
props.page === "mypost" ||
props.page === "mydraftpost" ||
props.page === "filter-word"
) {
let contents = "";
if (props?.data?.contents && props?.data?.contents !== "") {
const parser = new DOMParser();
const doc = parser.parseFromString(
props?.data?.contents,
"text/html"
);
if (doc.getElementById("rteElement_rte-edit-view") != null) {
contents = doc.getElementById("rteElement_rte-edit-view").innerHTML;
setTemplate(contents);
}
}
document.getElementById("template").innerHTML = props?.data?.contents;
setTemplate(props?.data?.contents);
}
}
setMyPost();
}, [props, dispatch]);
const handleSubmit = async (event) => {
setLoading(true);
event.preventDefault();
let contents = "";
if (props.page === "mypost" || props.page === "mydraftpost") {
contents = document.getElementById("template").innerHTML;
} else {
contents = rteObj.getContent().innerHTML;
}
const formData = new FormData();
formData.append("content", contents);
if (props.page === "mypost" || props.page === "mydraftpost") {
const id = props.data.id;
response = await dispatch(UpdatePost({ formData, id }));
setLoading(false);
if (response?.payload?.response?.data?.success === true) {
history.push("/home");
}
} else {
const response = await dispatch(CreatePost(formData));
setLoading(false);
if (
response?.payload?.code?.data?.success === true ||
response?.payload?.response?.data?.success === true
) {
await dispatch(sendBasicMail());
history.push("/home");
}
}
};
return (
<div className="container">
<Container component="main" maxWidth="xl">
<CssBaseline />
<div className={classes.paper}>
<form className={classes.form}>
<Grid container spacing={2}>
<Grid item xs={12}>
<div className="editor">
{props.page === undefined ? (
<textarea id="rteElement" />
) : (
<RichTextEditorComponent
height={450}
toolbarSettings={toolbarSettings}
insertImageSettings={imageSettings}
>
<div id="template">div>
<Inject
services={[
Toolbar,
HtmlEditor,
Image,
Link,
QuickToolbar,
]}
/>
RichTextEditorComponent>
)}
div>
Grid>
Grid>
{props.page === "mypost" || props.page === "mydraftpost" ? (
<React.Fragment>
<div className="submit-sec">
<Button
type="submit"
variant="contained"
onClick={handleSubmit}
color="primary"
>
Update
Button>
div>
React.Fragment>
) : (
<React.Fragment>
<div className="submit-sec">
<div className={(classes.buttons, "btn")}>
<Button
variant="contained"
color="primary"
onClick={handleSubmit}
className={classes.submit}
>
Create
Button>
div>
div>
React.Fragment>
)}
form>
div>
Container>
{loading ? (
<CommonLoading
className="loading"
type="Puff"
color="#3f51b5"
height={100}
width={100}
timeout={3000}
paddingTop={200}
/>
) : (
""
)}
div>
I created create page and update page in one component.