Some checks failed
build-packages / resolve bundled mosh-client (push) Has been cancelled
build-packages / resolve bundled et-client (push) Has been cancelled
build-packages / build-macos (push) Has been cancelled
build-packages / build-windows (push) Has been cancelled
build-packages / build-linux-x64 (push) Has been cancelled
build-packages / build-linux-arm64 (push) Has been cancelled
build-packages / release (push) Has been cancelled
build-packages / update Nix release metadata (push) Has been cancelled
build-packages / bump homebrew tap (push) Has been cancelled
test / lint-and-test (push) Has been cancelled
AI automation / Route event (push) Has been cancelled
AI automation / Hand reopened issue to maintainers (push) Has been cancelled
AI automation / Clean source issue state (push) Has been cancelled
AI automation / Reconcile handoffs (push) Has been cancelled
AI automation / Classify issue (push) Has been cancelled
AI automation / Claude Code smoke (push) Has been cancelled
AI automation / Review issue follow-up (push) Has been cancelled
AI automation / Publish issue follow-up (push) Has been cancelled
AI automation / Implement with Claude Code (push) Has been cancelled
AI automation / Publish implement PR (push) Has been cancelled
AI automation / Continue queued issue comments (push) Has been cancelled
AI automation / Codex review loop (push) Has been cancelled
AI automation / Publish Codex fix (push) Has been cancelled
AI automation / Clear Codex dispatch marker (push) Has been cancelled
AI automation / Own PR re-request Codex (push) Has been cancelled
AI automation / External PR re-request Codex (push) Has been cancelled
AI automation / Poll Codex reaction / retry (push) Has been cancelled
build-et-binaries / build-linux-x64 (push) Has been cancelled
build-et-binaries / build-linux-arm64 (push) Has been cancelled
build-et-binaries / build-macos-universal (push) Has been cancelled
build-et-binaries / build-windows-x64 (push) Has been cancelled
build-et-binaries / release (push) Has been cancelled
34 lines
1.5 KiB
TypeScript
34 lines
1.5 KiB
TypeScript
import React, { useState } from "react";
|
|
import { useI18n } from "../../application/i18n/I18nProvider";
|
|
import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from "../ui/dialog";
|
|
import { Button } from "../ui/button";
|
|
|
|
interface Props {
|
|
filename: string;
|
|
onRespond: (action: "overwrite" | "skip" | "cancel", applyToRest: boolean) => void;
|
|
}
|
|
|
|
export const ZmodemOverwriteDialog: React.FC<Props> = ({ filename, onRespond }) => {
|
|
const { t } = useI18n();
|
|
const [applyToRest, setApplyToRest] = useState(false);
|
|
return (
|
|
<Dialog open onOpenChange={(o) => { if (!o) onRespond("cancel", false); }}>
|
|
<DialogContent>
|
|
<DialogHeader>
|
|
<DialogTitle>{t("zmodem.overwrite.title")}</DialogTitle>
|
|
</DialogHeader>
|
|
<p className="text-sm text-muted-foreground break-all">{filename}</p>
|
|
<label className="flex items-center gap-2 text-sm mt-2">
|
|
<input type="checkbox" checked={applyToRest} onChange={(e) => setApplyToRest(e.target.checked)} />
|
|
{t("zmodem.overwrite.applyToRest")}
|
|
</label>
|
|
<DialogFooter>
|
|
<Button variant="ghost" onClick={() => onRespond("cancel", applyToRest)}>{t("zmodem.overwrite.cancel")}</Button>
|
|
<Button variant="outline" onClick={() => onRespond("skip", applyToRest)}>{t("zmodem.overwrite.skip")}</Button>
|
|
<Button onClick={() => onRespond("overwrite", applyToRest)}>{t("zmodem.overwrite.overwrite")}</Button>
|
|
</DialogFooter>
|
|
</DialogContent>
|
|
</Dialog>
|
|
);
|
|
};
|