Spaces:
Build error
Build error
import posthog from "posthog-js"; | |
import React from "react"; | |
import { useTranslation } from "react-i18next"; | |
import { SuggestionItem } from "#/components/features/suggestions/suggestion-item"; | |
import { I18nKey } from "#/i18n/declaration"; | |
import { useUserProviders } from "#/hooks/use-user-providers"; | |
import { useActiveConversation } from "#/hooks/query/use-active-conversation"; | |
interface ActionSuggestionsProps { | |
onSuggestionsClick: (value: string) => void; | |
} | |
export function ActionSuggestions({ | |
onSuggestionsClick, | |
}: ActionSuggestionsProps) { | |
const { t } = useTranslation(); | |
const { providers } = useUserProviders(); | |
const { data: conversation } = useActiveConversation(); | |
const [hasPullRequest, setHasPullRequest] = React.useState(false); | |
const providersAreSet = providers.length > 0; | |
const isGitLab = providers.includes("gitlab"); | |
const pr = isGitLab ? "merge request" : "pull request"; | |
const prShort = isGitLab ? "MR" : "PR"; | |
const terms = { | |
pr, | |
prShort, | |
pushToBranch: `Please push the changes to a remote branch on ${ | |
isGitLab ? "GitLab" : "GitHub" | |
}, but do NOT create a ${pr}. Please use the exact SAME branch name as the one you are currently on.`, | |
createPR: `Please push the changes to ${ | |
isGitLab ? "GitLab" : "GitHub" | |
} and open a ${pr}. Please create a meaningful branch name that describes the changes. If a ${pr} template exists in the repository, please follow it when creating the ${prShort} description.`, | |
pushToPR: `Please push the latest changes to the existing ${pr}.`, | |
}; | |
return ( | |
<div className="flex flex-col gap-2 mb-2"> | |
{providersAreSet && conversation?.selected_repository && ( | |
<div className="flex flex-row gap-2 justify-center w-full"> | |
{!hasPullRequest ? ( | |
<> | |
<SuggestionItem | |
suggestion={{ | |
label: t(I18nKey.ACTION$PUSH_TO_BRANCH), | |
value: terms.pushToBranch, | |
}} | |
onClick={(value) => { | |
posthog.capture("push_to_branch_button_clicked"); | |
onSuggestionsClick(value); | |
}} | |
/> | |
<SuggestionItem | |
suggestion={{ | |
label: t(I18nKey.ACTION$PUSH_CREATE_PR), | |
value: terms.createPR, | |
}} | |
onClick={(value) => { | |
posthog.capture("create_pr_button_clicked"); | |
onSuggestionsClick(value); | |
setHasPullRequest(true); | |
}} | |
/> | |
</> | |
) : ( | |
<SuggestionItem | |
suggestion={{ | |
label: t(I18nKey.ACTION$PUSH_CHANGES_TO_PR), | |
value: terms.pushToPR, | |
}} | |
onClick={(value) => { | |
posthog.capture("push_to_pr_button_clicked"); | |
onSuggestionsClick(value); | |
}} | |
/> | |
)} | |
</div> | |
)} | |
</div> | |
); | |
} | |