lasthourcloud/src/routes/sources/[id]/newGithubApp.svelte
2022-04-03 14:14:59 +02:00

90 lines
2.3 KiB
Svelte

<script context="module" lang="ts">
import type { Load } from '@sveltejs/kit';
import { onMount } from 'svelte';
export const load: Load = async ({ fetch, params, stuff }) => {
if (stuff?.source) {
return {
props: {
source: stuff.source,
settings: stuff.settings
}
};
}
const url = `/sources/${params.id}.json`;
const res = await fetch(url);
if (res.ok) {
return {
props: {
...(await res.json())
}
};
}
return {
status: res.status,
error: new Error(`Could not load ${url}`)
};
};
</script>
<script>
import { dev } from '$app/env';
import { getDomain, dashify } from '$lib/components/common';
import { t } from '$lib/translations';
export let source;
export let settings;
onMount(() => {
const { organization, id, htmlUrl } = source;
const { fqdn } = settings;
const host = dev
? 'http://localhost:3000'
: fqdn
? fqdn
: `http://${window.location.host}` || '';
const domain = getDomain(fqdn);
let url = 'settings/apps/new';
if (organization) url = `organizations/${organization}/settings/apps/new`;
const name = dashify(domain) || 'app';
const data = JSON.stringify({
name: `coolify-${name}`,
url: host,
hook_attributes: {
url: dev
? 'https://webhook.site/0e5beb2c-4e9b-40e2-a89e-32295e570c21/events'
: `${host}/webhooks/github/events`
},
redirect_url: `${host}/webhooks/github`,
callback_urls: [`${host}/login/github/app`],
public: false,
request_oauth_on_install: false,
setup_url: `${host}/webhooks/github/install?gitSourceId=${id}`,
setup_on_update: true,
default_permissions: {
contents: 'read',
metadata: 'read',
pull_requests: 'read',
emails: 'read'
},
default_events: ['pull_request', 'push']
});
const form = document.createElement('form');
form.setAttribute('method', 'post');
form.setAttribute('action', `${htmlUrl}/${url}?state=${id}`);
const input = document.createElement('input');
input.setAttribute('id', 'manifest');
input.setAttribute('name', 'manifest');
input.setAttribute('type', 'hidden');
input.setAttribute('value', data);
form.appendChild(input);
document.getElementsByTagName('body')[0].appendChild(form);
form.submit();
});
</script>
<div class="flex h-screen items-center justify-center text-3xl font-bold">
{$t('source.github.redirecting')}
</div>