diff options
Diffstat (limited to 'src/components/header/authdialog/register.ts')
| -rw-r--r-- | src/components/header/authdialog/register.ts | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/components/header/authdialog/register.ts b/src/components/header/authdialog/register.ts index 3098df7..031fa69 100644 --- a/src/components/header/authdialog/register.ts +++ b/src/components/header/authdialog/register.ts @@ -52,29 +52,38 @@ export const registerUser = async ( credentials: 'include', }); - if (!res.ok) { - const errorData = await res.json(); + let data: any = null; + + try { + data = await res.json(); + } catch { + data = null; + } - const { field, message } = errorData.detail || {}; + if (!res.ok) { + const detail = data?.detail; return { data: null, - error: field - ? { [field]: message } - : { general: 'Ошибка регистрации' }, + error: detail?.field + ? { [detail.field]: detail.message } + : { general: detail?.message || 'Ошибка регистрации' }, }; } - const user = await res.json(); - return { - data: user, + data, error: null, }; } catch (err: any) { return { data: null, - error: { general: err.message }, + error: { + general: + err?.message === 'Failed to fetch' + ? 'Нет соединения с сервером' + : err?.message || 'Network error', + }, }; } }; |
