import variables from 'config/variables'; import { useState, useEffect } from 'react'; import { MdEmail, MdContactPage } from 'react-icons/md'; import { FaDiscord } from 'react-icons/fa'; import { SiGithubsponsors, SiOpencollective, SiX } from 'react-icons/si'; import { BiDonateHeart } from 'react-icons/bi'; import { Tooltip, Button } from 'components/Elements'; function About() { const [contributors, setContributors] = useState([]); const [sponsors, setSponsors] = useState([]); const [photographers, setPhotographers] = useState([]); const [curators, setCurators] = useState([]); const [update, setUpdate] = useState( variables.getMessage('settings:sections.about.version.checking_update'), ); const [loading, setLoading] = useState(variables.getMessage('modals.main.loading')); const controller = new AbortController(); useEffect(() => { return () => { controller.abort(); }; }, []); const getGitHubData = async () => { let contributors, sponsors, photographers, curators, versionData; try { versionData = await ( await fetch( variables.constants.GITHUB_URL + '/repos/' + variables.constants.ORG_NAME + '/' + variables.constants.REPO_NAME + '/releases', { signal: controller.signal }, ) ).json(); contributors = await ( await fetch( variables.constants.GITHUB_URL + '/repos/' + variables.constants.ORG_NAME + '/' + variables.constants.REPO_NAME + '/contributors', { signal: controller.signal }, ) ).json(); sponsors = await ( await fetch(variables.constants.SPONSORS_URL + '/list', { signal: controller.signal, }) ).json().sponsors; photographers = await ( await fetch(variables.constants.API_URL + '/images/photographers', { signal: controller.signal, }) ).json(); curators = ( await ( await fetch(variables.constants.API_URL + '/marketplace/curators', { signal: controller.signal, }) ).json() ).data; } catch (e) { if (controller.signal.aborted === true) { return; } setUpdate(variables.getMessage('settings:sections.about.version.error.title')); setLoading(variables.getMessage('settings:sections.about.version.error.description')); } if (sponsors.length === 0) { sponsors = [{ handle: 'empty' }]; } if (controller.signal.aborted === true) { return; } const newVersion = versionData[0].tag_name; let update = variables.getMessage('settings:sections.about.version.no_update'); if ( Number(variables.constants.VERSION.replaceAll('.', '')) < Number(newVersion.replaceAll('.', '')) ) { update = `${variables.getMessage( 'settings:sections.about.version.update_available', )}: ${newVersion}`; } setContributors(contributors.filter((contributor) => !contributor.login.includes('bot'))); setSponsors(sponsors); setUpdate(update); setPhotographers(photographers); setCurators(curators); setLoading(null); }; useEffect(() => { if (navigator.onLine === false || localStorage.getItem('offlineMode') === 'true') { setUpdate(variables.getMessage('marketplace:offline.description')); setLoading(variables.getMessage('marketplace:offline.description')); return; } getGitHubData(); }, []); return (
{variables.getMessage('settings:sections.about.support_subtitle')}
{loading}
{loading}
{loading}
: <>>}{loading}
: <>>}