diff --git a/app/composables/useMessengerBotLink.ts b/app/composables/useMessengerBotLink.ts new file mode 100644 index 0000000..f2b694a --- /dev/null +++ b/app/composables/useMessengerBotLink.ts @@ -0,0 +1,10 @@ +export function buildMessengerBotStartUrl(baseUrl: string, email: string) { + const normalizedEmail = email.trim().toLowerCase(); + if (!baseUrl || !normalizedEmail) { + return ''; + } + + const payload = encodeURIComponent(`login:${normalizedEmail}`); + const separator = baseUrl.includes('?') ? '&' : '?'; + return `${baseUrl}${separator}start=${payload}`; +} diff --git a/app/pages/login.vue b/app/pages/login.vue index 1c47948..ea9be48 100644 --- a/app/pages/login.vue +++ b/app/pages/login.vue @@ -5,6 +5,7 @@ import { RequestLoginCodeDocument, VerifyLoginCodeDocument, } from '~/composables/graphql/generated'; +import { buildMessengerBotStartUrl } from '~/composables/useMessengerBotLink'; const config = useRuntimeConfig(); const route = useRoute(); @@ -35,18 +36,12 @@ const maxBotUrl = computed(() => config.public.maxBotUrl || ''); const normalizedEmail = computed(() => email.value.trim().toLowerCase()); const isEmailReady = computed(() => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(normalizedEmail.value)); -function buildBotLoginUrl(baseUrl: string) { - if (!isEmailReady.value || !baseUrl) { - return ''; - } - - const payload = encodeURIComponent(`login:${normalizedEmail.value}`); - const separator = baseUrl.includes('?') ? '&' : '?'; - return `${baseUrl}${separator}start=${payload}`; -} - -const telegramLoginUrl = computed(() => buildBotLoginUrl(telegramBotUrl.value)); -const maxLoginUrl = computed(() => buildBotLoginUrl(maxBotUrl.value)); +const telegramLoginUrl = computed(() => + isEmailReady.value ? buildMessengerBotStartUrl(telegramBotUrl.value, normalizedEmail.value) : '', +); +const maxLoginUrl = computed(() => + isEmailReady.value ? buildMessengerBotStartUrl(maxBotUrl.value, normalizedEmail.value) : '', +); async function finalizeSession(accessToken: string) { authCookie.value = accessToken; diff --git a/app/pages/notifications.vue b/app/pages/notifications.vue index 559f479..6837b21 100644 --- a/app/pages/notifications.vue +++ b/app/pages/notifications.vue @@ -6,6 +6,7 @@ import { MyNotificationHistoryDocument, SendTestMessengerMessageDocument, } from '~/composables/graphql/generated'; +import { buildMessengerBotStartUrl } from '~/composables/useMessengerBotLink'; const selectedChannel = ref<'TELEGRAM' | 'MAX'>('TELEGRAM'); const customMessage = ref('Тест канала уведомлений Fregat'); @@ -55,9 +56,7 @@ function buildBotConnectUrl(baseUrl: string) { return ''; } - const payload = encodeURIComponent(`login:${email}`); - const separator = baseUrl.includes('?') ? '&' : '?'; - return `${baseUrl}${separator}start=${payload}`; + return buildMessengerBotStartUrl(baseUrl, email); } const telegramConnectUrl = computed(() => buildBotConnectUrl(config.public.telegramBotUrl || '')); diff --git a/app/pages/profile.vue b/app/pages/profile.vue index daebf8f..9297c0e 100644 --- a/app/pages/profile.vue +++ b/app/pages/profile.vue @@ -1,6 +1,7 @@