From 541b264b953f4fa58258a3f1b9dbcfc242e4e77e Mon Sep 17 00:00:00 2001 From: Ruslan Bakiev <572431+veikab@users.noreply.github.com> Date: Fri, 3 Apr 2026 18:45:40 +0700 Subject: [PATCH] feat(profile): add dedicated telegram success page --- app/pages/login.vue | 1 + app/pages/notifications.vue | 2 +- app/pages/profile/notifications.vue | 71 +------------ app/pages/profile/notifications/success.vue | 112 ++++++++++++++++++++ 4 files changed, 115 insertions(+), 71 deletions(-) create mode 100644 app/pages/profile/notifications/success.vue diff --git a/app/pages/login.vue b/app/pages/login.vue index c49b77d..627608a 100644 --- a/app/pages/login.vue +++ b/app/pages/login.vue @@ -185,6 +185,7 @@ async function startMessengerLogin(channel: 'TELEGRAM' | 'MAX') { channel, baseUrl, email: normalizedEmail.value, + redirectPath: `/profile/notifications/success?connected=${channel.toLowerCase()}`, }); } diff --git a/app/pages/notifications.vue b/app/pages/notifications.vue index efbf88b..9d40536 100644 --- a/app/pages/notifications.vue +++ b/app/pages/notifications.vue @@ -78,7 +78,7 @@ async function connectMessenger(channel: 'TELEGRAM' | 'MAX') { await openMessengerBot({ channel, baseUrl, - redirectPath: `/profile/notifications?status=success&connected=${channel.toLowerCase()}`, + redirectPath: `/profile/notifications/success?connected=${channel.toLowerCase()}`, }); } diff --git a/app/pages/profile/notifications.vue b/app/pages/profile/notifications.vue index 2562632..b9159c1 100644 --- a/app/pages/profile/notifications.vue +++ b/app/pages/profile/notifications.vue @@ -23,7 +23,6 @@ type MessengerItem = { }; const config = useRuntimeConfig(); -const route = useRoute(); const meQuery = useQuery(MeDocument); const connectionsQuery = useQuery(MyMessengerConnectionsDocument); const { openMessengerBot, pendingChannel } = useMessengerStart(); @@ -51,47 +50,6 @@ function buildBotConnectUrl(baseUrl: string) { const telegramConnectUrl = computed(() => buildBotConnectUrl(config.public.telegramBotUrl || '')); const maxConnectUrl = computed(() => buildBotConnectUrl(config.public.maxBotUrl || '')); -const successChannel = computed(() => { - const raw = String(route.query.connected || '').trim().toLowerCase(); - return raw === 'telegram' || raw === 'max' ? raw : ''; -}); -const showSuccess = computed(() => route.query.status === 'success' && Boolean(successChannel.value)); -const profileName = computed(() => meQuery.result.value?.me?.fullName?.trim() || meQuery.result.value?.me?.email || 'Пользователь'); -const profileInitials = computed(() => - profileName.value - .split(' ') - .filter(Boolean) - .slice(0, 2) - .map((part) => part.charAt(0).toUpperCase()) - .join('') || 'FR', -); -const successTitle = computed(() => - successChannel.value === 'telegram' ? 'Telegram успешно подключен' : 'Max успешно подключен', -); -const successText = computed(() => - successChannel.value === 'telegram' - ? 'Теперь этот Telegram привязан к вашему кабинету, и уведомления будут приходить в него.' - : 'Теперь этот Max привязан к вашему кабинету, и уведомления будут приходить в него.', -); -const successConnection = computed(() => - successChannel.value === 'telegram' ? telegramConnection.value : maxConnection.value, -); -const successAvatarSrc = computed(() => messengerConnectionAvatarSrc(successConnection.value)); -const successAvatarInitials = computed(() => - messengerConnectionInitials( - successConnection.value, - profileInitials.value, - ), -); -const successConnectionName = computed(() => messengerConnectionName(successConnection.value)); -const successConnectionHandleValue = computed(() => messengerConnectionHandle(successConnection.value)); - -onMounted(() => { - if (showSuccess.value) { - void connectionsQuery.refetch(); - void meQuery.refetch(); - } -}); async function connectMessenger(channel: 'TELEGRAM' | 'MAX') { const baseUrl = channel === 'TELEGRAM' ? telegramConnectUrl.value : maxConnectUrl.value; @@ -102,7 +60,7 @@ async function connectMessenger(channel: 'TELEGRAM' | 'MAX') { await openMessengerBot({ channel, baseUrl, - redirectPath: `/profile/notifications?status=success&connected=${channel.toLowerCase()}`, + redirectPath: `/profile/notifications/success?connected=${channel.toLowerCase()}`, }); } @@ -112,33 +70,6 @@ async function connectMessenger(channel: 'TELEGRAM' | 'MAX') { ← Назад в профиль

Уведомления

-
-
-
-
- -
-
-
-
- {{ successAvatarInitials }} -
-
- -
-
Успешно
-

{{ successTitle }}

-
- {{ successConnectionName }} - {{ successConnectionHandleValue }} -
-

- {{ successText }} -

-
-
-
-

Подключите Telegram и Max, чтобы получать статусы заказов и важные уведомления в удобном канале. diff --git a/app/pages/profile/notifications/success.vue b/app/pages/profile/notifications/success.vue new file mode 100644 index 0000000..522bc57 --- /dev/null +++ b/app/pages/profile/notifications/success.vue @@ -0,0 +1,112 @@ + + +