Add confirmation to Gemini actions in EditPanel

This commit is contained in:
Christian Vidal Wolf
2026-03-29 18:29:11 +02:00
parent 99825af08c
commit 3b629bfb96
+18 -1
View File
@@ -32,6 +32,7 @@ export function EditPanel({ row, rowIndex, onSave, onClose, onCaptureState }: Ed
const [loadingField, setLoadingField] = useState<string | null>(null);
const [error, setError] = useState<string | null>(null);
const [isConfirmOpen, setIsConfirmOpen] = useState(false);
const [pendingGeminiField, setPendingGeminiField] = useState<keyof typeof formData | null>(null);
const isModified = (field: keyof typeof formData) => {
const colMap: Record<string, number> = {
@@ -52,6 +53,13 @@ export function EditPanel({ row, rowIndex, onSave, onClose, onCaptureState }: Ed
};
const handleGenerate = async (field: keyof typeof formData) => {
setPendingGeminiField(field);
};
const executeGenerate = async () => {
if (!pendingGeminiField) return;
const field = pendingGeminiField;
setPendingGeminiField(null);
setLoadingField(field);
setError(null);
@@ -261,7 +269,6 @@ export function EditPanel({ row, rowIndex, onSave, onClose, onCaptureState }: Ed
Save to Memory
</button>
</div>
<ConfirmModal
isOpen={isConfirmOpen}
onConfirm={handleSave}
@@ -271,6 +278,16 @@ export function EditPanel({ row, rowIndex, onSave, onClose, onCaptureState }: Ed
type="info"
confirmText="Save changes"
/>
<ConfirmModal
isOpen={!!pendingGeminiField}
onConfirm={executeGenerate}
onCancel={() => setPendingGeminiField(null)}
title="Confirm AI Action"
message={`Are you sure you want to use Gemini to ${((pendingGeminiField === 'longEn' && formData.longDe) || (pendingGeminiField === 'shortEn' && formData.shortDe)) ? 'translate' : 'generate'} the ${pendingGeminiField} field?`}
type="info"
confirmText="Start Generation"
/>
</div>
</>
);