import React, { createContext, useEffect, useState } from 'react'; import PropTypes from 'prop-types'; import { InfinityMintClient } from '../client'; import useClientContext from '../effects/useClientContext'; import { Dictionary } from 'infinitymint/dist/app/helpers'; import { Project } from '../core/project'; import Dashboard from '../Dashboard'; import storageController from '../core/storage'; import { InfinityMintClientConfig } from '../core/interfaces'; import WebEvents from '../webEvents'; export interface ClientContextType { controller: InfinityMintClient; loaded: boolean; error: Error; projects: Dictionary; project: Project; admin: boolean; } export const ClientContext = createContext({ loaded: false, controller: null, error: null, projects: {}, project: null, admin: false, } as ClientContextType); function ClientContextProvider({ children, config, }: { children: any; config: InfinityMintClientConfig; }) { const { loaded, controller, error, projects, project, admin } = useClientContext({ config, }); const [showDashboard, setShowDashboard] = useState( storageController.getGlobalPreference('showDashboard') ); const [showSetup, setShowSetup] = useState( storageController.getGlobalPreference('showSetup') ); useEffect(() => { const toggleDashboard = () => { setShowDashboard(!showDashboard); storageController.setGlobalPreference( 'showDashboard', !showDashboard ); }; WebEvents.off('toggleDashboard', toggleDashboard); WebEvents.on('toggleDashboard', toggleDashboard); return () => { WebEvents.off('toggleDashboard', toggleDashboard); }; }, [showDashboard]); return ( <> {error ? ( <>
{ e.currentTarget.style.display = 'none'; }} >

InfinityMint Error

{error.message}

{error.stack}
) : null} {!error && showDashboard && loaded ? ( { setShowDashboard(false); storageController.setGlobalPreference( 'showDashboard', false ); storageController.save(); }} /> ) : ( children )}
); } ClientContextProvider.propTypes = { children: PropTypes.any, }; export default ClientContextProvider;