import { useEffect, useState } from '@wordpress/element';
import { decodeEntities } from '@wordpress/html-entities';
import { __ } from '@wordpress/i18n';
import { updateOption, getOption } from '@launch/api/WPApi';
import { AcceptTerms } from '@launch/components/BusinessInformation/AcceptTerms';
import { SiteTones } from '@launch/components/BusinessInformation/Tones';
import { LoadingIndicator } from '@launch/components/LoadingIndicator';
import { Title } from '@launch/components/Title';
import { useFetch } from '@launch/hooks/useFetch';
import { PageLayout } from '@launch/layouts/PageLayout';
import { usePagesStore } from '@launch/state/Pages';
import { pageState } from '@launch/state/factory';
import { useUserSelectionStore } from '@launch/state/user-selections';
const fetcher = async () => ({ title: await getOption('blogname') });
const fetchData = () => ({ key: 'site-info' });
export const state = pageState('Site Information', () => ({
ready: false,
canSkip: false,
useNav: true,
onRemove: () => {},
}));
export const SiteInformation = () => {
const { loading } = useFetch(fetchData, fetcher);
const nextPage = usePagesStore((state) => state.nextPage);
const {
businessInformation,
setBusinessInformation,
siteInformation,
setSiteInformation,
setSiteProfile,
} = useUserSelectionStore();
const [title, setTitle] = useState(
decodeEntities(siteInformation.title || ''),
);
const [description, setDescription] = useState(
businessInformation.description || '',
);
useEffect(() => {
state.setState({ ready: false });
const timer = setTimeout(() => {
setSiteInformation('title', title);
setBusinessInformation('description', description);
state.setState({ ready: !!title.length });
}, 1000);
return () => clearTimeout(timer);
}, [title, description, setSiteInformation, setBusinessInformation]);
useEffect(() => {
setSiteProfile(undefined); // this also resets state
updateOption('extendify_site_profile', null);
}, [setSiteProfile, description, title]);
return (