diff --git a/components/PartySegmentedControl/index.tsx b/components/PartySegmentedControl/index.tsx index 3f0698b7..c9c006c4 100644 --- a/components/PartySegmentedControl/index.tsx +++ b/components/PartySegmentedControl/index.tsx @@ -1,6 +1,8 @@ -import React from 'react' +import React, { useContext } from 'react' import './index.scss' +import PartyContext from '~context/PartyContext' + import SegmentedControl from '~components/SegmentedControl' import Segment from '~components/Segment' import ToggleSwitch from '~components/ToggleSwitch' @@ -22,6 +24,19 @@ interface Props { } const PartySegmentedControl = (props: Props) => { + const { element } = useContext(PartyContext) + + function getElement() { + switch(element) { + case 1: return "wind"; break + case 2: return "fire"; break + case 3: return "water"; break + case 4: return "earth"; break + case 5: return "dark"; break + case 6: return "light"; break + } + } + const extraToggle =
Extra @@ -35,7 +50,7 @@ const PartySegmentedControl = (props: Props) => { return (
- + = ({ children }) => { +const SegmentedControl: React.FC = ({ elementClass, children }) => { return (
-
+
{children}
diff --git a/components/WeaponGrid/index.tsx b/components/WeaponGrid/index.tsx index 7749be6d..c1e05f8f 100644 --- a/components/WeaponGrid/index.tsx +++ b/components/WeaponGrid/index.tsx @@ -1,11 +1,13 @@ /* eslint-disable react-hooks/exhaustive-deps */ -import React, { useCallback, useEffect, useMemo, useState } from 'react' +import React, { useCallback, useContext, useEffect, useMemo, useState } from 'react' import { useCookies } from 'react-cookie' import { useModal as useModal } from '~utils/useModal' import { AxiosResponse } from 'axios' import debounce from 'lodash.debounce' +import PartyContext from '~context/PartyContext' + import SearchModal from '~components/SearchModal' import WeaponUnit from '~components/WeaponUnit' import ExtraWeapons from '~components/ExtraWeapons' @@ -47,6 +49,9 @@ const WeaponGrid = (props: Props) => { // Set up state for party const [partyId, setPartyId] = useState('') + // Set up the party context + const { setElement } = useContext(PartyContext) + // Set up states for Grid data const [weapons, setWeapons] = useState>({}) const [mainWeapon, setMainWeapon] = useState() @@ -76,6 +81,10 @@ const WeaponGrid = (props: Props) => { setPreviousUncapValues(initialPreviousUncapValues) }, [props]) + useEffect(() => { + if (mainWeapon) setElement(mainWeapon.weapon.element) + }, [mainWeapon]) + // Update search grid whenever weapons or the mainhand are updated useEffect(() => { let newSearchGrid = Object.values(weapons).map((o) => o.weapon) diff --git a/context/PartyContext.tsx b/context/PartyContext.tsx new file mode 100644 index 00000000..c0bd324a --- /dev/null +++ b/context/PartyContext.tsx @@ -0,0 +1,9 @@ +import { createContext } from 'react' +import { TeamElement } from '~utils/enums' + +const PartyContext = createContext({ + element: TeamElement.Any, + setElement: (element: TeamElement) => {} +}) + +export default PartyContext \ No newline at end of file diff --git a/pages/_app.tsx b/pages/_app.tsx index f01ddfaa..5bee096a 100644 --- a/pages/_app.tsx +++ b/pages/_app.tsx @@ -5,18 +5,24 @@ import { CookiesProvider } from 'react-cookie' import Layout from '~components/Layout' import AppContext from '~context/AppContext' +import PartyContext from '~context/PartyContext' import type { AppProps } from 'next/app' +import { TeamElement } from '~utils/enums' function MyApp({ Component, pageProps }: AppProps) { const [authenticated, setAuthenticated] = useState(false) const [editable, setEditable] = useState(false) + const [element, setElement] = useState(TeamElement.Any) + return ( - - - + + + + + ) diff --git a/utils/enums.tsx b/utils/enums.tsx new file mode 100644 index 00000000..f55ca8d8 --- /dev/null +++ b/utils/enums.tsx @@ -0,0 +1,9 @@ +export enum TeamElement { + Any, + Wind, + Fire, + Water, + Earth, + Dark, + Light +} \ No newline at end of file