Skip to content

Commit

Permalink
Merge pull request #340 from nowcommunity/locality-notifications
Browse files Browse the repository at this point in the history
Add missing fields to locality edit failure notification
  • Loading branch information
juhanikat authored Oct 11, 2024
2 parents ca3fc53 + 314c303 commit 162b689
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 6 deletions.
4 changes: 2 additions & 2 deletions backend/src/api-tests/locality/contradictory_loc.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ describe('Min and max age checks work', () => {
locality: locality,
})

expect(putReqStatus).toEqual(400)
expect(putReqStatus).toEqual(403)

const { body: getReqBody, status: getReqStatus } = await send<LocalityDetailsType>(`locality/all`, 'GET')
expect(getReqStatus).toEqual(200)
Expand All @@ -39,7 +39,7 @@ describe('Min and max age checks work', () => {
locality.max_age = 9
const writeResult = await send<{ id: number }>('locality', 'PUT', { locality: locality })

expect(writeResult.status).toEqual(400)
expect(writeResult.status).toEqual(403)
expect(writeResult.body).toEqual({})
})
})
2 changes: 1 addition & 1 deletion backend/src/routes/locality.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ router.put(
const { comment, references, ...editedLocality } = req.body.locality
const validationErrors = validateEntireLocality(editedLocality)
if (validationErrors.length > 0) {
return res.status(400).send({ validationErrors })
return res.status(403).send(validationErrors)
}
const result = await writeLocality(editedLocality, comment, references, req.user!.initials)
return res.status(200).send({ id: result })
Expand Down
20 changes: 17 additions & 3 deletions frontend/src/components/Locality/LocalityDetails.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import { MuseumTab } from './Tabs/MuseumTab'
import { ProjectTab } from './Tabs/ProjectTab'
import { SpeciesTab } from './Tabs/SpeciesTab'
import { TaphonomyTab } from './Tabs/TaphonomyTab'
import { EditDataType, LocalityDetailsType } from '@/backendTypes'
import { EditDataType, LocalityDetailsType, ValidationErrors } from '@/backendTypes'
import { validateLocality } from '@/validators/locality'
import { UpdateTab } from '../DetailView/common/UpdateTab'
import { emptyLocality } from '../DetailView/common/defaultValues'
Expand Down Expand Up @@ -58,8 +58,22 @@ export const LocalityDetails = () => {
}

const onWrite = async (editData: EditDataType<LocalityDetailsType>) => {
const { id } = await editLocalityRequest(editData).unwrap()
navigate(`/locality/${id}`)
try {
const { id } = await editLocalityRequest(editData).unwrap()
setTimeout(() => navigate(`/locality/${id}`), 15)
notify('Edited item succesfully.')
} catch (e) {
if (e && typeof e === 'object' && 'status' in e && e.status !== 403) {
notify('Could not edit item. Error happened.', 'error')
} else {
const error = e as ValidationErrors
let message = 'Could not save item. Missing: '
Object.keys(error.data).forEach(key => {
message += `${error.data[key].name}, `
})
notify(message, 'error')
}
}
}

const tabs: TabType[] = [
Expand Down

0 comments on commit 162b689

Please sign in to comment.