import React from 'react'; import { Button } from 'antd'; import { t as defaultTranslate } from '../i18n'; import { useOptionalI18n } from '../i18n/provider'; export type PendingSqlEditorTransaction = { id: string; commitMode: 'manual' | 'auto'; autoCommitDelayMs: number; createdAt: number; autoCommitDueAt?: number | null; statementCount?: number; }; type QueryEditorTransactionToolbarProps = { isV2Ui: boolean; darkMode: boolean; transaction: PendingSqlEditorTransaction | null; autoCommitRemainingSeconds: number | null; onFinish: (action: 'commit' | 'rollback') => void; }; const QueryEditorTransactionToolbar: React.FC = ({ isV2Ui, darkMode, transaction, autoCommitRemainingSeconds, onFinish, }) => { const i18n = useOptionalI18n(); const t = i18n?.t ?? defaultTranslate; if (!transaction) { return null; } const statementCount = Math.max(0, Math.floor(Number(transaction.statementCount) || 0)); const pendingCount = statementCount > 0 ? statementCount : 1; const statusText = transaction.commitMode === 'auto' ? autoCommitRemainingSeconds !== null && autoCommitRemainingSeconds > 0 ? t('query_editor.transaction.status.auto_commit_countdown', { seconds: autoCommitRemainingSeconds }) : t('query_editor.transaction.status.auto_committing') : null; const commitLabel = isV2Ui ? ( <> {t('query_editor.transaction.action.commit')} {pendingCount} ) : t('query_editor.transaction.action.commit_with_count', { count: pendingCount }); return (
{statusText ? ( {statusText} ) : null}
); }; export default QueryEditorTransactionToolbar;