X-Git-Url: https://git.localhorst.tv/?a=blobdiff_plain;f=resources%2Fjs%2Fhooks%2Ftracker.js;h=30bf2426a7a125781f2aa5579e9e9a389f74511e;hb=d2e89b06bd80faa5085c454709c7e48c829cc6f2;hp=b77ee58dbf48233524feee501facad34a7242ab9;hpb=249e06be11d0f7778d99956c87d4f0a8ac7e69f7;p=alttp.git diff --git a/resources/js/hooks/tracker.js b/resources/js/hooks/tracker.js index b77ee58..30bf242 100644 --- a/resources/js/hooks/tracker.js +++ b/resources/js/hooks/tracker.js @@ -1,7 +1,13 @@ import PropTypes from 'prop-types'; import React from 'react'; -import { CONFIG, DUNGEONS, makeEmptyState, mergeStates } from '../helpers/tracker'; +import { + CONFIG, + DUNGEONS, + applyLogic, + makeEmptyState, + mergeStates, +} from '../helpers/tracker'; const context = React.createContext({}); @@ -13,6 +19,7 @@ export const TrackerProvider = ({ children }) => { const [autoState, setAutoState] = React.useState(makeEmptyState()); const [manualState, setManualState] = React.useState(makeEmptyState()); const [dungeons, setDungeons] = React.useState(DUNGEONS); + const [logic, setLogic] = React.useState({}); const saveConfig = React.useCallback((values) => { setConfig(s => { @@ -25,7 +32,7 @@ export const TrackerProvider = ({ children }) => { React.useEffect(() => { const savedConfig = localStorage.getItem('tracker.config'); if (savedConfig) { - setConfig(JSON.parse(savedConfig)); + setConfig(c => ({ ...c, ...JSON.parse(savedConfig) })); } }, []); @@ -56,10 +63,15 @@ export const TrackerProvider = ({ children }) => { setState(mergeStates(autoState, manualState)); }, [autoState, manualState]); - const value = React.useMemo(() => { - return { config, saveConfig, dungeons, setAutoState, setManualState, state }; + React.useEffect(() => { + setLogic(applyLogic(config, dungeons, state)); }, [config, dungeons, state]); + const value = React.useMemo(() => { + console.log(logic); + return { config, dungeons, logic, saveConfig, setAutoState, setManualState, state }; + }, [config, dungeons, logic, state]); + return {children} ;