openhands / src /components /features /controls /git-tools-submenu.tsx
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
9b906ea verified
Raw
History Blame Contribute Delete
3.07 kB
import { useTranslation } from "react-i18next";
import { ContextMenu } from "#/ui/context-menu";
import { ContextMenuListItem } from "../context-menu/context-menu-list-item";
import { ToolsContextMenuIconText } from "./tools-context-menu-icon-text";
import { useActiveConversation } from "#/hooks/query/use-active-conversation";
import { Provider } from "#/types/settings";
import {
getGitPullPrompt,
getGitPushPrompt,
getCreatePRPrompt,
getCreateNewBranchPrompt,
} from "#/utils/utils";
import { useConversationStore } from "#/stores/conversation-store";
import ArrowUpIcon from "#/icons/u-arrow-up.svg?react";
import ArrowDownIcon from "#/icons/u-arrow-down.svg?react";
import PrIcon from "#/icons/u-pr.svg?react";
import CodeBranchIcon from "#/icons/u-code-branch.svg?react";
import { I18nKey } from "#/i18n/declaration";
const submenuListItemClassName = "!w-auto whitespace-nowrap";
interface GitToolsSubmenuProps {
onClose: () => void;
}
export function GitToolsSubmenu({ onClose }: GitToolsSubmenuProps) {
const { t } = useTranslation("openhands");
const { setMessageToSend } = useConversationStore();
const { data: conversation } = useActiveConversation();
const currentGitProvider = conversation?.git_provider as Provider;
const onGitPull = () => {
setMessageToSend(getGitPullPrompt());
onClose();
};
const onGitPush = () => {
setMessageToSend(getGitPushPrompt(currentGitProvider));
onClose();
};
const onCreatePR = () => {
setMessageToSend(getCreatePRPrompt(currentGitProvider));
onClose();
};
const onCreateNewBranch = () => {
setMessageToSend(getCreateNewBranchPrompt());
onClose();
};
return (
<ContextMenu testId="git-tools-submenu" className="w-max">
<ContextMenuListItem
testId="git-pull-button"
onClick={onGitPull}
className={submenuListItemClassName}
>
<ToolsContextMenuIconText
icon={<ArrowDownIcon width={16} height={16} />}
text={t(I18nKey.COMMON$GIT_PULL)}
/>
</ContextMenuListItem>
<ContextMenuListItem
testId="git-push-button"
onClick={onGitPush}
className={submenuListItemClassName}
>
<ToolsContextMenuIconText
icon={<ArrowUpIcon width={16} height={16} />}
text={t(I18nKey.COMMON$GIT_PUSH)}
/>
</ContextMenuListItem>
<ContextMenuListItem
testId="create-pr-button"
onClick={onCreatePR}
className={submenuListItemClassName}
>
<ToolsContextMenuIconText
icon={<PrIcon width={16} height={16} />}
text={t(I18nKey.COMMON$CREATE_PR)}
/>
</ContextMenuListItem>
<ContextMenuListItem
testId="create-new-branch-button"
onClick={onCreateNewBranch}
className={submenuListItemClassName}
>
<ToolsContextMenuIconText
icon={<CodeBranchIcon width={16} height={16} />}
text={t(I18nKey.COMMON$CREATE_NEW_BRANCH)}
/>
</ContextMenuListItem>
</ContextMenu>
);
}