diff options
| author | Wolfboy248 <georgejvindkarlsen@gmail.com> | 2024-10-29 10:09:17 +0100 |
|---|---|---|
| committer | Wolfboy248 <georgejvindkarlsen@gmail.com> | 2024-10-29 10:09:17 +0100 |
| commit | 35946dbb2feb7f9d1cbab16fb0602ce0303562e9 (patch) | |
| tree | 3ba530c1b3f5a1742ec41dfee5b74b43353619e2 /frontend/src/components/UploadRunDialog.tsx | |
| parent | Merge branch 'typescript' of https://github.com/pektezol/LeastPortalsHub into... (diff) | |
| download | lphub-35946dbb2feb7f9d1cbab16fb0602ce0303562e9.tar.gz lphub-35946dbb2feb7f9d1cbab16fb0602ce0303562e9.tar.bz2 lphub-35946dbb2feb7f9d1cbab16fb0602ce0303562e9.zip | |
refactor: upload run dialog, useMessage update, added loader spinner
Diffstat (limited to 'frontend/src/components/UploadRunDialog.tsx')
| -rw-r--r-- | frontend/src/components/UploadRunDialog.tsx | 56 |
1 files changed, 41 insertions, 15 deletions
diff --git a/frontend/src/components/UploadRunDialog.tsx b/frontend/src/components/UploadRunDialog.tsx index a0d23e7..212a792 100644 --- a/frontend/src/components/UploadRunDialog.tsx +++ b/frontend/src/components/UploadRunDialog.tsx | |||
| @@ -47,22 +47,36 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose, | |||
| 47 | const [loading, setLoading] = React.useState<boolean>(false); | 47 | const [loading, setLoading] = React.useState<boolean>(false); |
| 48 | 48 | ||
| 49 | const [dragHightlight, setDragHighlight] = React.useState<boolean>(false); | 49 | const [dragHightlight, setDragHighlight] = React.useState<boolean>(false); |
| 50 | const [dragHightlightPartner, setDragHighlightPartner] = React.useState<boolean>(false); | ||
| 50 | const fileInputRef = React.useRef<HTMLInputElement>(null); | 51 | const fileInputRef = React.useRef<HTMLInputElement>(null); |
| 51 | 52 | const fileInputRefPartner = React.useRef<HTMLInputElement>(null); | |
| 52 | const _handle_file_click = () => { | 53 | |
| 53 | fileInputRef.current?.click(); | 54 | const _handle_file_click = (host: boolean) => { |
| 55 | if (host) { | ||
| 56 | fileInputRef.current?.click(); | ||
| 57 | } else { | ||
| 58 | fileInputRefPartner.current?.click(); | ||
| 59 | } | ||
| 54 | } | 60 | } |
| 55 | 61 | ||
| 56 | const _handle_drag_over = (e: React.DragEvent<HTMLDivElement>) => { | 62 | const _handle_drag_over = (e: React.DragEvent<HTMLDivElement>, host: boolean) => { |
| 57 | e.preventDefault(); | 63 | e.preventDefault(); |
| 58 | e.stopPropagation(); | 64 | e.stopPropagation(); |
| 59 | setDragHighlight(true); | 65 | if (host) { |
| 66 | setDragHighlight(true); | ||
| 67 | } else { | ||
| 68 | setDragHighlightPartner(true); | ||
| 69 | } | ||
| 60 | } | 70 | } |
| 61 | 71 | ||
| 62 | const _handle_drag_leave = (e: React.DragEvent<HTMLDivElement>) => { | 72 | const _handle_drag_leave = (e: React.DragEvent<HTMLDivElement>, host: boolean) => { |
| 63 | e.preventDefault(); | 73 | e.preventDefault(); |
| 64 | e.stopPropagation(); | 74 | e.stopPropagation(); |
| 65 | setDragHighlight(false); | 75 | if (host) { |
| 76 | setDragHighlight(false); | ||
| 77 | } else { | ||
| 78 | setDragHighlightPartner(false); | ||
| 79 | } | ||
| 66 | } | 80 | } |
| 67 | 81 | ||
| 68 | const _handle_drop = (e: React.DragEvent<HTMLDivElement>, host: boolean) => { | 82 | const _handle_drop = (e: React.DragEvent<HTMLDivElement>, host: boolean) => { |
| @@ -70,8 +84,6 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose, | |||
| 70 | e.stopPropagation(); | 84 | e.stopPropagation(); |
| 71 | setDragHighlight(true); | 85 | setDragHighlight(true); |
| 72 | 86 | ||
| 73 | console.log(e.dataTransfer.files); | ||
| 74 | |||
| 75 | _handle_file_change(e.dataTransfer.files, host); | 87 | _handle_file_change(e.dataTransfer.files, host); |
| 76 | } | 88 | } |
| 77 | 89 | ||
| @@ -102,7 +114,6 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose, | |||
| 102 | }; | 114 | }; |
| 103 | 115 | ||
| 104 | const _handle_file_change = async (files: FileList | null, host: boolean) => { | 116 | const _handle_file_change = async (files: FileList | null, host: boolean) => { |
| 105 | console.log(files); | ||
| 106 | if (files) { | 117 | if (files) { |
| 107 | if (host) { | 118 | if (host) { |
| 108 | setUploadRunContent({ | 119 | setUploadRunContent({ |
| @@ -155,13 +166,16 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose, | |||
| 155 | 166 | ||
| 156 | const [ success, response ] = await API.post_record(token, uploadRunContent); | 167 | const [ success, response ] = await API.post_record(token, uploadRunContent); |
| 157 | await message("Upload Record", response); | 168 | await message("Upload Record", response); |
| 158 | console.log("weweew") | ||
| 159 | onClose(success); | 169 | onClose(success); |
| 170 | navigate("/profile"); | ||
| 160 | } | 171 | } |
| 161 | }; | 172 | }; |
| 162 | 173 | ||
| 163 | React.useEffect(() => { | 174 | React.useEffect(() => { |
| 164 | if (open) { | 175 | if (open) { |
| 176 | |||
| 177 | setDragHighlightPartner(false); | ||
| 178 | setDragHighlight(false); | ||
| 165 | _handle_game_select("1", "Portal 2 - Singleplayer"); // a different approach?. | 179 | _handle_game_select("1", "Portal 2 - Singleplayer"); // a different approach?. |
| 166 | } | 180 | } |
| 167 | }, [open]); | 181 | }, [open]); |
| @@ -208,14 +222,14 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose, | |||
| 208 | </div> | 222 | </div> |
| 209 | </div> | 223 | </div> |
| 210 | <span>Host Demo</span> | 224 | <span>Host Demo</span> |
| 211 | <div onClick={_handle_file_click} onDragOver={(e) => {_handle_drag_over(e)}} onDrop={(e) => {_handle_drop(e, true)}} onDragLeave={(e) => {_handle_drag_leave(e)}} className={`upload-run-drag-area ${dragHightlight ? "upload-run-drag-area-highlight" : ""} ${uploadRunContent.host_demo ? "upload-run-drag-area-hidden" : ""}`}> | 225 | <div onClick={() => {_handle_file_click(true)}} onDragOver={(e) => {_handle_drag_over(e, true)}} onDrop={(e) => {_handle_drop(e, true)}} onDragLeave={(e) => {_handle_drag_leave(e, true)}} className={`upload-run-drag-area ${dragHightlight ? "upload-run-drag-area-highlight" : ""} ${uploadRunContent.host_demo ? "upload-run-drag-area-hidden" : ""}`}> |
| 212 | <input ref={fileInputRef} type="file" name="host_demo" id="host_demo" accept=".dem" onChange={(e) => _handle_file_change(e.target.files, true)} /> | 226 | <input ref={fileInputRef} type="file" name="host_demo" id="host_demo" accept=".dem" onChange={(e) => _handle_file_change(e.target.files, true)} /> |
| 213 | {!uploadRunContent.host_demo ? | 227 | {!uploadRunContent.host_demo ? |
| 214 | <div> | 228 | <div> |
| 215 | <span>Drag and drop</span> | 229 | <span>Drag and drop</span> |
| 216 | <div> | 230 | <div> |
| 217 | <span>Or click here</span> | 231 | <span style={{fontFamily: "BarlowSemiCondensed-Regular"}}>Or click here</span><br/> |
| 218 | <button>Upload</button> | 232 | <button style={{borderRadius: "24px", padding: "5px 8px", margin: "5px 0px"}}>Upload</button> |
| 219 | </div> | 233 | </div> |
| 220 | </div> | 234 | </div> |
| 221 | : null} | 235 | : null} |
| @@ -227,7 +241,19 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose, | |||
| 227 | ( | 241 | ( |
| 228 | <> | 242 | <> |
| 229 | <span>Partner Demo</span> | 243 | <span>Partner Demo</span> |
| 230 | <input type="file" name="partner_demo" id="partner_demo" accept=".dem" onChange={(e) => _handle_file_change(e.target.files, false)} /> | 244 | <div onClick={() => {_handle_file_click(false)}} onDragOver={(e) => {_handle_drag_over(e, false)}} onDrop={(e) => {_handle_drop(e, false)}} onDragLeave={(e) => {_handle_drag_leave(e, false)}} className={`upload-run-drag-area ${dragHightlightPartner ? "upload-run-drag-area-highlight-partner" : ""} ${uploadRunContent.partner_demo ? "upload-run-drag-area-hidden" : ""}`}> |
| 245 | <input ref={fileInputRefPartner} type="file" name="partner_demo" id="partner_demo" accept=".dem" onChange={(e) => _handle_file_change(e.target.files, false)} /> {!uploadRunContent.partner_demo ? | ||
| 246 | <div> | ||
| 247 | <span>Drag and drop</span> | ||
| 248 | <div> | ||
| 249 | <span>Or click here</span><br/> | ||
| 250 | <button>Upload</button> | ||
| 251 | </div> | ||
| 252 | </div> | ||
| 253 | : null} | ||
| 254 | |||
| 255 | <span>{uploadRunContent.partner_demo?.name}</span> | ||
| 256 | </div> | ||
| 231 | </> | 257 | </> |
| 232 | ) | 258 | ) |
| 233 | } | 259 | } |