@@ -3,6 +3,7 @@ import { FC, useContext, useEffect } from 'react'
3
3
import { sleep } from './tools'
4
4
import { ErrorContext } from './hooks/error'
5
5
import { fireLoadEvent } from './events'
6
+ import { ConfigContext } from './hooks/config'
6
7
7
8
let devConnected = false
8
9
@@ -20,6 +21,7 @@ export const DevReload: FC<{ enabled?: boolean }> = ({ enabled }) => {
20
21
21
22
const DevReloadActive = ( ) => {
22
23
const { setError } = useContext ( ErrorContext )
24
+ const { rootUrl } = useContext ( ConfigContext )
23
25
24
26
useEffect ( ( ) => {
25
27
let listening = true
@@ -34,21 +36,22 @@ const DevReloadActive = () => {
34
36
if ( ! listening || failCount >= 5 ) {
35
37
return count
36
38
}
37
- const response = await fetch ( '/api /__dev__/reload')
39
+ const response = await fetch ( rootUrl + ' /__dev__/reload')
38
40
count ++
39
41
console . debug ( `dev reload connected ${ count } ...` )
40
42
// if the response is okay, and we previously failed, clear error
41
43
if ( response . ok && failCount > 0 ) {
42
44
setError ( null )
45
+ } else if ( response . status === 404 ) {
46
+ console . log ( 'dev reload endpoint not found, disabling dev reload' )
47
+ return count
43
48
}
44
49
// await like this means we wait for the entire response to be received
45
50
const text = await response . text ( )
46
- if ( response . status === 404 ) {
47
- console . log ( 'dev reload endpoint not found, disabling dev reload' )
48
- return count
49
- } else if ( response . ok ) {
51
+ if ( response . ok && text . startsWith ( 'fastui-dev-reload' ) ) {
50
52
failCount = 0
51
- const value = parseInt ( text . replace ( / \. / g, '' ) ) || 0
53
+ const valueMatch = text . match ( / ( \d + ) $ / )
54
+ const value = valueMatch ? parseInt ( valueMatch [ 1 ] ! ) : 0
52
55
if ( value !== lastValue ) {
53
56
lastValue = value
54
57
// wait long enough for the server to be back online
@@ -57,6 +60,9 @@ const DevReloadActive = () => {
57
60
fireLoadEvent ( { reloadValue : value } )
58
61
setError ( null )
59
62
}
63
+ } else if ( response . ok ) {
64
+ console . log ( "dev reload endpoint didn't return magic value, disabling dev reload" )
65
+ return count
60
66
} else {
61
67
failCount ++
62
68
await sleep ( 2000 )
@@ -72,6 +78,6 @@ const DevReloadActive = () => {
72
78
devConnected = false
73
79
}
74
80
}
75
- } , [ setError ] )
81
+ } , [ setError , rootUrl ] )
76
82
return < > </ >
77
83
}
0 commit comments