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, }), }); }); }