diff --git a/packages/ui/src/components/create-pr-menu.tsx b/packages/ui/src/components/create-pr-menu.tsx index 4beb5653..eaa6a43f 100644 --- a/packages/ui/src/components/create-pr-menu.tsx +++ b/packages/ui/src/components/create-pr-menu.tsx @@ -1,25 +1,12 @@ import { DropdownMenuItem } from "../ui/dropdown-menu"; -import { IconExternal, IconPullRequest } from "../icons"; +import { IconPullRequest } from "../icons"; -type CreatePrMenuProps = { - onCreateDraftPr?: () => void; - onManualCreatePr?: () => void; -}; - -function CreatePrMenu({ onCreateDraftPr, onManualCreatePr }: CreatePrMenuProps) { +function CreatePrMenu({ onCreateDraftPr }: { onCreateDraftPr?: () => void }) { return ( - <> - - - Create draft PR - - {onManualCreatePr && ( - - - Manually create PR - - )} - + + + Create draft PR + ); } diff --git a/packages/ui/src/components/diff/diff-actions.tsx b/packages/ui/src/components/diff/diff-actions.tsx index 1b7f4a5c..bdffdba6 100644 --- a/packages/ui/src/components/diff/diff-actions.tsx +++ b/packages/ui/src/components/diff/diff-actions.tsx @@ -30,7 +30,6 @@ function PrAction({ onOpenPr, onCreatePr, onCreateDraftPr, - onManualCreatePr, }: { pr?: DiffViewPr; creatingPr?: boolean; @@ -38,7 +37,6 @@ function PrAction({ onOpenPr?: () => void; onCreatePr?: () => void; onCreateDraftPr?: () => void; - onManualCreatePr?: () => void; }) { if (pr) { let content = ( @@ -108,7 +106,6 @@ function PrAction({ menu={ } menuLabel="Create PR options" diff --git a/packages/ui/src/components/diff/diff-view.tsx b/packages/ui/src/components/diff/diff-view.tsx index 8e7d8fac..bce8957f 100644 --- a/packages/ui/src/components/diff/diff-view.tsx +++ b/packages/ui/src/components/diff/diff-view.tsx @@ -388,7 +388,6 @@ function useDiffView({ onOpenPr, onCreatePr, onCreateDraftPr, - onManualCreatePr, actions, onFileOpen, className, @@ -562,7 +561,6 @@ function useDiffView({ onOpenPr, onCreatePr, onCreateDraftPr, - onManualCreatePr, actions, className, summary, @@ -595,7 +593,6 @@ function DiffViewContent(props: DiffViewProps & { kept: Kept }) { onOpenPr, onCreatePr, onCreateDraftPr, - onManualCreatePr, actions, className, summary, @@ -680,7 +677,6 @@ function DiffViewContent(props: DiffViewProps & { kept: Kept }) { onOpenPr={onOpenPr} onCreatePr={onCreatePr} onCreateDraftPr={onCreateDraftPr} - onManualCreatePr={onManualCreatePr} /> void; onCreatePr?: () => void; onCreateDraftPr?: () => void; - onManualCreatePr?: () => void; /** Git and pull request actions for the branch, each offered only while it can be taken. */ actions?: GitAction[]; onFileOpen?: (file: DiffViewFile) => void; diff --git a/packages/ui/src/components/message-toolbar/message-toolbar.tsx b/packages/ui/src/components/message-toolbar/message-toolbar.tsx index 6e2a4baf..3c2989cf 100644 --- a/packages/ui/src/components/message-toolbar/message-toolbar.tsx +++ b/packages/ui/src/components/message-toolbar/message-toolbar.tsx @@ -62,6 +62,9 @@ function MessageToolbar( let [menu, setMenu] = useState(false); let [popup, setPopup] = useState(false); let button = useRef(null); + let edit = mine && canEdit; + // A deleted message, or one in an archived channel, can't be deleted, so More drops Delete. + let remove = mine && actions?.delete !== false; function handleOpenChange(o: boolean) { setOpen(o); @@ -148,7 +151,7 @@ function MessageToolbar( ref={button} active={menu} aria-label="More" - className={!mine ? "notouch:hidden" : undefined} + className={!edit && !remove ? "notouch:hidden" : undefined} icon={} /> } @@ -188,34 +191,29 @@ function MessageToolbar( Copy link - {mine && canEdit && } - {mine && ( - <> - {canEdit && ( - <> - { - onAction({ type: "edit" }); - }} - disabled={actions?.edit === false} - > - - Edit - - - - )} - { - onAction({ type: "delete" }); - }} - > - - Delete - - + {(edit || remove) && } + {edit && ( + { + onAction({ type: "edit" }); + }} + disabled={actions?.edit === false} + > + + Edit + + )} + {edit && remove && } + {remove && ( + { + onAction({ type: "delete" }); + }} + > + + Delete + )} diff --git a/packages/ui/src/components/session-item/session-item.tsx b/packages/ui/src/components/session-item/session-item.tsx index d6cdafc9..cb4036f8 100644 --- a/packages/ui/src/components/session-item/session-item.tsx +++ b/packages/ui/src/components/session-item/session-item.tsx @@ -205,18 +205,18 @@ function actions(data: SidebarRow, props: RowActions): RowActions { if (data.kind === "lobby") return { onRebuild: props.onRebuild }; let pins = { onPin: props.onPin, onUnpin: props.onUnpin }; // Archived channels leave every group but Archived, so a pin would never show. - if (data.lifecycle === "archived") { - return { - onArchive: data.capabilities?.archive === false ? undefined : props.onArchive, - onDelete: data.capabilities?.delete === false ? undefined : props.onDelete, - }; - } + let remove = { + onArchive: data.capabilities?.archive === false ? undefined : props.onArchive, + // A live channel's menu shows Delete disabled, with Archive first, so the path is findable. + onDelete: data.capabilities?.delete === false ? undefined : props.onDelete, + }; + if (data.lifecycle === "archived") return remove; return { ...pins, + ...remove, onFork: data.capabilities?.fork === false ? undefined : props.onFork, onInfo: props.onInfo, onLeave: props.onLeave, - onArchive: data.capabilities?.archive === false ? undefined : props.onArchive, onRename: data.capabilities?.rename === false ? undefined : props.onRename, ...(data.capabilities?.move ? { onMoveTargets: props.onMoveTargets, onMove: props.onMove }