diff options
Diffstat (limited to 'frontend/src/components')
| -rw-r--r-- | frontend/src/components/UploadRunDialog.tsx | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/frontend/src/components/UploadRunDialog.tsx b/frontend/src/components/UploadRunDialog.tsx index 0476d6f..a1bebd6 100644 --- a/frontend/src/components/UploadRunDialog.tsx +++ b/frontend/src/components/UploadRunDialog.tsx | |||
| @@ -19,12 +19,9 @@ interface UploadRunDialogProps { | |||
| 19 | 19 | ||
| 20 | const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose, games }) => { | 20 | const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose, games }) => { |
| 21 | 21 | ||
| 22 | const [confirmMessage, setConfirmMessage] = React.useState<string>("Are you sure you want to upload this demo?"); | ||
| 23 | |||
| 24 | const { message, MessageDialogComponent } = useMessage(); | 22 | const { message, MessageDialogComponent } = useMessage(); |
| 25 | const { confirm, ConfirmDialogComponent } = useConfirm(); | 23 | const { confirm, ConfirmDialogComponent } = useConfirm(); |
| 26 | 24 | ||
| 27 | |||
| 28 | const navigate = useNavigate(); | 25 | const navigate = useNavigate(); |
| 29 | 26 | ||
| 30 | const [uploadRunContent, setUploadRunContent] = React.useState<UploadRunContent>({ | 27 | const [uploadRunContent, setUploadRunContent] = React.useState<UploadRunContent>({ |
| @@ -95,42 +92,39 @@ const UploadRunDialog: React.FC<UploadRunDialogProps> = ({ token, open, onClose, | |||
| 95 | if (token) { | 92 | if (token) { |
| 96 | if (games[selectedGameID].is_coop) { | 93 | if (games[selectedGameID].is_coop) { |
| 97 | if (uploadRunContent.host_demo === null) { | 94 | if (uploadRunContent.host_demo === null) { |
| 98 | message("Error", "You must select a host demo to upload.") | 95 | await message("Error", "You must select a host demo to upload.") |
| 99 | return | 96 | return |
| 100 | } else if (uploadRunContent.partner_demo === null) { | 97 | } else if (uploadRunContent.partner_demo === null) { |
| 101 | message("Error", "You must select a partner demo to upload.") | 98 | await message("Error", "You must select a partner demo to upload.") |
| 102 | return | 99 | return |
| 103 | } | 100 | } |
| 104 | } else { | 101 | } else { |
| 105 | if (uploadRunContent.host_demo === null) { | 102 | if (uploadRunContent.host_demo === null) { |
| 106 | message("Error", "You must select a demo to upload.") | 103 | await message("Error", "You must select a demo to upload.") |
| 107 | return | 104 | return |
| 108 | } | 105 | } |
| 109 | } | 106 | } |
| 110 | const demo = SourceDemoParser.default() | 107 | const demo = SourceDemoParser.default() |
| 111 | .setOptions({ packets: true, header: true }) | 108 | .setOptions({ packets: true, header: true }) |
| 112 | .parse(await uploadRunContent.host_demo.arrayBuffer()); | 109 | .parse(await uploadRunContent.host_demo.arrayBuffer()); |
| 113 | const scoreboard = demo.findPacket<NetMessages.SvcUserMessage>((message) => { | 110 | const scoreboard = demo.findPacket<NetMessages.SvcUserMessage>((msg) => { |
| 114 | return message instanceof NetMessages.SvcUserMessage && message.userMessage instanceof ScoreboardTempUpdate; | 111 | return msg instanceof NetMessages.SvcUserMessage && msg.userMessage instanceof ScoreboardTempUpdate; |
| 115 | }) | 112 | }) |
| 116 | 113 | ||
| 117 | if (!scoreboard) { | 114 | if (!scoreboard) { |
| 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.") | 115 | await 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.") |
| 119 | return | 116 | return |
| 120 | } | 117 | } |
| 121 | const { portalScore, timeScore } = scoreboard.userMessage?.as<ScoreboardTempUpdate>() ?? {}; | 118 | const { portalScore, timeScore } = scoreboard.userMessage?.as<ScoreboardTempUpdate>() ?? {}; |
| 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?`) | ||
| 125 | 119 | ||
| 126 | const userConfirmed = await confirm("Upload demo?", confirmMessage); | 120 | const userConfirmed = await confirm("Upload Record", `Map Name: ${demo.mapName}\nPortal Count: ${portalScore}\nTicks: ${timeScore}\n\nAre you sure you want to upload this demo?`); |
| 127 | 121 | ||
| 128 | if (!userConfirmed) { | 122 | if (!userConfirmed) { |
| 129 | return; | 123 | return; |
| 130 | } | 124 | } |
| 131 | 125 | ||
| 132 | const response = await API.post_record(token, uploadRunContent); | 126 | const response = await API.post_record(token, uploadRunContent); |
| 133 | message("Message", response); | 127 | await message("Upload Record", response); |
| 134 | // navigate(0); | 128 | // navigate(0); |
| 135 | onClose(); | 129 | onClose(); |
| 136 | } | 130 | } |