From c6ef6749d9e878daee576ed45ae3e1f74f8db79c Mon Sep 17 00:00:00 2001
From: Albin Henriksson <albhe428@student.liu.se>
Date: Thu, 22 Apr 2021 13:20:36 +0200
Subject: [PATCH] Fix client

---
 .../PresentationEditorPage.tsx                | 14 ++++++-------
 .../components/RndComponent.tsx               |  6 ++----
 .../components/SlideSettings.tsx              | 20 +++++++++----------
 .../components/TextComponentEdit.tsx          |  5 +++--
 4 files changed, 22 insertions(+), 23 deletions(-)

diff --git a/client/src/pages/presentationEditor/PresentationEditorPage.tsx b/client/src/pages/presentationEditor/PresentationEditorPage.tsx
index 09ef5181..4087d6c7 100644
--- a/client/src/pages/presentationEditor/PresentationEditorPage.tsx
+++ b/client/src/pages/presentationEditor/PresentationEditorPage.tsx
@@ -36,7 +36,7 @@ import {
 const initialState = {
   mouseX: null,
   mouseY: null,
-  slideOrder: null,
+  slideId: null,
 }
 
 const leftDrawerWidth = 150
@@ -111,15 +111,15 @@ const PresentationEditorPage: React.FC = () => {
   const [contextState, setContextState] = React.useState<{
     mouseX: null | number
     mouseY: null | number
-    slideOrder: null | number
+    slideId: null | number
   }>(initialState)
 
-  const handleRightClick = (event: React.MouseEvent<HTMLDivElement>, slideOrder: number) => {
+  const handleRightClick = (event: React.MouseEvent<HTMLDivElement>, slideId: number) => {
     event.preventDefault()
     setContextState({
       mouseX: event.clientX - 2,
       mouseY: event.clientY - 4,
-      slideOrder: slideOrder,
+      slideId: slideId,
     })
   }
 
@@ -128,13 +128,13 @@ const PresentationEditorPage: React.FC = () => {
   }
 
   const handleRemoveSlide = async () => {
-    await axios.delete(`/competitions/${id}/slides/${contextState.slideOrder}`)
+    await axios.delete(`/competitions/${id}/slides/${contextState.slideId}`)
     dispatch(getEditorCompetition(id))
     setContextState(initialState)
   }
 
   const handleDuplicateSlide = async () => {
-    await axios.post(`/competitions/${id}/slides/${contextState.slideOrder}/copy`)
+    await axios.post(`/competitions/${id}/slides/${contextState.slideId}/copy`)
     dispatch(getEditorCompetition(id))
     setContextState(initialState)
   }
@@ -214,7 +214,7 @@ const PresentationEditorPage: React.FC = () => {
                   key={slide.id}
                   selected={slide.id === activeSlideId}
                   onClick={() => setActiveSlideId(slide.id)}
-                  onContextMenu={(event) => handleRightClick(event, slide.order)}
+                  onContextMenu={(event) => handleRightClick(event, slide.id)}
                 >
                   {renderSlideIcon(slide)}
                   <ListItemText primary={`Sida ${slide.order + 1}`} />
diff --git a/client/src/pages/presentationEditor/components/RndComponent.tsx b/client/src/pages/presentationEditor/components/RndComponent.tsx
index b1b586ff..890e5160 100644
--- a/client/src/pages/presentationEditor/components/RndComponent.tsx
+++ b/client/src/pages/presentationEditor/components/RndComponent.tsx
@@ -20,15 +20,13 @@ const RndComponent = ({ component }: ImageComponentProps) => {
   const competitionId = useAppSelector((state) => state.editor.competition.id)
   const slideId = useAppSelector((state) => state.editor.activeSlideId)
   const handleUpdatePos = (pos: Position) => {
-    // TODO: change path to /slides/${slideId}
-    axios.put(`/competitions/${competitionId}/slides/0/components/${component.id}`, {
+    axios.put(`/competitions/${competitionId}/slides/${slideId}/components/${component.id}`, {
       x: pos.x,
       y: pos.y,
     })
   }
   const handleUpdateSize = (size: Size) => {
-    // TODO: change path to /slides/${slideId}
-    axios.put(`/competitions/${competitionId}/slides/0/components/${component.id}`, {
+    axios.put(`/competitions/${competitionId}/slides/${slideId}/components/${component.id}`, {
       w: size.w,
       h: size.h,
     })
diff --git a/client/src/pages/presentationEditor/components/SlideSettings.tsx b/client/src/pages/presentationEditor/components/SlideSettings.tsx
index e6be5c15..7cc78b34 100644
--- a/client/src/pages/presentationEditor/components/SlideSettings.tsx
+++ b/client/src/pages/presentationEditor/components/SlideSettings.tsx
@@ -133,7 +133,7 @@ const SlideSettings: React.FC = () => {
         if (selectedSlideType === 0) {
           // Change slide type from a question type to information
           await axios
-            .delete(`/competitions/${id}/slides/${activeSlide.order}/questions/${activeSlide.questions[0].id}`)
+            .delete(`/competitions/${id}/slides/${activeSlide.id}/questions/${activeSlide.questions[0].id}`)
             .then(() => {
               dispatch(getEditorCompetition(id))
             })
@@ -141,10 +141,10 @@ const SlideSettings: React.FC = () => {
         } else {
           // Change slide type from question type to another question type
           await axios
-            .delete(`/competitions/${id}/slides/${activeSlide.order}/questions/${activeSlide.questions[0].id}`)
+            .delete(`/competitions/${id}/slides/${activeSlide.id}/questions/${activeSlide.questions[0].id}`)
             .catch(console.log)
           await axios
-            .post(`/competitions/${id}/slides/${activeSlide.order}/questions`, {
+            .post(`/competitions/${id}/slides/${activeSlide.id}/questions`, {
               name: 'Ny fråga',
               total_score: 0,
               type_id: selectedSlideType,
@@ -158,7 +158,7 @@ const SlideSettings: React.FC = () => {
       } else if (selectedSlideType !== 0) {
         // Change slide type from information to a question type
         await axios
-          .post(`/competitions/${id}/slides/${activeSlide.order}/questions`, {
+          .post(`/competitions/${id}/slides/${activeSlide.id}/questions`, {
             name: 'Ny fråga',
             total_score: 0,
             type_id: selectedSlideType,
@@ -208,10 +208,10 @@ const SlideSettings: React.FC = () => {
   const addAlternative = async () => {
     if (activeSlide && activeSlide.questions[0]) {
       await axios
-        .post(
-          `/competitions/${id}/slides/${activeSlide?.order}/questions/${activeSlide?.questions[0].id}/alternatives`,
-          { text: '', value: 0 }
-        )
+        .post(`/competitions/${id}/slides/${activeSlide?.id}/questions/${activeSlide?.questions[0].id}/alternatives`, {
+          text: '',
+          value: 0,
+        })
         .then(() => {
           dispatch(getEditorCompetition(id))
         })
@@ -237,7 +237,7 @@ const SlideSettings: React.FC = () => {
 
   const handleAddText = async () => {
     if (activeSlide) {
-      await axios.post(`/competitions/${id}/slides/${activeSlide?.order}/components`, {
+      await axios.post(`/competitions/${id}/slides/${activeSlide?.id}/components`, {
         type_id: 1,
         data: { text: 'Ny text' },
         w: 315,
@@ -261,7 +261,7 @@ const SlideSettings: React.FC = () => {
     setTimer(+event.target.value)
     if (activeSlide) {
       await axios
-        .put(`/competitions/${id}/slides/${activeSlide.order}`, { timer: event.target.value })
+        .put(`/competitions/${id}/slides/${activeSlide.id}`, { timer: event.target.value })
         .then(() => {
           dispatch(getEditorCompetition(id))
         })
diff --git a/client/src/pages/presentationEditor/components/TextComponentEdit.tsx b/client/src/pages/presentationEditor/components/TextComponentEdit.tsx
index 92202993..e0f0d5b4 100644
--- a/client/src/pages/presentationEditor/components/TextComponentEdit.tsx
+++ b/client/src/pages/presentationEditor/components/TextComponentEdit.tsx
@@ -20,6 +20,7 @@ const TextComponentEdit = ({ component }: ImageComponentProps) => {
   const competitionId = useAppSelector((state) => state.editor.competition.id)
   const [content, setContent] = useState('')
   const [timerHandle, setTimerHandle] = React.useState<number | undefined>(undefined)
+  const activeSlideId = useAppSelector((state) => state.editor.activeSlideId)
   const dispatch = useAppDispatch()
 
   useEffect(() => {
@@ -36,7 +37,7 @@ const TextComponentEdit = ({ component }: ImageComponentProps) => {
     setTimerHandle(
       window.setTimeout(async () => {
         console.log('Content was updated on server. id: ', component.id)
-        await axios.put(`/competitions/${competitionId}/slides/0/components/${component.id}`, {
+        await axios.put(`/competitions/${competitionId}/slides/${activeSlideId}/components/${component.id}`, {
           data: { ...component.data, text: a },
         })
         dispatch(getEditorCompetition(id))
@@ -45,7 +46,7 @@ const TextComponentEdit = ({ component }: ImageComponentProps) => {
   }
 
   const handleDeleteText = async (componentId: number) => {
-    await axios.delete(`/competitions/${id}/slides/0/components/${componentId}`)
+    await axios.delete(`/competitions/${id}/slides/${activeSlideId}/components/${componentId}`)
     dispatch(getEditorCompetition(id))
   }
 
-- 
GitLab