aboutsummaryrefslogtreecommitdiff
path: root/frontend
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2024-10-22 00:56:51 +0300
committerArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2024-10-22 00:56:51 +0300
commitc619cda228b116b3c7be43e2654f7297896f9199 (patch)
tree23ddddf968d44f841aabc55f47a9e3f6802edb22 /frontend
parentbackend: no need for partner_id for record submission (diff)
downloadlphub-c619cda228b116b3c7be43e2654f7297896f9199.tar.gz
lphub-c619cda228b116b3c7be43e2654f7297896f9199.tar.bz2
lphub-c619cda228b116b3c7be43e2654f7297896f9199.zip
frontend: try smth
Diffstat (limited to 'frontend')
-rw-r--r--frontend/src/api/Maps.tsx3
-rw-r--r--frontend/src/components/Sidebar.tsx2
-rw-r--r--frontend/src/components/UploadRunDialog.tsx24
-rw-r--r--frontend/src/types/Content.tsx1
4 files changed, 12 insertions, 18 deletions
diff --git a/frontend/src/api/Maps.tsx b/frontend/src/api/Maps.tsx
index b6a6bad..2209788 100644
--- a/frontend/src/api/Maps.tsx
+++ b/frontend/src/api/Maps.tsx
@@ -76,11 +76,10 @@ export const delete_map_discussion = async (token: string, map_id: string, discu
76}; 76};
77 77
78export const post_record = async (token: string, run: UploadRunContent): Promise<string> => { 78export const post_record = async (token: string, run: UploadRunContent): Promise<string> => {
79 if (run.partner_demo && run.partner_id) { 79 if (run.partner_demo) {
80 const response = await axios.postForm(url(`maps/${run.map_id}/record`), { 80 const response = await axios.postForm(url(`maps/${run.map_id}/record`), {
81 "host_demo": run.host_demo, 81 "host_demo": run.host_demo,
82 "partner_demo": run.partner_demo, 82 "partner_demo": run.partner_demo,
83 "partner_id": run.partner_id,
84 }, { 83 }, {
85 headers: { 84 headers: {
86 "Authorization": token, 85 "Authorization": token,
diff --git a/frontend/src/components/Sidebar.tsx b/frontend/src/components/Sidebar.tsx
index c5c91db..5757183 100644
--- a/frontend/src/components/Sidebar.tsx
+++ b/frontend/src/components/Sidebar.tsx
@@ -154,7 +154,7 @@ const Sidebar: React.FC<SidebarProps> = ({ setToken, profile, setProfile, onUplo
154 154
155 { 155 {
156 profile && profile.profile ? 156 profile && profile.profile ?
157 <button id='upload-run' className='submit-run-button' onClick={() => onUploadRun()}><img src={UploadIcon} alt="upload" /><span>Submit&nbsp;a&nbsp;Run</span></button> 157 <button id='upload-run' className='submit-run-button' onClick={() => onUploadRun()}><img src={UploadIcon} alt="upload" /><span>Upload&nbsp;Record</span></button>
158 : 158 :
159 <span></span> 159 <span></span>
160 } 160 }
diff --git a/frontend/src/components/UploadRunDialog.tsx b/frontend/src/components/UploadRunDialog.tsx
index f3258e8..a92a5fb 100644
--- a/frontend/src/components/UploadRunDialog.tsx
+++ b/frontend/src/components/UploadRunDialog.tsx
@@ -18,8 +18,12 @@ interface UploadRunDialogProps {
18} 18}
19 19
20const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose, games }) => { 20const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose, games }) => {
21
22 const [confirmMessage, setConfirmMessage] = React.useState<string>("Are you sure you want to upload this demo?");
23
21 const { message, MessageDialogComponent } = useMessage(); 24 const { message, MessageDialogComponent } = useMessage();
22 const { confirm, ConfirmDialogComponent } = useConfirm("Upload demo?", "Are you sure you want to upload this demo?"); 25 const { confirm, ConfirmDialogComponent } = useConfirm("Upload demo?", confirmMessage);
26
23 27
24 const navigate = useNavigate(); 28 const navigate = useNavigate();
25 29
@@ -27,7 +31,6 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
27 map_id: 0, 31 map_id: 0,
28 host_demo: null, 32 host_demo: null,
29 partner_demo: null, 33 partner_demo: null,
30 partner_id: undefined,
31 }); 34 });
32 35
33 const [currentMap, setCurrentMap] = React.useState<string>(""); 36 const [currentMap, setCurrentMap] = React.useState<string>("");
@@ -65,7 +68,6 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
65 map_id: gameMaps[0].id, 68 map_id: gameMaps[0].id,
66 host_demo: null, 69 host_demo: null,
67 partner_demo: null, 70 partner_demo: null,
68 partner_id: undefined,
69 }); 71 });
70 _set_current_map(gameMaps[0].name); 72 _set_current_map(gameMaps[0].name);
71 setSelectedGameID(parseInt(game_id) - 1); 73 setSelectedGameID(parseInt(game_id) - 1);
@@ -98,9 +100,6 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
98 } else if (uploadRunContent.partner_demo === null) { 100 } else if (uploadRunContent.partner_demo === null) {
99 message("Error", "You must select a partner demo to upload.") 101 message("Error", "You must select a partner demo to upload.")
100 return 102 return
101 } else if (uploadRunContent.partner_id === undefined) {
102 message("Error", "You must specify your partner.")
103 return
104 } 103 }
105 } else { 104 } else {
106 if (uploadRunContent.host_demo === null) { 105 if (uploadRunContent.host_demo === null) {
@@ -109,18 +108,20 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
109 } 108 }
110 } 109 }
111 const demo = SourceDemoParser.default() 110 const demo = SourceDemoParser.default()
112 .setOptions({ packets: true }) 111 .setOptions({ packets: true, header: true })
113 .parse(await uploadRunContent.host_demo.arrayBuffer()); 112 .parse(await uploadRunContent.host_demo.arrayBuffer());
114 const scoreboard = demo.findPacket<NetMessages.SvcUserMessage>((message) => { 113 const scoreboard = demo.findPacket<NetMessages.SvcUserMessage>((message) => {
115 return message instanceof NetMessages.SvcUserMessage && message.userMessage instanceof ScoreboardTempUpdate; 114 return message instanceof NetMessages.SvcUserMessage && message.userMessage instanceof ScoreboardTempUpdate;
116 }) 115 })
117 116
118 if (!scoreboard) { 117 if (!scoreboard) {
119 message("Error", "Error while processing demo: Unable to get scoreboard result. Is this not a CM demo?") 118 message("Error", "Error while processing demo: Unable to get scoreboard result. Either there is a demo that is corrupt or haven't been recorded in challenge mode.")
120 return 119 return
121 } 120 }
122 const { portalScore, timeScore } = scoreboard.userMessage?.as<ScoreboardTempUpdate>() ?? {}; 121 const { portalScore, timeScore } = scoreboard.userMessage?.as<ScoreboardTempUpdate>() ?? {};
123 console.log(`Portal count: ${portalScore}. Ticks: ${timeScore}.`); 122 console.log(`Map Name: ${demo.mapName}. Portal count: ${portalScore}. Ticks: ${timeScore}.`);
123
124 setConfirmMessage(`Map Name: ${demo.mapName}\nPortal count: ${portalScore}\nTicks: ${timeScore}\n\nAre you sure you want to upload this demo?`)
124 125
125 const userConfirmed = await confirm(); 126 const userConfirmed = await confirm();
126 127
@@ -190,11 +191,6 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose,
190 <> 191 <>
191 <span>Partner Demo</span> 192 <span>Partner Demo</span>
192 <input type="file" name="partner_demo" id="partner_demo" accept=".dem" onChange={(e) => _handle_file_change(e, false)} /> 193 <input type="file" name="partner_demo" id="partner_demo" accept=".dem" onChange={(e) => _handle_file_change(e, false)} />
193 <span>Partner ID</span>
194 <input type="text" name="partner_id" id="partner_id" onChange={(e) => setUploadRunContent({
195 ...uploadRunContent,
196 partner_id: e.target.value,
197 })} />
198 </> 194 </>
199 ) 195 )
200 } 196 }
diff --git a/frontend/src/types/Content.tsx b/frontend/src/types/Content.tsx
index e6e0cb1..42a6917 100644
--- a/frontend/src/types/Content.tsx
+++ b/frontend/src/types/Content.tsx
@@ -21,5 +21,4 @@ export interface UploadRunContent {
21 map_id: number; 21 map_id: number;
22 host_demo: File | null; 22 host_demo: File | null;
23 partner_demo: File | null; 23 partner_demo: File | null;
24 partner_id?: string;
25}; 24};