aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/components/UploadRunDialog.tsx
diff options
context:
space:
mode:
authorWolfboy248 <georgejvindkarlsen@gmail.com>2024-10-28 11:35:04 +0100
committerWolfboy248 <georgejvindkarlsen@gmail.com>2024-10-28 11:35:04 +0100
commitb229a524fae8908928f16832e8e4d4c604cefa3e (patch)
tree0fec3ae174394d1cb6baf4abfe285770054821c4 /frontend/src/components/UploadRunDialog.tsx
parentrefactor: hook updated (diff)
downloadlphub-b229a524fae8908928f16832e8e4d4c604cefa3e.tar.gz
lphub-b229a524fae8908928f16832e8e4d4c604cefa3e.tar.bz2
lphub-b229a524fae8908928f16832e8e4d4c604cefa3e.zip
refactor: uploadrundialog
Diffstat (limited to 'frontend/src/components/UploadRunDialog.tsx')
-rw-r--r--frontend/src/components/UploadRunDialog.tsx57
1 files changed, 50 insertions, 7 deletions
diff --git a/frontend/src/components/UploadRunDialog.tsx b/frontend/src/components/UploadRunDialog.tsx
index 0476d6f..8081643 100644
--- a/frontend/src/components/UploadRunDialog.tsx
+++ b/frontend/src/components/UploadRunDialog.tsx
@@ -49,6 +49,35 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
49 49
50 const [loading, setLoading] = React.useState<boolean>(false); 50 const [loading, setLoading] = React.useState<boolean>(false);
51 51
52 const [dragHightlight, setDragHighlight] = React.useState<boolean>(false);
53 const fileInputRef = React.useRef<HTMLInputElement>(null);
54
55 const _handle_file_click = () => {
56 fileInputRef.current?.click();
57 }
58
59 const _handle_drag_over = (e: React.DragEvent<HTMLDivElement>) => {
60 e.preventDefault();
61 e.stopPropagation();
62 setDragHighlight(true);
63 }
64
65 const _handle_drag_leave = (e: React.DragEvent<HTMLDivElement>) => {
66 e.preventDefault();
67 e.stopPropagation();
68 setDragHighlight(false);
69 }
70
71 const _handle_drop = (e: React.DragEvent<HTMLDivElement>, host: boolean) => {
72 e.preventDefault();
73 e.stopPropagation();
74 setDragHighlight(true);
75
76 console.log(e.dataTransfer.files);
77
78 _handle_file_change(e.dataTransfer.files, host);
79 }
80
52 const _handle_dropdowns = (dropdown: number) => { 81 const _handle_dropdowns = (dropdown: number) => {
53 setDropdown1Vis(false); 82 setDropdown1Vis(false);
54 setDropdown2Vis(false); 83 setDropdown2Vis(false);
@@ -75,17 +104,18 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
75 setLoading(false); 104 setLoading(false);
76 }; 105 };
77 106
78 const _handle_file_change = async (e: React.ChangeEvent<HTMLInputElement>, host: boolean) => { 107 const _handle_file_change = async (files: FileList | null, host: boolean) => {
79 if (e.target.files) { 108 console.log(files);
109 if (files) {
80 if (host) { 110 if (host) {
81 setUploadRunContent({ 111 setUploadRunContent({
82 ...uploadRunContent, 112 ...uploadRunContent,
83 host_demo: e.target.files[0], 113 host_demo: files[0],
84 }); 114 });
85 } else { 115 } else {
86 setUploadRunContent({ 116 setUploadRunContent({
87 ...uploadRunContent, 117 ...uploadRunContent,
88 partner_demo: e.target.files[0], 118 partner_demo: files[0],
89 }); 119 });
90 } 120 }
91 } 121 }
@@ -130,7 +160,7 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
130 } 160 }
131 161
132 const response = await API.post_record(token, uploadRunContent); 162 const response = await API.post_record(token, uploadRunContent);
133 message("Message", response); 163 await message("Message", response);
134 // navigate(0); 164 // navigate(0);
135 onClose(); 165 onClose();
136 } 166 }
@@ -184,13 +214,26 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
184 </div> 214 </div>
185 </div> 215 </div>
186 <span>Host Demo</span> 216 <span>Host Demo</span>
187 <input type="file" name="host_demo" id="host_demo" accept=".dem" onChange={(e) => _handle_file_change(e, true)} /> 217 <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" : ""}`}>
218 <input ref={fileInputRef} type="file" name="host_demo" id="host_demo" accept=".dem" onChange={(e) => _handle_file_change(e.target.files, true)} />
219 {!uploadRunContent.host_demo ?
220 <div>
221 <span>Drag and drop</span>
222 <div>
223 <span>Or click here</span>
224 <button>Upload</button>
225 </div>
226 </div>
227 : null}
228
229 <span>{uploadRunContent.host_demo?.name}</span>
230 </div>
188 { 231 {
189 games[selectedGameID].is_coop && 232 games[selectedGameID].is_coop &&
190 ( 233 (
191 <> 234 <>
192 <span>Partner Demo</span> 235 <span>Partner Demo</span>
193 <input type="file" name="partner_demo" id="partner_demo" accept=".dem" onChange={(e) => _handle_file_change(e, false)} /> 236 <input type="file" name="partner_demo" id="partner_demo" accept=".dem" onChange={(e) => _handle_file_change(e.target.files, false)} />
194 </> 237 </>
195 ) 238 )
196 } 239 }