aboutsummaryrefslogtreecommitdiff
path: root/frontend/src/components/UploadRunDialog.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/components/UploadRunDialog.tsx')
-rw-r--r--frontend/src/components/UploadRunDialog.tsx56
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 }