import { observer } from "mobx-react"; import { PlusIcon } from "outline-icons"; import * as React from "react"; import { useTranslation, Trans } from "react-i18next"; import { IntegrationService } from "@shared/types"; import { ConnectedButton } from "~/scenes/Settings/components/ConnectedButton"; import { AvatarSize } from "~/components/Avatar/Avatar"; import Flex from "~/components/Flex"; import Heading from "~/components/Heading"; import List from "~/components/List"; import ListItem from "~/components/List/Item"; import Notice from "~/components/Notice"; import PlaceholderText from "~/components/PlaceholderText"; import Scene from "~/components/Scene"; import TeamLogo from "~/components/TeamLogo"; import Text from "~/components/Text"; import Time from "~/components/Time"; import env from "~/env"; import useQuery from "~/hooks/useQuery"; import useStores from "~/hooks/useStores"; import GitHubIcon from "./Icon"; import { GitHubConnectButton } from "./components/GitHubButton"; function GitHub() { const { integrations } = useStores(); const { t } = useTranslation(); const query = useQuery(); const error = query.get("error"); const installRequest = query.get("install_request"); const appName = env.APP_NAME; const githubAppName = env.GITHUB_APP_NAME; React.useEffect(() => { void integrations.fetchAll({ service: IntegrationService.GitHub, withRelations: true, }); }, [integrations]); return ( }> GitHub {error === "access_denied" && ( Whoops, you need to accept the permissions in GitHub to connect{" "} {{ appName }} to your workspace. Try again? )} {error === "unauthenticated" && ( Something went wrong while authenticating your request. Please try logging in again. )} {installRequest === "true" && ( The owner of GitHub account has been requested to install the{" "} {{ githubAppName }} GitHub app. Once approved, previews will be shown for respective links. )} {env.GITHUB_CLIENT_ID ? ( <> Enable previews of GitHub issues and pull requests in documents by connecting a GitHub organization or specific repositories to{" "} {appName}. {integrations.github.length ? ( <> {t("Connected")} } /> {integrations.github.map((integration) => { const githubAccount = integration.settings?.github?.installation.account; const integrationCreatedBy = integration.user ? integration.user.name : undefined; return ( Enabled by {{ integrationCreatedBy }}{" "} ·{" "} ) : (

} />

)} ) : ( The GitHub integration is currently disabled. Please set the associated environment variables and restart the server to enable the integration. )}
); } export default observer(GitHub);