From 043d8a7d895fb7487fcca095ade34cd65a78fb00 Mon Sep 17 00:00:00 2001 From: Kentai Radiquum Date: Wed, 18 Sep 2024 22:09:43 +0500 Subject: [PATCH] feat: add settings loading --- app/api/config.ts | 3 + app/components/Profile/Profile.EditModal.tsx | 205 ++++++++++++------- app/pages/Profile.tsx | 2 +- 3 files changed, 140 insertions(+), 70 deletions(-) diff --git a/app/api/config.ts b/app/api/config.ts index 9d0dd09..890377e 100644 --- a/app/api/config.ts +++ b/app/api/config.ts @@ -16,6 +16,9 @@ export const ENDPOINTS = { bookmark: `${API_PREFIX}/profile/list`, history: `${API_PREFIX}/history`, favorite: `${API_PREFIX}/favorite`, + settings: { + my: `${API_PREFIX}/profile/preference/my`, + } }, filter: `${API_PREFIX}/filter`, search: `${API_URL}/search`, diff --git a/app/components/Profile/Profile.EditModal.tsx b/app/components/Profile/Profile.EditModal.tsx index 102118d..ac1857a 100644 --- a/app/components/Profile/Profile.EditModal.tsx +++ b/app/components/Profile/Profile.EditModal.tsx @@ -1,6 +1,50 @@ -import { Modal } from "flowbite-react"; +"use client"; + +import { Modal } from "flowbite-react"; +import { Spinner } from "../Spinner/Spinner"; +import useSWR from "swr"; +import { ENDPOINTS } from "#/api/config"; + +const fetcher = async (url: string) => { + const res = await fetch(url); + + if (!res.ok) { + const error = new Error( + `An error occurred while fetching the data. status: ${res.status}` + ); + error.message = await res.json(); + throw error; + } + + return res.json(); +}; + +export const ProfileEditModal = (props: { + isOpen: boolean; + setIsOpen: (isOpen: boolean) => void; + token: string; +}) => { + + const privacy_stat_act_social_text = { + 0: 'Все пользователи', + 1: 'Только друзья', + 2: 'Только я' + } + const privacy_friend_req_text = { + 0: 'Все пользователи', + 1: 'Никто' + } + + const { data, isLoading, error } = useSWR( + `${ENDPOINTS.user.settings.my}?token=${props.token}`, + fetcher + ); + + const socialBounds = { + 'vk': data.is_vk_bound || data.isVkBound || false, + 'google': data.is_google_bound || data.isGoogleBound || false + } -export const ProfileEditModal = (props: {isOpen: boolean, setIsOpen: (isOpen: boolean) => void}) => { return ( props.setIsOpen(false)} size={"7xl"} > - Редактирование профиля - -
-
-
- -

Профиль

-
-
-

Изменить фото профиля

-

Загрузить с устройства

-
-
-

Изменить статус

-

статус

-
-
-

Изменить никнейм

-

никнейм

-
-
-

Мои социальные сети

-

укажите ссылки на свои страницы в соц. сетях

-
-
-
-
- -

Приватность

-
-
-

Кто видит мою статистику, оценки и историю просмотра

-

Все пользователи

-
-
-

Кто видит в профиле мои комментарии, коллекции, видео и друзей

-

Все пользователи

-
-
-

Кто видит в профиле мои социальные сети

-

Все пользователи

-
-
-

Кто может отправлять мне заявки в друзья

-

Все пользователи

-
-
-

Блоклист

-

Список пользователей, которым запрещён доступ к вашей странице

-
-
-
-
- -

Безопасность и привязка к сервисам

-
-
-

Изменить Email или Пароль

-

Изменить возможно только в мобильном приложении

-
-
-

Привязка к сервисам

-

Изменить возможно только в мобильном приложении

-

Аккаунт привязан к: сер1, сер2

-
-
+ Редактирование профиля + + {isLoading ? ( + + ) : ( +
+
+
+ +

Профиль

+
+
+

Изменить фото профиля

+

Загрузить с устройства

+
+
+

Изменить статус

+

{data.status}

+
+
+

Изменить никнейм

+
+
+

Мои социальные сети

+

+ укажите ссылки на свои страницы в соц. сетях +

+
- +
+
+ +

Приватность

+
+
+

+ Кто видит мою статистику, оценки и историю просмотра +

+

{privacy_stat_act_social_text[data.privacy_stats]}

+
+
+

+ Кто видит в профиле мои комментарии, коллекции, видео и друзей +

+

{privacy_stat_act_social_text[data.privacy_counts]}

+
+
+

+ Кто видит в профиле мои социальные сети +

+

{privacy_stat_act_social_text[data.privacy_social]}

+
+
+

+ Кто может отправлять мне заявки в друзья +

+

{privacy_friend_req_text[data.privacy_friend_requests]}

+
+
+

Блоклист

+

+ Список пользователей, которым запрещён доступ к вашей странице +

+
+
+
+
+ +

+ Безопасность и привязка к сервисам +

+
+
+

Изменить Email или Пароль

+

+ Изменить возможно только в мобильном приложении +

+
+
+

Привязка к сервисам

+

+ Изменить возможно только в мобильном приложении +

+

+ {(socialBounds.vk || socialBounds.google) ? "Аккаунт привязан к:" : "не привязан к сервисам"} {socialBounds.vk && "ВК"}{socialBounds.vk && socialBounds.google && ", "}{socialBounds.google && "Google"} +

+
+
+
+ )} +
); }; diff --git a/app/pages/Profile.tsx b/app/pages/Profile.tsx index 0dccc46..2123708 100644 --- a/app/pages/Profile.tsx +++ b/app/pages/Profile.tsx @@ -207,7 +207,7 @@ export const ProfilePage = (props: any) => { )}
- + ); };