From 4d15347850eca9f42d18ade8b76061cbf26a890c Mon Sep 17 00:00:00 2001 From: anshg1214 Date: Sun, 29 Oct 2023 11:38:44 +0000 Subject: [PATCH 1/4] feat: Show already selected achievements --- src/client/components/input/drag-and-drop.tsx | 38 +++++++++++++------ .../pages/parts/editor-achievements.js | 19 ++++++++-- src/client/controllers/editor/achievement.js | 1 + src/server/routes/editor.tsx | 14 +++++++ 4 files changed, 57 insertions(+), 15 deletions(-) diff --git a/src/client/components/input/drag-and-drop.tsx b/src/client/components/input/drag-and-drop.tsx index 7ec2ec3fa9..10f99b8ab2 100644 --- a/src/client/components/input/drag-and-drop.tsx +++ b/src/client/components/input/drag-and-drop.tsx @@ -33,8 +33,8 @@ const {useState, useCallback} = React; */ type Achievement = { name: string; - src: string; - id: string; + badgeUrl: string; + id: number; }; /** @@ -44,6 +44,7 @@ type Achievement = { */ type Props = { name: string; + initialAchievement?: Achievement; }; /** @@ -53,16 +54,14 @@ type Props = { * @param {Props} props - The props object containing the following: * @returns {JSX.Element} A React component that displays a drag-and-drop card for an achievement. */ -function DragAndDrop({name}: Props): JSX.Element { - const [achievement, setAchievement] = useState({ - name: 'drag badge to set', - src: '/images/blankbadge.svg' - }); +function DragAndDrop({name, initialAchievement}: Props): JSX.Element { + const [achievement, setAchievement] = useState(initialAchievement); const handleClick = useCallback((event: React.MouseEvent) => { event.preventDefault(); setAchievement({ - name: 'drag badge to set', - src: '/images/blankbadge.svg' + badgeUrl: '/images/blankbadge.svg', + id: null, + name: 'drag badge to set' }); }); const handleDragOver = useCallback((event: React.DragEvent) => { @@ -78,7 +77,11 @@ function DragAndDrop({name}: Props): JSX.Element { catch (error) { return; } - setAchievement(data); + setAchievement({ + badgeUrl: data.src, + id: data.id, + name: data.name + }); }); return ( @@ -98,7 +101,7 @@ function DragAndDrop({name}: Props): JSX.Element {
@@ -111,7 +114,18 @@ function DragAndDrop({name}: Props): JSX.Element { DragAndDrop.displayName = 'DragAndDrop'; DragAndDrop.propTypes = { + initialAchievement: PropTypes.shape({ + badgeUrl: PropTypes.string, + id: PropTypes.number, + name: PropTypes.string.isRequired + }), name: PropTypes.string.isRequired }; +DragAndDrop.defaultProps = { + initialAchievement: { + badgeUrl: '/images/blankbadge.svg', + name: 'drag badge to set' + } +}; export default DragAndDrop; diff --git a/src/client/components/pages/parts/editor-achievements.js b/src/client/components/pages/parts/editor-achievements.js index e09b994808..bc0033408b 100644 --- a/src/client/components/pages/parts/editor-achievements.js +++ b/src/client/components/pages/parts/editor-achievements.js @@ -39,6 +39,7 @@ class EditorAchievementTab extends React.Component { */ constructor(props) { super(props); + this.currAchievement = props.currAchievement; this.state = { achievement: props.achievement, editor: props.editor @@ -91,9 +92,18 @@ class EditorAchievementTab extends React.Component { method="post" > - - - + + +