fix: missing problem redirects to homepage

pull/1/head
Antonio De Lucreziis 2 years ago
parent 702e40ad05
commit 438ddc8dd7

@ -39,10 +39,11 @@ type HeuristicStateUpdater<S> = StateUpdater<S>
type ResourceHookFunction = <T>(
url: string | (() => string),
initialValue: T
initialValue: T,
onError?: () => void
) => [T, RefreshFunction, HeuristicStateUpdater<T>]
export const useResource: ResourceHookFunction = (url, initialValue) => {
export const useResource: ResourceHookFunction = (url, initialValue, onError) => {
const [value, setValue] = useState(initialValue)
function refresh() {
@ -54,6 +55,7 @@ export const useResource: ResourceHookFunction = (url, initialValue) => {
if (res.ok) {
return res.json()
} else {
onError?.()
return initialValue
}
})

@ -1,6 +1,7 @@
import { route } from 'preact-router'
import { useContext, useState } from 'preact/hooks'
import { isAdministrator, Problem as ProblemModel, Solution as SolutionModel } from '../../shared/model'
import { server } from '../api'
import { isAdministrator, Solution as SolutionModel } from '../../shared/model'
import { prependBaseUrl, server } from '../api'
import { Header } from '../components/Header'
import { MarkdownEditor } from '../components/MarkdownEditor'
import { Problem } from '../components/Problem'
@ -20,9 +21,15 @@ export const ProblemPage = ({ id }: RouteProps) => {
const [source, setSource] = useState('')
const [{ content }] = useResource<{ content: string }>(`/api/problem/${id}`, {
content: '',
})
const [{ content }] = useResource<{ content?: string }>(
`/api/problem/${id}`,
{
content: '',
},
() => {
route(prependBaseUrl('/'))
}
)
const [solutions, refreshSolutions, setSolutionHeuristic] = useListResource<SolutionModel>(
`/api/solutions?problem=${id}`

Loading…
Cancel
Save