From fb2290a2867b4b6b6b8e88d31d215461f11da67e Mon Sep 17 00:00:00 2001
From: "guilhem.carron" <gcarron@grandlyon.com>
Date: Mon, 2 Aug 2021 11:35:17 +0200
Subject: [PATCH] Add is touched editor

---
 src/components/Editing/Editing.tsx | 30 +++++++++++++++++++++++++-----
 1 file changed, 25 insertions(+), 5 deletions(-)

diff --git a/src/components/Editing/Editing.tsx b/src/components/Editing/Editing.tsx
index feceb9b2..2111a565 100644
--- a/src/components/Editing/Editing.tsx
+++ b/src/components/Editing/Editing.tsx
@@ -10,8 +10,10 @@ const Editing: React.FC = () => {
   const [date, setDate] = useState<Date>(new Date())
   const [header, setHeader] = useState<string>('')
   const [quote, setQuote] = useState<string>('')
+  const [isTouched, setIsTouched] = useState<boolean>(false)
   const { user }: any = useContext(UserContext)
-  const handleSave = async () => {
+
+  const handleSave = async (): Promise<void> => {
     const monthlyNewsService = new MonthlyNewsService()
     await monthlyNewsService.createMonthlyReport(
       date,
@@ -24,11 +26,25 @@ const Editing: React.FC = () => {
     setQuote('')
     setHeader('')
   }, [])
+
   const isEmpty = (): boolean => {
-    if (quote !== '' || header !== '') {
+    if ((quote !== '' || header !== '') && isTouched) {
       return false
     } else return true
   }
+
+  const handleEditorChange = (
+    value: string,
+    type: 'header' | 'quote'
+  ): void => {
+    setIsTouched(true)
+    if (type === 'header') {
+      setHeader(value)
+    } else {
+      setQuote(value)
+    }
+  }
+
   useEffect(() => {
     async function getCurrentMonthlyNews() {
       const monthlyNewsService = new MonthlyNewsService()
@@ -37,10 +53,10 @@ const Editing: React.FC = () => {
         date.getMonth(),
         user.xsrftoken
       )
-      console.log('news', news)
       if (news) {
         setHeader(news.header)
         setQuote(news.quote)
+        setIsTouched(false)
       }
     }
     getCurrentMonthlyNews()
@@ -67,7 +83,9 @@ const Editing: React.FC = () => {
                 'undo redo | bold italic underline | alignleft aligncenter alignright | code',
             }}
             value={header}
-            onEditorChange={(newHeader, editor) => setHeader(newHeader)}
+            onEditorChange={(newHeader, editor) =>
+              handleEditorChange(newHeader, 'header')
+            }
           />
           <div className="subtitle">
             <p className="title">Citation du mois</p>
@@ -81,7 +99,9 @@ const Editing: React.FC = () => {
                 'undo redo | bold italic underline | alignleft aligncenter alignright | code',
             }}
             value={quote}
-            onEditorChange={(newQuote, editor) => setQuote(newQuote)}
+            onEditorChange={(newQuote, editor) =>
+              handleEditorChange(newQuote, 'quote')
+            }
           />
           <button className="btnCancel" onClick={handleCancel}>
             Annuler
-- 
GitLab