import { format } from "date-fns"; import { useEffect, useState } from "react"; import { GithubIcon } from "@/components/icons/data-tools-icons"; import { Button } from "@/components/ui/button"; import { CardContent } from "@/components/ui/card"; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Switch } from "@/components/ui/switch"; import { api } from "@/utils/api"; import { DEFAULT_GITHUB_URL, resolveGithubBaseUrl } from "@/utils/github-utils"; export const AddGithubProvider = () => { const [isOpen, setIsOpen] = useState(false); const { data: activeOrganization } = api.organization.active.useQuery(); const { data: session } = api.user.session.useQuery(); const { data } = api.user.get.useQuery(); const [manifest, setManifest] = useState(""); const [isOrganization, setIsOrganization] = useState(false); const [organizationName, setOrganization] = useState(""); const [githubUrl, setGithubUrl] = useState(DEFAULT_GITHUB_URL); const { baseUrl, error: githubUrlError } = resolveGithubBaseUrl(githubUrl); const randomString = () => Math.random().toString(36).slice(2, 8); useEffect(() => { const url = document.location.origin; const manifest = JSON.stringify( { redirect_url: `${origin}/api/providers/github/setup?organizationId=${activeOrganization?.id ?? ""}&userId=${session?.user?.id ?? ""}&githubUrl=${encodeURIComponent(baseUrl)}`, name: `Dokploy-${format(new Date(), "yyyy-MM-dd")}-${randomString()}`, url: origin, hook_attributes: { url: `${url}/api/deploy/github`, }, callback_urls: [`${origin}/api/providers/github/setup`], public: false, request_oauth_on_install: true, default_permissions: { contents: "read", metadata: "read", emails: "read", pull_requests: "write", }, default_events: ["pull_request", "push"], }, null, 4, ); setManifest(manifest); }, [activeOrganization?.id, session?.user?.id, baseUrl]); return ( Github Provider

To integrate your GitHub account with our services, you'll need to create and install a GitHub app. This process is straightforward and only takes a few minutes. Click the button below to get started.

GitHub URL setGithubUrl(e.target.value)} /> Leave as is for github.com. For GitHub Enterprise, use your instance URL (e.g. https://acme.ghe.com or https://github.acme.com). {githubUrlError && ( {githubUrlError} )}
Organization? setIsOrganization(checked)} />
{isOrganization && ( setOrganization(e.target.value)} /> )}

); };