parent
3823cf35ce
commit
2c71e74919
@ -0,0 +1,6 @@ |
||||
import {Dispatch} from 'react' |
||||
import {Action} from '../types' |
||||
|
||||
export const dispatchCheckRemixd = (status: boolean) => (dispatch: Dispatch<Action<'SET_REMIXD_CONNECTION_STATUS'>>) => { |
||||
dispatch({type: 'SET_REMIXD_CONNECTION_STATUS', payload: status}) |
||||
} |
@ -0,0 +1 @@ |
||||
import {Dispatch} from 'react' |
@ -1,17 +1,31 @@ |
||||
import React, { useEffect } from 'react' |
||||
import React, {useEffect, useReducer, useState} from 'react' |
||||
import {RenderIf, RenderIfNot} from '@remix-ui/helper' |
||||
import {Alert, Button, Tabs, Tab} from 'react-bootstrap' |
||||
|
||||
import { CircomPluginClient } from './services/circomPluginClient' |
||||
import {AppContext} from './contexts' |
||||
import {appInitialState, appReducer} from './reducers' |
||||
import {CircomPluginClient} from './services/circomPluginClient' |
||||
|
||||
function App() { |
||||
const [appState, dispatch] = useReducer(appReducer, appInitialState) |
||||
const [plugin, setPlugin] = useState<CircomPluginClient>(null) |
||||
|
||||
useEffect(() => { |
||||
new CircomPluginClient() |
||||
const plugin = new CircomPluginClient() |
||||
|
||||
setPlugin(plugin) |
||||
}, []) |
||||
|
||||
|
||||
const value = { |
||||
appState, |
||||
dispatch |
||||
} |
||||
|
||||
return ( |
||||
<div className="App"> |
||||
</div> |
||||
<AppContext.Provider value={value}> |
||||
<div className="App"></div> |
||||
</AppContext.Provider> |
||||
) |
||||
} |
||||
|
||||
export default App |
||||
export default App |
||||
|
@ -0,0 +1,4 @@ |
||||
import {createContext} from 'react' |
||||
import {IAppContext} from '../types' |
||||
|
||||
export const AppContext = createContext<IAppContext>({} as IAppContext) |
@ -0,0 +1,18 @@ |
||||
import {Actions, AppState} from '../types' |
||||
|
||||
export const appInitialState: AppState = { |
||||
isRemixdConnected: null |
||||
} |
||||
|
||||
export const appReducer = (state = appInitialState, action: Actions): AppState => { |
||||
switch (action.type) { |
||||
case 'SET_REMIXD_CONNECTION_STATUS': |
||||
return { |
||||
...state, |
||||
isRemixdConnected: action.payload |
||||
} |
||||
|
||||
default: |
||||
throw new Error() |
||||
} |
||||
} |
@ -0,0 +1,21 @@ |
||||
import {Dispatch} from 'react' |
||||
|
||||
export interface IAppContext { |
||||
appState: AppState |
||||
dispatch: Dispatch<any> |
||||
} |
||||
|
||||
export interface ActionPayloadTypes { |
||||
SET_REMIXD_CONNECTION_STATUS: boolean |
||||
} |
||||
|
||||
export interface Action<T extends keyof ActionPayloadTypes> { |
||||
type: T |
||||
payload: ActionPayloadTypes[T] |
||||
} |
||||
|
||||
export type Actions = {[A in keyof ActionPayloadTypes]: Action<A>}[keyof ActionPayloadTypes] |
||||
|
||||
export interface AppState { |
||||
isRemixdConnected: boolean |
||||
} |
Loading…
Reference in new issue