feat: complete onboarding flow

This commit is contained in:
Zoe
2026-10-08 14:04:29 -05:00
parent fae05ebc4c
commit 61f9bb74b4
16 changed files with 684 additions and 297 deletions
+2 -5
View File
@@ -1,5 +1,6 @@
<script setup lang="ts">
import { deriveKey } from '~/utils/crypto';
import { timeLeft } from '~/utils/time';
const { client: authClient, signUp, session } = useAuth();
@@ -12,8 +13,6 @@ if (session.value !== null) {
await navigateTo(to ?? '/');
}
const DAY_MS = 24 * 60 * 60 * 1000;
// who may register is an instance setting, admins change it while it runs
const { data: instance } = await useFetch('/api/instance', { key: 'instance' });
@@ -43,9 +42,7 @@ const blocked = computed(() => inviteOnly.value && validInvite.value === null);
const inviteValidFor = computed(() => {
if (!validInvite.value) return '';
const days = Math.max(1, Math.ceil((new Date(validInvite.value.expiresAt).getTime() - Date.now()) / DAY_MS));
return `Invite valid for ${days} more ${days === 1 ? 'day' : 'days'}${validInvite.value.singleUse ? ' · single use' : ''}`;
return `Invite valid for ${timeLeft(validInvite.value.expiresAt)} more${validInvite.value.singleUse ? ' · single use' : ''}`;
});
const form = reactive({