Save and receive job from backend

This commit is contained in:
Justin Edmund 2022-04-04 23:43:28 -07:00
parent 745c873e36
commit eb8e8ab4cf

View file

@ -3,6 +3,7 @@ import { useRouter } from 'next/router'
import { useSnapshot } from 'valtio' import { useSnapshot } from 'valtio'
import { useCookies } from 'react-cookie' import { useCookies } from 'react-cookie'
import clonedeep from 'lodash.clonedeep' import clonedeep from 'lodash.clonedeep'
import { subscribeKey } from 'valtio/utils'
import PartySegmentedControl from '~components/PartySegmentedControl' import PartySegmentedControl from '~components/PartySegmentedControl'
import PartyDetails from '~components/PartyDetails' import PartyDetails from '~components/PartyDetails'
@ -38,14 +39,25 @@ const Party = (props: Props) => {
// Set up states // Set up states
const { party } = useSnapshot(appState) const { party } = useSnapshot(appState)
const [job, setJob] = useState<Job>()
const [currentTab, setCurrentTab] = useState<GridType>(GridType.Weapon) const [currentTab, setCurrentTab] = useState<GridType>(GridType.Weapon)
// Update job when state changes
subscribeKey(appState.party, 'job', (value: Job) => {
setJob(value)
})
// Reset state on first load // Reset state on first load
useEffect(() => { useEffect(() => {
const resetState = clonedeep(initialAppState) const resetState = clonedeep(initialAppState)
appState.grid = resetState.grid appState.grid = resetState.grid
}, []) }, [])
useEffect(() => {
jobChanged()
}, [job])
// Methods: Creating a new party // Methods: Creating a new party
async function createParty(extra: boolean = false) { async function createParty(extra: boolean = false) {
let body = { let body = {
@ -69,6 +81,14 @@ const Party = (props: Props) => {
} }
} }
function jobChanged() {
if (party.id) {
api.endpoints.parties.update(party.id, {
'party': { 'job_id': (job) ? job.id : '' }
}, headers)
}
}
function updateDetails(name?: string, description?: string, raid?: Raid) { function updateDetails(name?: string, description?: string, raid?: Raid) {
if (appState.party.name !== name || if (appState.party.name !== name ||
appState.party.description !== description || appState.party.description !== description ||
@ -145,6 +165,7 @@ const Party = (props: Props) => {
appState.party.name = response.data.party.name appState.party.name = response.data.party.name
appState.party.description = response.data.party.description appState.party.description = response.data.party.description
appState.party.raid = response.data.party.raid appState.party.raid = response.data.party.raid
appState.party.job = response.data.party.job
}, []) }, [])
const handleError = useCallback((error: any) => { const handleError = useCallback((error: any) => {