+
+ {
+ if (batchConfig && publicClient) {
+ setIsSubmittingCase(true);
+ wrapWithToast(async () => await executeBatch(batchConfig), publicClient)
+ .then((res) => {
+ if (res.status && !isUndefined(res.result)) {
+ resetDisputeData();
+ navigate("/cases/display/1/desc/all");
+ }
+ })
+ .finally(() => {
+ setIsSubmittingCase(false);
+ });
+ }
+ }}
+ />
+ {errorMsg && (
+
+ {errorMsg}
+
+ )}
+
+
+ );
+};
+
+export default SubmitBatchDisputesButton;
diff --git a/web/src/pages/Resolver/NavigationButtons/SubmitDisputeButton.tsx b/web/src/pages/Resolver/NavigationButtons/SubmitDisputeButton.tsx
index f2ad186b4..4e12a4321 100644
--- a/web/src/pages/Resolver/NavigationButtons/SubmitDisputeButton.tsx
+++ b/web/src/pages/Resolver/NavigationButtons/SubmitDisputeButton.tsx
@@ -42,7 +42,12 @@ const SubmitDisputeButton: React.FC = () => {
return userBalance && userBalance.value < arbitrationCost;
}, [userBalance, disputeData]);
- const { data: submitCaseConfig, error } = useSimulateDisputeResolverCreateDisputeForTemplate({
+ const {
+ data: submitCaseConfig,
+ error,
+ isLoading: isLoadingConfig,
+ isError,
+ } = useSimulateDisputeResolverCreateDisputeForTemplate({
query: {
enabled: !insufficientBalance && isTemplateValid(disputeTemplate),
},
@@ -62,8 +67,14 @@ const SubmitDisputeButton: React.FC = () => {
const { writeContractAsync: submitCase } = useWriteDisputeResolverCreateDisputeForTemplate();
const isButtonDisabled = useMemo(
- () => isSubmittingCase || !isTemplateValid(disputeTemplate) || isBalanceLoading || insufficientBalance,
- [isSubmittingCase, insufficientBalance, isBalanceLoading, disputeTemplate]
+ () =>
+ isError ||
+ isSubmittingCase ||
+ !isTemplateValid(disputeTemplate) ||
+ isBalanceLoading ||
+ insufficientBalance ||
+ isLoadingConfig,
+ [isSubmittingCase, insufficientBalance, isBalanceLoading, disputeTemplate, isLoadingConfig, isError]
);
const errorMsg = useMemo(() => {
@@ -82,9 +93,9 @@ const SubmitDisputeButton: React.FC = () => {