import { buildMessengerBotStartUrl } from '~/composables/useMessengerBotLink'; type MessengerChannel = 'TELEGRAM' | 'MAX'; type MessengerStartResponse = { ok: true; startToken: string; expiresAt: string; mode: 'login' | 'connect'; }; type MessengerStartInput = { channel: MessengerChannel; baseUrl: string; email?: string; }; export function useMessengerStart() { const pendingChannel = ref(null); async function openMessengerBot({ channel, baseUrl, email }: MessengerStartInput) { pendingChannel.value = channel; const payloadPromise = $fetch('/api/auth/messenger-start', { method: 'POST', body: { channel, email, }, }); payloadPromise.finally(() => { pendingChannel.value = null; }); const payload = await payloadPromise; const startUrl = buildMessengerBotStartUrl(baseUrl, payload.startToken); if (import.meta.client) { window.open(startUrl, '_blank', 'noopener,noreferrer'); } return payload; } return { pendingChannel, openMessengerBot, }; }