mirror of
https://github.com/Radiquum/AniX.git
synced 2025-04-06 00:04:39 +00:00
feat: add login to the preference modal
This commit is contained in:
parent
6f1e48983a
commit
8138286233
3 changed files with 64 additions and 39 deletions
|
@ -18,6 +18,11 @@ export const ENDPOINTS = {
|
||||||
favorite: `${API_PREFIX}/favorite`,
|
favorite: `${API_PREFIX}/favorite`,
|
||||||
settings: {
|
settings: {
|
||||||
my: `${API_PREFIX}/profile/preference/my`,
|
my: `${API_PREFIX}/profile/preference/my`,
|
||||||
|
login: {
|
||||||
|
info: `${API_PREFIX}/profile/preference/login/info`,
|
||||||
|
history: `${API_PREFIX}/profile/login/history/all`, // /<user_id>/<page>
|
||||||
|
change: `${API_PREFIX}/profile/preference/login/change`, // ?login=<url_encoded_string>
|
||||||
|
},
|
||||||
statusEdit: `${API_PREFIX}/profile/preference/status/edit`,
|
statusEdit: `${API_PREFIX}/profile/preference/status/edit`,
|
||||||
statsEdit: `${API_PREFIX}/profile/preference/privacy/stats/edit`,
|
statsEdit: `${API_PREFIX}/profile/preference/privacy/stats/edit`,
|
||||||
countsEdit: `${API_PREFIX}/profile/preference/privacy/counts/edit`,
|
countsEdit: `${API_PREFIX}/profile/preference/privacy/counts/edit`,
|
||||||
|
|
|
@ -41,6 +41,7 @@ export const ProfileEditModal = (props: {
|
||||||
google: false,
|
google: false,
|
||||||
});
|
});
|
||||||
const [status, setStatus] = useState("");
|
const [status, setStatus] = useState("");
|
||||||
|
const [login, setLogin] = useState("");
|
||||||
|
|
||||||
const privacy_stat_act_social_text = {
|
const privacy_stat_act_social_text = {
|
||||||
0: "Все пользователи",
|
0: "Все пользователи",
|
||||||
|
@ -54,26 +55,39 @@ export const ProfileEditModal = (props: {
|
||||||
9: "Неизвестно",
|
9: "Неизвестно",
|
||||||
};
|
};
|
||||||
|
|
||||||
const { data, isLoading, error } = useSWR(
|
function _fetchInfo(url: string) {
|
||||||
`${ENDPOINTS.user.settings.my}?token=${props.token}`,
|
const { data, isLoading, error } = useSWR(url, fetcher);
|
||||||
fetcher
|
return [data, isLoading, error];
|
||||||
|
}
|
||||||
|
|
||||||
|
const [prefData, prefLoading, prefError] = _fetchInfo(
|
||||||
|
`${ENDPOINTS.user.settings.my}?token=${props.token}`
|
||||||
|
);
|
||||||
|
const [loginData, loginLoading, loginError] = _fetchInfo(
|
||||||
|
`${ENDPOINTS.user.settings.login.info}?token=${props.token}`
|
||||||
);
|
);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (data) {
|
if (prefData) {
|
||||||
setPrivacySettings({
|
setPrivacySettings({
|
||||||
privacy_stats: data.privacy_stats,
|
privacy_stats: prefData.privacy_stats,
|
||||||
privacy_counts: data.privacy_counts,
|
privacy_counts: prefData.privacy_counts,
|
||||||
privacy_social: data.privacy_social,
|
privacy_social: prefData.privacy_social,
|
||||||
privacy_friend_requests: data.privacy_friend_requests,
|
privacy_friend_requests: prefData.privacy_friend_requests,
|
||||||
});
|
});
|
||||||
setSocialBounds({
|
setSocialBounds({
|
||||||
vk: data.is_vk_bound || data.isVkBound || false,
|
vk: prefData.is_vk_bound || prefData.isVkBound || false,
|
||||||
google: data.is_google_bound || data.isGoogleBound || false,
|
google: prefData.is_google_bound || prefData.isGoogleBound || false,
|
||||||
});
|
});
|
||||||
setStatus(data.status);
|
setStatus(prefData.status);
|
||||||
}
|
}
|
||||||
}, [data]);
|
}, [prefData]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (loginData) {
|
||||||
|
setLogin(loginData.login);
|
||||||
|
}
|
||||||
|
}, [loginData]);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
@ -84,21 +98,26 @@ export const ProfileEditModal = (props: {
|
||||||
>
|
>
|
||||||
<Modal.Header>Редактирование профиля</Modal.Header>
|
<Modal.Header>Редактирование профиля</Modal.Header>
|
||||||
<Modal.Body>
|
<Modal.Body>
|
||||||
{isLoading ? (
|
{prefLoading ? (
|
||||||
<Spinner />
|
<Spinner />
|
||||||
) : (
|
) : (
|
||||||
<div className="flex flex-col gap-4">
|
<div className="flex flex-col gap-4">
|
||||||
<div className="flex flex-col gap-4 pb-4 border-b-2 border-gray-300 border-solid">
|
<div className="flex flex-col gap-2 pb-4 border-b-2 border-gray-300 border-solid">
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<span className="w-8 h-8 iconify mdi--user"></span>
|
<span className="w-8 h-8 iconify mdi--user"></span>
|
||||||
<p className="text-xl font-bold">Профиль</p>
|
<div className="flex flex-col">
|
||||||
|
<p className="text-xl font-bold">Профиль</p>
|
||||||
|
<p className="text-base text-gray-500">
|
||||||
|
Изменения будут видны после перезагрузки страницы
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<button className="p-2 text-left rounded-md hover:bg-gray-100">
|
||||||
<p className="text-lg">Изменить фото профиля</p>
|
<p className="text-lg">Изменить фото профиля</p>
|
||||||
<p className="text-base text-gray-500">
|
<p className="text-base text-gray-500">
|
||||||
Загрузить с устройства
|
Загрузить с устройства
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</button>
|
||||||
<button
|
<button
|
||||||
className="p-2 text-left rounded-md hover:bg-gray-100"
|
className="p-2 text-left rounded-md hover:bg-gray-100"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
@ -110,17 +129,18 @@ export const ProfileEditModal = (props: {
|
||||||
{status}
|
{status}
|
||||||
</p>
|
</p>
|
||||||
</button>
|
</button>
|
||||||
<div>
|
<button className="p-2 text-left rounded-md hover:bg-gray-100">
|
||||||
<p className="text-lg">Изменить никнейм</p>
|
<p className="text-lg">Изменить никнейм</p>
|
||||||
</div>
|
<p className="text-base text-gray-500">{login}</p>
|
||||||
<div>
|
</button>
|
||||||
|
<button className="p-2 text-left rounded-md hover:bg-gray-100">
|
||||||
<p className="text-lg">Мои социальные сети</p>
|
<p className="text-lg">Мои социальные сети</p>
|
||||||
<p className="text-base text-gray-500">
|
<p className="text-base text-gray-500">
|
||||||
укажите ссылки на свои страницы в соц. сетях
|
укажите ссылки на свои страницы в соц. сетях
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col gap-4 pb-4 border-b-2 border-gray-300 border-solid">
|
<div className="flex flex-col gap-2 pb-4 border-b-2 border-gray-300 border-solid">
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<span className="w-8 h-8 iconify mdi--anonymous "></span>
|
<span className="w-8 h-8 iconify mdi--anonymous "></span>
|
||||||
<p className="text-xl font-bold">Приватность</p>
|
<p className="text-xl font-bold">Приватность</p>
|
||||||
|
@ -198,32 +218,28 @@ export const ProfileEditModal = (props: {
|
||||||
}
|
}
|
||||||
</p>
|
</p>
|
||||||
</button>
|
</button>
|
||||||
<div>
|
<button className="p-2 text-left rounded-md hover:bg-gray-100">
|
||||||
<p className="text-lg">Блоклист</p>
|
<p className="text-lg">Блоклист</p>
|
||||||
<p className="text-base text-gray-500">
|
<p className="text-base text-gray-500">
|
||||||
Список пользователей, которым запрещён доступ к вашей
|
Список пользователей, которым запрещён доступ к вашей
|
||||||
странице
|
странице
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex flex-col gap-4">
|
<div>
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<span className="w-8 h-8 iconify mdi--shield"></span>
|
<span className="w-8 h-8 iconify mdi--shield"></span>
|
||||||
<p className="text-xl font-bold">
|
<div className="flex flex-col">
|
||||||
Безопасность и привязка к сервисам
|
<p className="text-xl font-bold">
|
||||||
</p>
|
Безопасность и привязка к сервисам
|
||||||
|
</p>
|
||||||
|
<p className="text-base text-gray-500">
|
||||||
|
Не доступно для изменения в данном клиенте
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div className="p-2 mt-2 cursor-not-allowed">
|
||||||
<p className="text-lg">Изменить Email или Пароль</p>
|
|
||||||
<p className="text-base text-gray-500">
|
|
||||||
Изменить возможно только в мобильном приложении
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<p className="text-lg">Привязка к сервисам</p>
|
<p className="text-lg">Привязка к сервисам</p>
|
||||||
<p className="text-base text-gray-500">
|
|
||||||
Изменить возможно только в мобильном приложении
|
|
||||||
</p>
|
|
||||||
<p className="text-base text-gray-500">
|
<p className="text-base text-gray-500">
|
||||||
{socialBounds.vk || socialBounds.google
|
{socialBounds.vk || socialBounds.google
|
||||||
? "Аккаунт привязан к:"
|
? "Аккаунт привязан к:"
|
||||||
|
@ -233,6 +249,9 @@ export const ProfileEditModal = (props: {
|
||||||
{socialBounds.google && "Google"}
|
{socialBounds.google && "Google"}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
<div className="p-2 cursor-not-allowed">
|
||||||
|
<p className="text-lg">Смена Эл. Почты или Пароля</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
|
|
|
@ -61,6 +61,7 @@ export const ProfileEditStatusModal = (props: {
|
||||||
<Modal.Header>Изменить статус</Modal.Header>
|
<Modal.Header>Изменить статус</Modal.Header>
|
||||||
<Modal.Body>
|
<Modal.Body>
|
||||||
<Textarea
|
<Textarea
|
||||||
|
disabled={loading}
|
||||||
rows={3}
|
rows={3}
|
||||||
id="status"
|
id="status"
|
||||||
className="w-full"
|
className="w-full"
|
||||||
|
@ -74,7 +75,7 @@ export const ProfileEditStatusModal = (props: {
|
||||||
</p>
|
</p>
|
||||||
</Modal.Body>
|
</Modal.Body>
|
||||||
<Modal.Footer>
|
<Modal.Footer>
|
||||||
<Button color="blue" onClick={() => _setStatusSetting()}>Сохранить</Button>
|
<Button color="blue" onClick={() => _setStatusSetting()} disabled={loading}>Сохранить</Button>
|
||||||
<Button color="red" onClick={() => props.setIsOpen(false)}>
|
<Button color="red" onClick={() => props.setIsOpen(false)}>
|
||||||
Отмена
|
Отмена
|
||||||
</Button>
|
</Button>
|
||||||
|
|
Loading…
Add table
Reference in a new issue