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'