import { component$, Slot, useContextProvider } from '@builder.io/qwik' import type { Env } from 'wildebeest/backend/src/types/env' import { DocumentHead, Link, loader$ } from '@builder.io/qwik-city' import * as instance from 'wildebeest/functions/api/v1/instance' import type { InstanceConfig } from 'wildebeest/backend/src/types/configs' import LeftColumn from '~/components/layout/LeftColumn/LeftColumn' import RightColumn from '~/components/layout/RightColumn/RightColumn' import { WildebeestLogo } from '~/components/MastodonLogo' import { getCommitHash } from '~/utils/getCommitHash' import { InstanceConfigContext } from '~/utils/instanceConfig' import { getDocumentHead } from '~/utils/getDocumentHead' export const instanceLoader = loader$< Promise, { DATABASE: D1Database; INSTANCE_TITLE: string; INSTANCE_DESCR: string; ADMIN_EMAIL: string } >(async ({ platform, html }) => { const env = { INSTANCE_DESCR: platform.INSTANCE_DESCR, INSTANCE_TITLE: platform.INSTANCE_TITLE, ADMIN_EMAIL: platform.ADMIN_EMAIL, } as Env try { const response = await instance.handleRequest('', env) const results = await response.text() const json = JSON.parse(results) as InstanceConfig return json } catch { throw html(500, 'An error occurred whilst retrieving the instance details') } }) export default component$(() => { useContextProvider(InstanceConfigContext, instanceLoader().value) const commitHash = getCommitHash() return ( <>
) }) export const head: DocumentHead = ({ resolveValue, head }) => { const instance = resolveValue(instanceLoader) return getDocumentHead( { description: instance.short_description ?? instance.description, og: { type: 'website', url: instance.uri, image: instance.thumbnail, }, }, head ) }