- React.useEffect(() => {
- const newDungeons = DUNGEONS.map(dungeon => {
- const newDungeon = JSON.parse(JSON.stringify(dungeon));
- if (config.wildMap && dungeon.map) {
- ++newDungeon.items;
- }
- if (config.wildCompass && dungeon.compass) {
- ++newDungeon.items;
- }
- if (config.wildSmall) {
- newDungeon.items += dungeon.sk;
- }
- if (config.wildBig && dungeon.bk && !dungeon.dropBk) {
- ++newDungeon.items;
- }
- if (!config.bossShuffle && dungeon.boss) {
- newDungeon.bosses = [dungeon.boss];
- }
- return newDungeon;
+ const saveConfig = React.useCallback((values) => {
+ setConfig(s => {
+ const newConfig = { ...s, ...values };
+ localStorage.setItem('tracker.config', JSON.stringify(newConfig));
+ return newConfig;
+ });
+ }, []);
+
+ const addPin = React.useCallback((pin) => {
+ setPins(ps => {
+ const id = ps.length ? ps[ps.length - 1].id + 1 : 1;
+ return [...ps, { ...pin, id }];