"use client"; import { Modal } from "flowbite-react"; import { Spinner } from "../Spinner/Spinner"; import useSWR from "swr"; import { ENDPOINTS } from "#/api/config"; import { useEffect, useState } from "react"; import { unixToDate } from "#/api/utils"; import { ProfileEditPrivacyModal } from "./Profile.EditPrivacyModal"; import { ProfileEditStatusModal } from "./Profile.EditStatusModal"; import { ProfileEditSocialModal } from "./Profile.EditSocialModal"; 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; profile_id: number; }) => { const [privacyModalOpen, setPrivacyModalOpen] = useState(false); const [statusModalOpen, setStatusModalOpen] = useState(false); const [socialModalOpen, setSocialModalOpen] = useState(false); const [privacyModalSetting, setPrivacyModalSetting] = useState("none"); const [privacySettings, setPrivacySettings] = useState({ privacy_stats: 9, privacy_counts: 9, privacy_social: 9, privacy_friend_requests: 9, }); const [socialBounds, setSocialBounds] = useState({ vk: false, google: false, }); const [status, setStatus] = useState(""); const [login, setLogin] = useState(""); const privacy_stat_act_social_text = { 0: "Все пользователи", 1: "Только друзья", 2: "Только я", 9: "Неизвестно", }; const privacy_friend_req_text = { 0: "Все пользователи", 1: "Никто", 9: "Неизвестно", }; function _fetchInfo(url: string) { const { data, isLoading, error } = useSWR(url, 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(() => { if (prefData) { setPrivacySettings({ privacy_stats: prefData.privacy_stats, privacy_counts: prefData.privacy_counts, privacy_social: prefData.privacy_social, privacy_friend_requests: prefData.privacy_friend_requests, }); setSocialBounds({ vk: prefData.is_vk_bound || prefData.isVkBound || false, google: prefData.is_google_bound || prefData.isGoogleBound || false, }); setStatus(prefData.status); } }, [prefData]); useEffect(() => { if (loginData) { setLogin(loginData.login); } }, [loginData]); return ( <> props.setIsOpen(false)} size={"7xl"} > Редактирование профиля {prefLoading ? ( ) : (

Профиль

Некоторые изменения будут видны после перезагрузки страницы

Приватность

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

Недоступно для изменения в данном клиенте

Связанные аккаунты

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

)}
); };