import variables from 'modules/variables'; import { PureComponent } from 'react'; import { Email, Twitter, Chat, Instagram, Facebook } from '@mui/icons-material'; import Tooltip from 'components/helpers/tooltip/Tooltip'; const other_contributors = require('modules/other_contributors.json'); export default class About extends PureComponent { getMessage = (text) => variables.language.getMessage(variables.languagecode, text); constructor() { super(); this.state = { contributors: [], sponsors: [], other_contributors: [], photographers: this.getMessage('modals.main.loading'), update: this.getMessage('modals.main.settings.sections.about.version.checking_update'), loading: this.getMessage('modals.main.loading') }; this.controller = new AbortController(); } async getGitHubData() { let contributors, sponsors, photographers, versionData; try { versionData = await (await fetch(window.constants.GITHUB_URL + '/repos/' + window.constants.ORG_NAME + '/' + window.constants.REPO_NAME + '/releases', { signal: this.controller.signal })).json(); contributors = await (await fetch(window.constants.GITHUB_URL + '/repos/'+ window.constants.ORG_NAME + '/' + window.constants.REPO_NAME + '/contributors', { signal: this.controller.signal })).json(); sponsors = (await (await fetch(window.constants.SPONSORS_URL + '/list', { signal: this.controller.signal })).json()).sponsors; photographers = await (await fetch(window.constants.API_URL + '/images/photographers', { signal: this.controller.signal })).json(); } catch (e) { if (this.controller.signal.aborted === true) { return; } return this.setState({ update: this.getMessage('modals.main.settings.sections.about.version.error.title'), loading: this.getMessage('modals.main.settings.sections.about.version.error.description') }); } if (this.controller.signal.aborted === true) { return; } const newVersion = versionData[0].tag_name; let update = this.getMessage('modals.main.settings.sections.about.version.no_update'); if (Number(window.constants.VERSION.replaceAll('.', '')) < Number(newVersion.replaceAll('.', ''))) { update = `${this.getMessage('modals.main.settings.sections.about.version.update_available')}: ${newVersion}`; } this.setState({ // exclude bots contributors: contributors.filter((contributor) => !contributor.login.includes('bot')), sponsors, update, other_contributors, photographers: photographers.sort().join(', '), loading: null }); } componentDidMount() { if (navigator.onLine === false || localStorage.getItem('offlineMode') === 'true') { this.setState({ update: this.getMessage('modals.main.settings.sections.about.version.checking_update'), loading: this.getMessage('modals.main.marketplace.offline.description') }); return; } this.getGitHubData(); } componentWillUnmount() { // stop making requests this.controller.abort(); } render() { return ( <>
{this.getMessage('modals.main.settings.sections.about.copyright')} {window.constants.COPYRIGHT_YEAR}-{new Date().getFullYear()} {window.constants.COPYRIGHT_NAME} ({window.constants.COPYRIGHT_LICENSE})
{this.getMessage('modals.main.settings.sections.about.version.title')} {window.constants.VERSION} ({this.state.update})
{this.getMessage('modals.welcome.sections.privacy.links.privacy_policy')}GitHub Sponsors • Ko-Fi • Patreon
Pexels , Unsplash ({this.getMessage('modals.main.settings.sections.about.resources_used.bg_images')})
Undraw ({this.getMessage('modals.main.settings.sections.about.resources_used.welcome_img')})
{this.state.loading}
{this.state.contributors.map(({ login, id }) => ({this.state.loading}
{this.state.sponsors.map(({ handle, avatar }) => ({this.state.photographers}
> ); } }