From b55b39efd81c09ff351c55a555f5c1cb87d50ca8 Mon Sep 17 00:00:00 2001 From: Daniel Roe Date: Sat, 13 Jun 2026 13:35:15 +0100 Subject: [PATCH] fix: render /connect page with no js --- app/pages/connect.vue | 28 +++++++++++++--------------- nuxt.config.ts | 2 +- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/app/pages/connect.vue b/app/pages/connect.vue index ac282ec..c762d85 100644 --- a/app/pages/connect.vue +++ b/app/pages/connect.vue @@ -8,22 +8,20 @@ useSeoMeta({ const route = useRoute() -const installationId = computed(() => { - const raw = route.query.installation_id - return typeof raw === 'string' && /^\d+$/.test(raw) ? raw : null -}) -const verified = computed(() => route.query.verified === '1') - -const { data: info } = await useFetch('/api/connect/info', { - query: { installationId }, - immediate: !!installationId.value, - ignoreResponseError: true, -}) - -const login = computed(() => - (typeof route.query.login === 'string' ? route.query.login : null) ?? info.value?.login ?? null, +const rawId = route.query.installation_id +const installationId = typeof rawId === 'string' && /^\d+$/.test(rawId) ? rawId : null +const verified = route.query.verified === '1' +const loginFromQuery = typeof route.query.login === 'string' ? route.query.login : null + +const { data: info } = await useAsyncData( + `connect-info-${installationId}`, + () => installationId && !loginFromQuery + ? $fetch('/api/connect/info', { query: { installationId } }).catch(() => null) + : Promise.resolve(null), ) -const accountLabel = computed(() => login.value ?? 'your GitHub account') + +const login = loginFromQuery ?? info.value?.login ?? null +const accountLabel = login ?? 'your GitHub account'