diff --git a/client/src/pages/me/ui/sections/AuthMethodsSection.tsx b/client/src/pages/me/ui/sections/AuthMethodsSection.tsx index 8df4011..ca090cd 100644 --- a/client/src/pages/me/ui/sections/AuthMethodsSection.tsx +++ b/client/src/pages/me/ui/sections/AuthMethodsSection.tsx @@ -19,6 +19,7 @@ import { unlinkOAuthFx, type AuthMethod, } from '@/shared/model/auth' +import { getErrorMessage } from '@/shared/lib/get-error-message' const METHOD_LABELS: Record = { password: 'Пароль', vk: 'ВКонтакте', yandex: 'Яндекс' } @@ -95,7 +96,7 @@ export function AuthMethodsSection() { return url }, onSuccess: (url) => setVerificationUrl(url), - onError: (err) => setEmailChangeError(err?.message || 'Не удалось сменить email'), + onError: (err) => setEmailChangeError(getErrorMessage(err, 'Не удалось сменить email')), }) if (!user) return null diff --git a/client/src/shared/lib/get-error-message.ts b/client/src/shared/lib/get-error-message.ts index a9e2f5c..11f3176 100644 --- a/client/src/shared/lib/get-error-message.ts +++ b/client/src/shared/lib/get-error-message.ts @@ -1,4 +1,8 @@ export function getErrorMessage(error: unknown, fallback = 'Произошла ошибка'): string { + if (error && typeof error === 'object' && 'response' in error) { + const axiosErr = error as { response?: { data?: { error?: string } } } + if (axiosErr.response?.data?.error) return axiosErr.response.data.error + } if (error instanceof Error && error.message) return error.message return fallback } diff --git a/server/prisma/prisma/dev.db b/server/prisma/prisma/dev.db index 873e50e..fcc9ce1 100644 Binary files a/server/prisma/prisma/dev.db and b/server/prisma/prisma/dev.db differ diff --git a/server/src/routes/user-payments.js b/server/src/routes/user-payments.js index 9d89bc4..643d661 100644 --- a/server/src/routes/user-payments.js +++ b/server/src/routes/user-payments.js @@ -49,7 +49,8 @@ export async function registerUserPaymentRoutes(fastify) { } const idempotencyKey = `${id}-${Date.now()}` - const returnUrl = `${process.env.CLIENT_PUBLIC_URL || 'http://127.0.0.1:5173'}/me/orders/${id}?paid=1` + const clientUrl = (process.env.CLIENT_PUBLIC_URL || 'http://127.0.0.1:5173').replace(/\/$/, '') + const returnUrl = `${clientUrl}/me/orders/${id}?paid=1` const clientIp = request.ip const amount = {