feat(web): drop Unarchive action from archive toast

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Bryan Helmkamp 2026-04-27 16:10:16 -07:00
parent ca854f9033
commit cdc43e05fc
No known key found for this signature in database
2 changed files with 5 additions and 22 deletions

View file

@ -97,7 +97,6 @@ describe("handleLifecycleToastResult", () => {
test("replaying the same archive success result does not enqueue a duplicate toast", () => {
const { pushed, dismissed, api } = makeToastApi();
let unarchiveClicks = 0;
const result: RunDetailActionResult = {
intent: "archive",
ok: true,
@ -111,20 +110,12 @@ describe("handleLifecycleToastResult", () => {
},
};
const firstState = handleLifecycleToastResult("archive", result, initialState, api, () => {
unarchiveClicks += 1;
});
const firstState = handleLifecycleToastResult("archive", result, initialState, api);
expect(pushed).toHaveLength(1);
expect(pushed[0]?.message).toBe("Run archived.");
expect(pushed[0]?.action?.label).toBe("Unarchive");
pushed[0]?.action?.onClick();
expect(unarchiveClicks).toBe(1);
expect(pushed).toEqual([{ message: "Run archived." }]);
expect(firstState.activeArchiveToastId).toBe("toast-1");
const replayedState = handleLifecycleToastResult("archive", result, firstState, api, () => {
unarchiveClicks += 1;
});
const replayedState = handleLifecycleToastResult("archive", result, firstState, api);
expect(pushed).toHaveLength(1);
expect(replayedState).toBe(firstState);

View file

@ -138,9 +138,8 @@ export default function RunDetail({ params }: { params: { id: string } }) {
archiveMutation.data,
lifecycleToastStateRef.current,
{ push, dismiss },
() => void unarchiveMutation.trigger(),
);
}, [archiveMutation.data, dismiss, push, unarchiveMutation]);
}, [archiveMutation.data, dismiss, push]);
useEffect(() => {
lifecycleToastStateRef.current = handleLifecycleToastResult(
@ -322,7 +321,6 @@ export function handleLifecycleToastResult(
result: RunDetailActionResult | undefined,
state: LifecycleToastState,
toastApi: ToastApi,
onUnarchive?: () => void,
): LifecycleToastState {
if (!result || result.intent !== intent) return state;
if (state.lastProcessed[intent] === result) return state;
@ -349,15 +347,9 @@ export function handleLifecycleToastResult(
}
if (intent === "archive") {
const archiveToast: Parameters<ToastApi["push"]>[0] = {
message: "Run archived.",
};
if (onUnarchive) {
archiveToast.action = { label: "Unarchive", onClick: onUnarchive };
}
return {
...nextState,
activeArchiveToastId: toastApi.push(archiveToast),
activeArchiveToastId: toastApi.push({ message: "Run archived." }),
};
}