mirror of
https://github.com/Radiquum/AniX.git
synced 2025-04-06 00:04:39 +00:00
feat: add settings loading
This commit is contained in:
parent
7c25dc043a
commit
043d8a7d89
3 changed files with 140 additions and 70 deletions
|
@ -16,6 +16,9 @@ export const ENDPOINTS = {
|
||||||
bookmark: `${API_PREFIX}/profile/list`,
|
bookmark: `${API_PREFIX}/profile/list`,
|
||||||
history: `${API_PREFIX}/history`,
|
history: `${API_PREFIX}/history`,
|
||||||
favorite: `${API_PREFIX}/favorite`,
|
favorite: `${API_PREFIX}/favorite`,
|
||||||
|
settings: {
|
||||||
|
my: `${API_PREFIX}/profile/preference/my`,
|
||||||
|
}
|
||||||
},
|
},
|
||||||
filter: `${API_PREFIX}/filter`,
|
filter: `${API_PREFIX}/filter`,
|
||||||
search: `${API_URL}/search`,
|
search: `${API_URL}/search`,
|
||||||
|
|
|
@ -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 (
|
return (
|
||||||
<Modal
|
<Modal
|
||||||
dismissible
|
dismissible
|
||||||
|
@ -8,74 +52,97 @@ export const ProfileEditModal = (props: {isOpen: boolean, setIsOpen: (isOpen: bo
|
||||||
onClose={() => props.setIsOpen(false)}
|
onClose={() => props.setIsOpen(false)}
|
||||||
size={"7xl"}
|
size={"7xl"}
|
||||||
>
|
>
|
||||||
<Modal.Header>Редактирование профиля</Modal.Header>
|
<Modal.Header>Редактирование профиля</Modal.Header>
|
||||||
<Modal.Body>
|
<Modal.Body>
|
||||||
<div className="flex flex-col gap-4">
|
{isLoading ? (
|
||||||
<div className="flex flex-col gap-4 pb-4 border-b-2 border-gray-300 border-solid">
|
<Spinner />
|
||||||
<div className="flex items-center gap-2">
|
) : (
|
||||||
<span className="w-8 h-8 iconify mdi--user"></span>
|
<div className="flex flex-col gap-4">
|
||||||
<p className="text-xl font-semibold">Профиль</p>
|
<div className="flex flex-col gap-4 pb-4 border-b-2 border-gray-300 border-solid">
|
||||||
</div>
|
<div className="flex items-center gap-2">
|
||||||
<div>
|
<span className="w-8 h-8 iconify mdi--user"></span>
|
||||||
<p className="text-lg">Изменить фото профиля</p>
|
<p className="text-xl font-bold">Профиль</p>
|
||||||
<p className="text-lg text-gray-500">Загрузить с устройства</p>
|
</div>
|
||||||
</div>
|
<div>
|
||||||
<div>
|
<p className="text-lg">Изменить фото профиля</p>
|
||||||
<p className="text-lg">Изменить статус</p>
|
<p className="text-base text-gray-500">Загрузить с устройства</p>
|
||||||
<p className="text-lg text-gray-500">статус</p>
|
</div>
|
||||||
</div>
|
<div>
|
||||||
<div>
|
<p className="text-lg">Изменить статус</p>
|
||||||
<p className="text-lg">Изменить никнейм</p>
|
<p className="text-base text-gray-500">{data.status}</p>
|
||||||
<p className="text-lg text-gray-500">никнейм</p>
|
</div>
|
||||||
</div>
|
<div>
|
||||||
<div>
|
<p className="text-lg">Изменить никнейм</p>
|
||||||
<p className="text-lg">Мои социальные сети</p>
|
</div>
|
||||||
<p className="text-lg text-gray-500">укажите ссылки на свои страницы в соц. сетях</p>
|
<div>
|
||||||
</div>
|
<p className="text-lg">Мои социальные сети</p>
|
||||||
</div>
|
<p className="text-base text-gray-500">
|
||||||
<div className="flex flex-col gap-4 pb-4 border-b-2 border-gray-300 border-solid">
|
укажите ссылки на свои страницы в соц. сетях
|
||||||
<div className="flex items-center gap-2">
|
</p>
|
||||||
<span className="w-8 h-8 iconify mdi--anonymous "></span>
|
</div>
|
||||||
<p className="text-xl font-semibold">Приватность</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<p className="text-lg">Кто видит мою статистику, оценки и историю просмотра</p>
|
|
||||||
<p className="text-lg text-gray-500">Все пользователи</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<p className="text-lg">Кто видит в профиле мои комментарии, коллекции, видео и друзей</p>
|
|
||||||
<p className="text-lg text-gray-500">Все пользователи</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<p className="text-lg">Кто видит в профиле мои социальные сети</p>
|
|
||||||
<p className="text-lg text-gray-500">Все пользователи</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<p className="text-lg">Кто может отправлять мне заявки в друзья</p>
|
|
||||||
<p className="text-lg text-gray-500">Все пользователи</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<p className="text-lg">Блоклист</p>
|
|
||||||
<p className="text-lg text-gray-500">Список пользователей, которым запрещён доступ к вашей странице</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div className="flex flex-col gap-4">
|
|
||||||
<div className="flex items-center gap-2">
|
|
||||||
<span className="w-8 h-8 iconify mdi--shield"></span>
|
|
||||||
<p className="text-xl font-semibold">Безопасность и привязка к сервисам</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<p className="text-lg">Изменить Email или Пароль</p>
|
|
||||||
<p className="text-lg text-gray-500">Изменить возможно только в мобильном приложении</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<p className="text-lg">Привязка к сервисам</p>
|
|
||||||
<p className="text-lg text-gray-500">Изменить возможно только в мобильном приложении</p>
|
|
||||||
<p className="text-lg text-gray-500">Аккаунт привязан к: сер1, сер2</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</Modal.Body>
|
<div className="flex flex-col gap-4 pb-4 border-b-2 border-gray-300 border-solid">
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<span className="w-8 h-8 iconify mdi--anonymous "></span>
|
||||||
|
<p className="text-xl font-bold">Приватность</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-lg">
|
||||||
|
Кто видит мою статистику, оценки и историю просмотра
|
||||||
|
</p>
|
||||||
|
<p className="text-base text-gray-500">{privacy_stat_act_social_text[data.privacy_stats]}</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-lg">
|
||||||
|
Кто видит в профиле мои комментарии, коллекции, видео и друзей
|
||||||
|
</p>
|
||||||
|
<p className="text-base text-gray-500">{privacy_stat_act_social_text[data.privacy_counts]}</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-lg">
|
||||||
|
Кто видит в профиле мои социальные сети
|
||||||
|
</p>
|
||||||
|
<p className="text-base text-gray-500">{privacy_stat_act_social_text[data.privacy_social]}</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-lg">
|
||||||
|
Кто может отправлять мне заявки в друзья
|
||||||
|
</p>
|
||||||
|
<p className="text-base text-gray-500">{privacy_friend_req_text[data.privacy_friend_requests]}</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-lg">Блоклист</p>
|
||||||
|
<p className="text-base text-gray-500">
|
||||||
|
Список пользователей, которым запрещён доступ к вашей странице
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div className="flex flex-col gap-4">
|
||||||
|
<div className="flex items-center gap-2">
|
||||||
|
<span className="w-8 h-8 iconify mdi--shield"></span>
|
||||||
|
<p className="text-xl font-bold">
|
||||||
|
Безопасность и привязка к сервисам
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-lg">Изменить Email или Пароль</p>
|
||||||
|
<p className="text-base text-gray-500">
|
||||||
|
Изменить возможно только в мобильном приложении
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-lg">Привязка к сервисам</p>
|
||||||
|
<p className="text-base text-gray-500">
|
||||||
|
Изменить возможно только в мобильном приложении
|
||||||
|
</p>
|
||||||
|
<p className="text-base text-gray-500">
|
||||||
|
{(socialBounds.vk || socialBounds.google) ? "Аккаунт привязан к:" : "не привязан к сервисам"} {socialBounds.vk && "ВК"}{socialBounds.vk && socialBounds.google && ", "}{socialBounds.google && "Google"}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
|
</Modal.Body>
|
||||||
</Modal>
|
</Modal>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -207,7 +207,7 @@ export const ProfilePage = (props: any) => {
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<ProfileEditModal isOpen={isOpen && isMyProfile} setIsOpen={setIsOpen} />
|
<ProfileEditModal isOpen={isOpen && isMyProfile} setIsOpen={setIsOpen} token={authUser.token} />
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Reference in a new issue