import type { DivergedStrategy } from '@yaakapp-internal/git'; import { useState } from 'react'; import { showDialog } from '../../lib/dialog'; import { Button } from '../core/Button'; import { InlineCode } from '../core/InlineCode'; import { RadioCards } from '../core/RadioCards'; import { HStack } from '../core/Stacks'; type Resolution = 'force_reset' | 'merge'; const resolutionLabel: Record = { force_reset: 'Force Pull', merge: 'Merge', }; interface DivergedDialogProps { remote: string; branch: string; onResult: (strategy: DivergedStrategy) => void; onHide: () => void; } function DivergedDialog({ remote, branch, onResult, onHide }: DivergedDialogProps) { const [selected, setSelected] = useState(null); const handleSubmit = () => { if (selected == null) return; onResult(selected); onHide(); }; const handleCancel = () => { onResult('cancel'); onHide(); }; return (

Your local branch has diverged from{' '} {remote}/{branch} . How would you like to resolve this?

); } export async function promptDivergedStrategy({ remote, branch, }: { remote: string; branch: string; }): Promise { return new Promise((resolve) => { showDialog({ id: 'git-diverged', title: 'Branches Diverged', hideX: true, size: 'sm', disableBackdropClose: true, onClose: () => resolve('cancel'), render: ({ hide }) => DivergedDialog({ remote, branch, onHide: hide, onResult: resolve, }), }); }); }