|
import { json } from "@remix-run/node"; |
|
import type { LoaderFunctionArgs } from "@remix-run/node"; |
|
import { useLoaderData, Link } from "@remix-run/react"; |
|
import { requireUserSession } from "~/lib/session.server"; |
|
import { githubApp } from "~/lib/github-app.server"; |
|
|
|
export async function loader({ request }: LoaderFunctionArgs) { |
|
const userSession = await requireUserSession(request); |
|
|
|
|
|
const installationUrl = githubApp.getInstallationUrl( |
|
`user:${userSession.login}` |
|
); |
|
|
|
return json({ |
|
user: userSession, |
|
installationUrl, |
|
}); |
|
} |
|
|
|
export default function InstallApp() { |
|
const { user, installationUrl } = useLoaderData<typeof loader>(); |
|
|
|
return ( |
|
<div className="min-h-screen bg-gray-50 py-8"> |
|
<div className="max-w-2xl mx-auto px-4"> |
|
<div className="bg-white rounded-lg shadow-md p-6"> |
|
<div className="flex items-center justify-between mb-6"> |
|
<h1 className="text-2xl font-bold text-gray-900"> |
|
Install GitHub App |
|
</h1> |
|
<Link |
|
to="/dashboard" |
|
className="text-blue-600 hover:text-blue-700 text-sm font-medium" |
|
> |
|
β Back to Dashboard |
|
</Link> |
|
</div> |
|
|
|
<div className="space-y-6"> |
|
<div className="bg-blue-50 border border-blue-200 rounded-lg p-4"> |
|
<div className="flex"> |
|
<div className="flex-shrink-0"> |
|
<svg className="h-5 w-5 text-blue-400" viewBox="0 0 20 20" fill="currentColor"> |
|
<path fillRule="evenodd" d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z" clipRule="evenodd" /> |
|
</svg> |
|
</div> |
|
<div className="ml-3"> |
|
<h3 className="text-sm font-medium text-blue-800"> |
|
Install Required |
|
</h3> |
|
<div className="mt-2 text-sm text-blue-700"> |
|
<p> |
|
To receive webhooks and interact with repositories, you need to install |
|
the HugeX GitHub App on your repositories or organization. |
|
</p> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
|
|
<div className="bg-gray-50 rounded-lg p-4"> |
|
<h2 className="text-lg font-semibold text-gray-900 mb-4"> |
|
What happens when you install? |
|
</h2> |
|
<ul className="space-y-2 text-gray-600"> |
|
<li className="flex items-start"> |
|
<svg className="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"> |
|
<path fillRule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clipRule="evenodd" /> |
|
</svg> |
|
The app will be able to receive webhook events from your selected repositories |
|
</li> |
|
<li className="flex items-start"> |
|
<svg className="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"> |
|
<path fillRule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clipRule="evenodd" /> |
|
</svg> |
|
Events will be associated with your authenticated user account |
|
</li> |
|
<li className="flex items-start"> |
|
<svg className="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"> |
|
<path fillRule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clipRule="evenodd" /> |
|
</svg> |
|
The app can perform actions on your behalf using your user token |
|
</li> |
|
<li className="flex items-start"> |
|
<svg className="w-5 h-5 text-green-500 mr-2 mt-0.5 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"> |
|
<path fillRule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clipRule="evenodd" /> |
|
</svg> |
|
You can uninstall the app at any time from your GitHub settings |
|
</li> |
|
</ul> |
|
</div> |
|
|
|
<div className="text-center"> |
|
<a |
|
href={installationUrl} |
|
target="_blank" |
|
rel="noopener noreferrer" |
|
className="inline-flex items-center px-6 py-3 border border-transparent text-base font-medium rounded-md text-white bg-gray-900 hover:bg-gray-800 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-gray-500" |
|
> |
|
<svg className="w-5 h-5 mr-2" fill="currentColor" viewBox="0 0 24 24"> |
|
<path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/> |
|
</svg> |
|
Install HugeX GitHub App |
|
</a> |
|
</div> |
|
|
|
<div className="text-center text-sm text-gray-500"> |
|
<p> |
|
This will open GitHub in a new tab where you can choose which repositories |
|
to install the app on. You can install it on specific repositories or your entire organization. |
|
</p> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
</div> |
|
); |
|
} |
|
|