diff --git a/packages/web/src/hooks/auditFrameGame/auditFrameGameService.ts b/packages/web/src/hooks/auditFrameGame/auditFrameGameService.ts
index 9100764ec..91c945f0c 100644
--- a/packages/web/src/hooks/auditFrameGame/auditFrameGameService.ts
+++ b/packages/web/src/hooks/auditFrameGame/auditFrameGameService.ts
@@ -11,7 +11,8 @@ export async function optInToAuditCompetition(editSessionIdOrAddress: string): P
});
return response.data.ok;
} catch (error) {
- console.log(error);
+ console.error("Error opting in to audit competition:", error);
+ // Don't throw, just return false to indicate failure
return false;
}
}
@@ -26,7 +27,8 @@ export async function optOutToAuditCompetition(editSessionIdOrAddress: string):
});
return response.data.ok;
} catch (error) {
- console.log(error);
+ console.error("Error opting out from audit competition:", error);
+ // Don't throw, just return false to indicate failure
return false;
}
}
@@ -41,7 +43,8 @@ export async function getAllOptedInOnAuditCompetition(editSessionIdOrAddress?: s
const response = await axiosClient.get(`${BASE_SERVICE_URL}/edit-session/${editSessionIdOrAddress}/list-opted-in-users`);
return response.data.optedInUsers;
} catch (error) {
- console.log(error);
+ console.error("Error getting opted in users:", error);
+ // Don't throw, just return empty array to indicate no users
return [];
}
}
diff --git a/packages/web/src/pages/Submissions/SubmissionFormPage/SubmissionFormPage.tsx b/packages/web/src/pages/Submissions/SubmissionFormPage/SubmissionFormPage.tsx
index f7e6af12b..b30dbcf89 100644
--- a/packages/web/src/pages/Submissions/SubmissionFormPage/SubmissionFormPage.tsx
+++ b/packages/web/src/pages/Submissions/SubmissionFormPage/SubmissionFormPage.tsx
@@ -198,12 +198,12 @@ export const SubmissionFormPage = () => {
async (data: ISubmissionData) => {
if (!vault || !data || !data.submissionResult) return;
- setSubmissionData({
- ...data,
- submissionResult: { ...data.submissionResult, botStatus: SubmissionOpStatus.Pending, auditCompetitionRepo: undefined },
- });
-
try {
+ setSubmissionData({
+ ...data,
+ submissionResult: { ...data.submissionResult, botStatus: SubmissionOpStatus.Pending, auditCompetitionRepo: undefined },
+ });
+
const res = await submitVulnerabilitySubmission(data, vault, hackerProfile);
if (res.success) {
@@ -215,71 +215,91 @@ export const SubmissionFormPage = () => {
auditCompetitionRepo: res.auditCompetitionRepo,
},
});
- } else throw new Error("Failed to submit vulnerability");
- } catch {
+ } else {
+ throw new Error("Failed to submit vulnerability");
+ }
+ } catch (error) {
+ console.error("Error sending submission to server:", error);
setSubmissionData({
...data,
submissionResult: { ...data.submissionResult, botStatus: SubmissionOpStatus.Fail, auditCompetitionRepo: undefined },
});
+ confirm({
+ title: t("serverSubmissionError"),
+ titleIcon: ,
+ description: t("serverSubmissionErrorExplanation"),
+ confirmText: t("gotIt"),
+ });
}
},
- [vault, hackerProfile]
+ [vault, hackerProfile, confirm, t]
);
const submitSubmission = useCallback(async () => {
if (!vault) return;
if (!submissionData?.submissionsDescriptions?.submission) return;
- // Check if vault requires message signature to submit
- if (requireMessageSignature && !userHasCollectedSignature) {
- const wantsToBeRedirected = await confirm({
- title: t("youNeedToSignMessageToSubmit"),
- titleIcon: ,
- description: t("youNeedToSignMessageToSubmitExplanation"),
- cancelText: t("close"),
- confirmText: t("gotIt"),
- });
+ try {
+ // Check if vault requires message signature to submit
+ if (requireMessageSignature && !userHasCollectedSignature) {
+ const wantsToBeRedirected = await confirm({
+ title: t("youNeedToSignMessageToSubmit"),
+ titleIcon: ,
+ description: t("youNeedToSignMessageToSubmitExplanation"),
+ cancelText: t("close"),
+ confirmText: t("gotIt"),
+ });
- if (!wantsToBeRedirected) return;
+ if (!wantsToBeRedirected) return;
- const isAudit = vault?.description?.["project-metadata"].type === "audit";
- const name = vault?.description?.["project-metadata"].name ?? "";
+ const isAudit = vault?.description?.["project-metadata"].type === "audit";
+ const name = vault?.description?.["project-metadata"].name ?? "";
- const mainRoute = `/${isAudit ? HoneypotsRoutePaths.audits : HoneypotsRoutePaths.bugBounties}`;
- const vaultSlug = slugify(name);
+ const mainRoute = `/${isAudit ? HoneypotsRoutePaths.audits : HoneypotsRoutePaths.bugBounties}`;
+ const vaultSlug = slugify(name);
- return navigate(`${mainRoute}/${vaultSlug}-${vault.id}`);
- }
+ return navigate(`${mainRoute}/${vaultSlug}-${vault.id}`);
+ }
- const submission = submissionData?.submissionsDescriptions?.submission;
- const calculatedCid = await calcCid(submission);
+ const submission = submissionData?.submissionsDescriptions?.submission;
+ const calculatedCid = await calcCid(submission);
- if (submissionData.ref === "audit-wizard") {
- if (!submissionData.auditWizardData) return;
- // Verify if the submission was not changed and validate the signature
- const auditwizardSubmission = getCurrentAuditwizardSubmission(submissionData.auditWizardData, submissionData);
+ if (submissionData.ref === "audit-wizard") {
+ if (!submissionData.auditWizardData) return;
+ // Verify if the submission was not changed and validate the signature
+ const auditwizardSubmission = getCurrentAuditwizardSubmission(submissionData.auditWizardData, submissionData);
- if (JSON.stringify(submissionData.auditWizardData) !== JSON.stringify(auditwizardSubmission)) {
- return confirm({
- title: t("submissionChanged"),
- titleIcon: ,
- description: t("submissionChangedExplanationAuditWizard"),
- confirmText: t("gotIt"),
- });
- }
+ if (JSON.stringify(submissionData.auditWizardData) !== JSON.stringify(auditwizardSubmission)) {
+ return confirm({
+ title: t("submissionChanged"),
+ titleIcon: ,
+ description: t("submissionChangedExplanationAuditWizard"),
+ confirmText: t("gotIt"),
+ });
+ }
- const res = await verifyAuditWizardSignature(auditwizardSubmission);
- if (!res) {
- return confirm({
- title: t("submissionNotValid"),
- titleIcon: ,
- description: t("submissionNotValidExplanationAuditWizard"),
- confirmText: t("gotIt"),
- });
+ const res = await verifyAuditWizardSignature(auditwizardSubmission);
+ if (!res) {
+ return confirm({
+ title: t("submissionNotValid"),
+ titleIcon: ,
+ description: t("submissionNotValidExplanationAuditWizard"),
+ confirmText: t("gotIt"),
+ });
+ }
}
- }
- sendVulnerabilityOnChain(calculatedCid);
+ await sendVulnerabilityOnChain(calculatedCid);
+ } catch (error) {
+ console.error("Error in submission:", error);
+ reset();
+ confirm({
+ title: t("submissionError"),
+ titleIcon: ,
+ description: t("submissionErrorExplanation"),
+ confirmText: t("gotIt"),
+ });
+ }
}, [sendVulnerabilityOnChain, submissionData, confirm, requireMessageSignature, userHasCollectedSignature, navigate, vault, t]);
const handleClearSubmission = async () => {