diff --git a/src/components/helpWithAi/chat/ImageBlock.jsx b/src/components/helpWithAi/chat/ImageBlock.jsx
index 9569ba5..029807c 100644
--- a/src/components/helpWithAi/chat/ImageBlock.jsx
+++ b/src/components/helpWithAi/chat/ImageBlock.jsx
@@ -29,6 +29,13 @@ const SuggestImage = ({ imageSrc }) => {
preview={{
mask: 크게 보기,
toolbarRender: () => {},
+ imageRender: (_, { image }) => (
+
+ ),
}}
className={"object-cover"}
rootClassName={"block"}
diff --git a/src/hooks/canvas/useDrawEvents.js b/src/hooks/canvas/useDrawEvents.js
index 24eb235..2045125 100644
--- a/src/hooks/canvas/useDrawEvents.js
+++ b/src/hooks/canvas/useDrawEvents.js
@@ -3,7 +3,7 @@ import { useDrawStateStore } from "../../stores/DrawState";
import { useDrawingToolStore } from "../../stores/DrawingToolStore";
export const useDrawEvents = (canvasRef, keyword) => {
- const { setDrawState } = useDrawStateStore();
+ const { setDrawState, drawState } = useDrawStateStore();
const { drawingTools } = useDrawingToolStore();
const { brushSize, color, drawingMode } = drawingTools;
@@ -21,6 +21,11 @@ export const useDrawEvents = (canvasRef, keyword) => {
setContext(ctx);
}, 0);
}
+ if (drawState[keyword]) {
+ const canvas = canvasRef.current;
+ const ctx = canvas.getContext("2d");
+ ctx.putImageData(drawState[keyword].canvasState, 0, 0);
+ }
}, [canvasRef]);
// 색과 두께 변경 시 마다 호출
diff --git a/src/hooks/canvas/useResetCanvas.js b/src/hooks/canvas/useResetCanvas.js
index 1ecc736..a3d15cc 100644
--- a/src/hooks/canvas/useResetCanvas.js
+++ b/src/hooks/canvas/useResetCanvas.js
@@ -1,11 +1,14 @@
import { useEffect } from "react";
import { useAiImageStore } from "../../stores/AiImagesStore";
import { useKeywordStore } from "../../stores/KeywordStore";
+import { useDrawStateStore } from "../../stores/DrawState";
const useResetCanvas = () => {
const { resetAiImages } = useAiImageStore();
const { resetSelectedKeyword } = useKeywordStore();
+ const { resetCanvasState } = useDrawStateStore();
useEffect(() => {
+ resetCanvasState();
resetAiImages();
resetSelectedKeyword();
}, []);
diff --git a/src/pages/draws/ControlPhotoOpacity.jsx b/src/pages/draws/ControlPhotoOpacity.jsx
index 734582c..97656d1 100644
--- a/src/pages/draws/ControlPhotoOpacity.jsx
+++ b/src/pages/draws/ControlPhotoOpacity.jsx
@@ -4,6 +4,7 @@ import { AiProfile } from "../../components/helpWithAi/chat/Chat";
import { useAiImageStore } from "../../stores/AiImagesStore";
import { useKeywordStore } from "../../stores/KeywordStore";
import { useNavigate } from "react-router-dom";
+import { useDrawStateStore } from "../../stores/DrawState";
import useGoDiaryDraw from "../../hooks/canvas/useGoDiaryDraw";
export const CONTROL_PHOTO_OPACITY_PAGE_PATH = "/diary/draw/ai/edit";
@@ -97,6 +98,7 @@ const Buttons = ({ selectedOpacity }) => {
const { AiImages, setAiImages, removeAiImage } = useAiImageStore();
const { goDiaryDraw } = useGoDiaryDraw();
+ const { resetOneCavnasState } = useDrawStateStore();
const handleClickCancelButton = () => {
removeAiImage(selectedKeyword.keywordId);
@@ -108,6 +110,7 @@ const Buttons = ({ selectedOpacity }) => {
AiImages[selectedKeyword.keywordId].imageUrl,
OPACITY_BUTTON[selectedOpacity].value
);
+ resetOneCavnasState(selectedKeyword.keywordId);
goDiaryDraw();
};
return (
diff --git a/src/stores/DrawState.js b/src/stores/DrawState.js
index 85a0173..9a84492 100644
--- a/src/stores/DrawState.js
+++ b/src/stores/DrawState.js
@@ -119,4 +119,15 @@ export const useDrawStateStore = create((set) => ({
};
});
},
+
+ resetCanvasState: () => {
+ set({ drawState: {} });
+ },
+
+ resetOneCavnasState: (keyword) => {
+ set((state) => {
+ const { [keyword]: _, ...newDrawState } = state.drawState; // keyword를 제외한 나머지 속성으로 새로운 객체를 생성합니다.
+ return { drawState: newDrawState };
+ });
+ },
}));