fixup: always schedule callback first
This commit is contained in:
@@ -61,8 +61,7 @@ export function ArtifactFormWrapper({
|
||||
} catch {}
|
||||
router.refresh();
|
||||
})
|
||||
.catch((e) => toast.error(`${e.message || e}`))
|
||||
.finally(callback.current);
|
||||
.catch((e) => toast.error(`${e.message || e}`));
|
||||
}
|
||||
return (
|
||||
<ActionSubmitContext.Provider value={context}>
|
||||
@@ -70,7 +69,9 @@ export function ArtifactFormWrapper({
|
||||
{...props}
|
||||
onSubmit={(e) => {
|
||||
e.preventDefault();
|
||||
submit(new FormData(e.target as HTMLFormElement));
|
||||
submit(new FormData(e.target as HTMLFormElement)).finally(
|
||||
callback.current,
|
||||
);
|
||||
}}
|
||||
/>
|
||||
</ActionSubmitContext.Provider>
|
||||
|
||||
@@ -40,6 +40,7 @@ import {
|
||||
import { ArtifactFormWrapper } from "./form";
|
||||
import { LiveButton } from "./live";
|
||||
import { RulesDialog } from "./rules";
|
||||
import { ActionButton } from "@/components/action-button";
|
||||
|
||||
export const metadata: Metadata = {
|
||||
title: "เสือกไอดีชาวบ้าน",
|
||||
@@ -257,9 +258,10 @@ export default async function ArtifactFormPage({
|
||||
{count} / {config.limit < 0 ? "∞" : config.limit} คิว
|
||||
</Kbd>
|
||||
<SimpleTooltip text="ส่งเลยจัฟลูกพี่">
|
||||
<Button
|
||||
<ActionButton
|
||||
type="submit"
|
||||
form="mainform"
|
||||
action="provider"
|
||||
disabled={
|
||||
(!!q ||
|
||||
config.locked ||
|
||||
@@ -268,7 +270,7 @@ export default async function ArtifactFormPage({
|
||||
}
|
||||
>
|
||||
{editing ? <PencilIcon /> : <SendHorizonal />}
|
||||
</Button>
|
||||
</ActionButton>
|
||||
</SimpleTooltip>
|
||||
</div>
|
||||
</CardFooter>
|
||||
|
||||
@@ -32,12 +32,12 @@ export function ActionButton({
|
||||
disabled={state > 0}
|
||||
{...props}
|
||||
onClick={async (ev) => {
|
||||
onClick?.(ev);
|
||||
setState(1);
|
||||
if (action === "provider")
|
||||
await new Promise<void>(ctx.listenForComplete);
|
||||
onClick?.(ev);
|
||||
try {
|
||||
if (action === "provider")
|
||||
await new Promise<void>(ctx.listenForComplete);
|
||||
else await action();
|
||||
if (action !== "provider") await action();
|
||||
setState(2);
|
||||
} catch (e) {
|
||||
toast.error("An error occured!");
|
||||
|
||||
Reference in New Issue
Block a user