| import { useTranslation } from "react-i18next"; | |
| import { ModalBody } from "./modal-body"; | |
| import { | |
| BaseModalDescription, | |
| BaseModalTitle, | |
| } from "./confirmation-modals/base-modal"; | |
| import { I18nKey } from "#/i18n/declaration"; | |
| import { useAuth } from "#/context/auth-context"; | |
| import { ModalButton } from "../buttons/modal-button"; | |
| import { CustomInput } from "../custom-input"; | |
| interface ConnectToGitHubModalProps { | |
| onClose: () => void; | |
| } | |
| export function ConnectToGitHubModal({ onClose }: ConnectToGitHubModalProps) { | |
| const { gitHubToken, setGitHubToken } = useAuth(); | |
| const { t } = useTranslation(); | |
| const handleSubmit = (event: React.FormEvent<HTMLFormElement>) => { | |
| event.preventDefault(); | |
| const formData = new FormData(event.currentTarget); | |
| const ghToken = formData.get("ghToken")?.toString(); | |
| if (ghToken) setGitHubToken(ghToken); | |
| onClose(); | |
| }; | |
| return ( | |
| <ModalBody> | |
| <div className="flex flex-col gap-2 self-start"> | |
| <BaseModalTitle title="Connect to GitHub" /> | |
| <BaseModalDescription | |
| description={ | |
| <span> | |
| {t(I18nKey.CONNECT_TO_GITHUB_MODAL$GET_YOUR_TOKEN)}{" "} | |
| <a | |
| href="https://github.com/settings/tokens/new?description=openhands-app&scopes=repo,user,workflow" | |
| target="_blank" | |
| rel="noreferrer noopener" | |
| className="text-[#791B80] underline" | |
| > | |
| {t(I18nKey.CONNECT_TO_GITHUB_MODAL$HERE)} | |
| </a> | |
| </span> | |
| } | |
| /> | |
| </div> | |
| <form onSubmit={handleSubmit} className="w-full flex flex-col gap-6"> | |
| <CustomInput | |
| label="GitHub Token" | |
| name="ghToken" | |
| required | |
| type="password" | |
| defaultValue={gitHubToken ?? ""} | |
| /> | |
| <div className="flex flex-col gap-2 w-full"> | |
| <ModalButton | |
| testId="connect-to-github" | |
| type="submit" | |
| text={t(I18nKey.CONNECT_TO_GITHUB_MODAL$CONNECT)} | |
| className="bg-[#791B80] w-full" | |
| /> | |
| <ModalButton | |
| onClick={onClose} | |
| text={t(I18nKey.CONNECT_TO_GITHUB_MODAL$CLOSE)} | |
| className="bg-[#737373] w-full" | |
| /> | |
| </div> | |
| </form> | |
| </ModalBody> | |
| ); | |
| } | |