Add verifying state to hack action bar

This commit is contained in:
Jared Schoeny
2026-05-29 13:45:19 -06:00
parent ac81e2eebb
commit 34e86ed323
2 changed files with 50 additions and 31 deletions

View File

@@ -45,6 +45,7 @@ const HackActions: React.FC<HackActionsProps> = ({
const [patchUrl, setPatchUrl] = React.useState<string | null>(null);
const [termsAgreed, setTermsAgreed] = React.useState(false);
const [romErrorModal, setRomErrorModal] = React.useState<BaseRomErrorModalState | null>(null);
const [isVerifyingRom, setIsVerifyingRom] = React.useState(false);
const baseRomName = React.useMemo(() => baseRoms.find(r => r.id === baseRomId)?.name || null, [baseRomId]);
const effectivePlatform = React.useMemo(
() => platform ?? baseRoms.find(r => r.id === baseRomId)?.platform,
@@ -142,39 +143,44 @@ const HackActions: React.FC<HackActionsProps> = ({
return;
}
const selectedHash = await sha1Hex(f);
const match = baseRoms.find((r) => r.sha1.toLowerCase() === selectedHash.toLowerCase());
const requiredHash = baseRoms.find((r) => r.id === baseRomId)?.sha1.toLowerCase() ?? "";
setIsVerifyingRom(true);
try {
const selectedHash = await sha1Hex(f);
const match = baseRoms.find((r) => r.sha1.toLowerCase() === selectedHash.toLowerCase());
const requiredHash = baseRoms.find((r) => r.id === baseRomId)?.sha1.toLowerCase() ?? "";
if (!match) {
setRomErrorModal({
kind: "hash_mismatch",
fileName: f.name,
selectedHash,
requiredHash,
requiredRomName,
});
resetInput();
return;
}
if (!match) {
setRomErrorModal({
kind: "hash_mismatch",
fileName: f.name,
selectedHash,
requiredHash,
requiredRomName,
});
resetInput();
return;
}
if (match.id !== baseRomId) {
await importUploadedBlob(f);
setRomErrorModal({
kind: "hash_mismatch",
fileName: f.name,
selectedHash,
requiredHash,
requiredRomName,
matchedRomName: match.name,
});
resetInput();
return;
}
if (match.id !== baseRomId) {
await importUploadedBlob(f);
setRomErrorModal({
kind: "hash_mismatch",
fileName: f.name,
selectedHash,
requiredHash,
requiredRomName,
matchedRomName: match.name,
});
resetInput();
return;
setFile(f);
setStatus("ready");
} finally {
setIsVerifyingRom(false);
}
await importUploadedBlob(f);
setFile(f);
setStatus("ready");
}
async function onAgreeToTerms() {
@@ -324,6 +330,7 @@ const HackActions: React.FC<HackActionsProps> = ({
supported={supported}
onUploadChange={onSelectFile}
termsAgreed={termsAgreed}
isVerifyingRom={isVerifyingRom}
/>
{romErrorModal && (
<BaseRomErrorModal