Skip to content

Commit 1fb830d

Browse files
authored
fix: state dropdown selection (#1760)
1 parent c0f1315 commit 1fb830d

3 files changed

Lines changed: 20 additions & 26 deletions

File tree

components/appeals/PlayerAppealState.js

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import { useEffect } from 'react'
21
import Loader from '../Loader'
32
import Select from '../Select'
43
import { useMutateApi } from '../../utils'
54
import ErrorMessages from '../ErrorMessages'
65

76
export default function PlayerAppealState ({ id, currentState, states, onChange }) {
8-
const { data, loading, load, errors } = useMutateApi({
7+
const { loading, load, errors } = useMutateApi({
98
query: /* GraphQL */ `
109
mutation appealState($id: ID!, $state: ID!) {
1110
appealState(id: $id, state: $state) {
@@ -41,16 +40,13 @@ export default function PlayerAppealState ({ id, currentState, states, onChange
4140
}`
4241
})
4342

44-
useEffect(() => {
45-
if (!data) return
46-
if (Object.keys(data).some(key => !!data[key]?.appeal?.updated)) {
47-
onChange(data)
48-
}
49-
}, [data])
43+
const handleChange = async (state) => {
44+
if (currentState?.id === state.value) return
5045

51-
const handleChange = (state) => {
52-
if (currentState?.id !== state.value) {
53-
load({ id, state: state.value })
46+
const data = await load({ id, state: state.value })
47+
48+
if (data?.appealState?.appeal?.updated) {
49+
onChange(data)
5450
}
5551
}
5652

@@ -60,7 +56,7 @@ export default function PlayerAppealState ({ id, currentState, states, onChange
6056
<>
6157
<ErrorMessages errors={errors} />
6258
<Select
63-
defaultValue={currentState ? ({ value: currentState.id, label: currentState.name }) : null}
59+
value={currentState?.id}
6460
options={states}
6561
onChange={handleChange}
6662
/>

components/reports/PlayerReportState.js

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
import { useEffect } from 'react'
21
import Loader from '../Loader'
32
import Select from '../Select'
43
import { useMutateApi } from '../../utils'
54
import ErrorMessages from '../ErrorMessages'
65

76
export default function PlayerReportState ({ id, currentState, states, server, onChange }) {
8-
const { data, loading, load, errors } = useMutateApi({
7+
const { loading, load, errors } = useMutateApi({
98
query: /* GraphQL */ `
109
mutation reportState($report: ID!, $serverId: ID!, $state: ID!) {
1110
reportState(report: $report, serverId: $serverId, state: $state) {
@@ -18,16 +17,13 @@ export default function PlayerReportState ({ id, currentState, states, server, o
1817
}`
1918
})
2019

21-
useEffect(() => {
22-
if (!data) return
23-
if (Object.keys(data).some(key => !!data[key].updated)) {
24-
onChange(data)
25-
}
26-
}, [data])
20+
const handleChange = async (state) => {
21+
if (currentState?.id === state.value) return
2722

28-
const handleChange = (state) => {
29-
if (currentState?.id !== state.value) {
30-
load({ report: id, serverId: server, state: state.value })
23+
const data = await load({ report: id, serverId: server, state: state.value })
24+
25+
if (data?.reportState?.updated) {
26+
onChange(data)
3127
}
3228
}
3329

@@ -37,7 +33,7 @@ export default function PlayerReportState ({ id, currentState, states, server, o
3733
<>
3834
<ErrorMessages errors={errors} />
3935
<Select
40-
defaultValue={currentState ? ({ value: currentState.id, label: currentState.name }) : null}
36+
value={currentState?.id}
4137
options={states}
4238
onChange={handleChange}
4339
/>

utils/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,13 @@ export const useMutateApi = (operation) => {
7070
const data = await graphqlFetcher([operation.query, ...flatVars])
7171

7272
setState({ ...state, errors: null, data })
73+
setLoading(false)
74+
75+
return data
7376
} catch (error) {
7477
setState({ ...state, errors: error?.response?.errors })
78+
setLoading(false)
7579
}
76-
77-
setLoading(false)
7880
}
7981

8082
return { load, loading, ...state }

0 commit comments

Comments
 (0)