@@ -3,6 +3,7 @@ import { FC, useContext, useEffect } from 'react'
33import { sleep } from './tools'
44import { ErrorContext } from './hooks/error'
55import { fireLoadEvent } from './events'
6+ import { ConfigContext } from './hooks/config'
67
78let devConnected = false
89
@@ -20,6 +21,7 @@ export const DevReload: FC<{ enabled?: boolean }> = ({ enabled }) => {
2021
2122const DevReloadActive = ( ) => {
2223 const { setError } = useContext ( ErrorContext )
24+ const { rootUrl } = useContext ( ConfigContext )
2325
2426 useEffect ( ( ) => {
2527 let listening = true
@@ -34,21 +36,22 @@ const DevReloadActive = () => {
3436 if ( ! listening || failCount >= 5 ) {
3537 return count
3638 }
37- const response = await fetch ( '/api /__dev__/reload')
39+ const response = await fetch ( rootUrl + ' /__dev__/reload')
3840 count ++
3941 console . debug ( `dev reload connected ${ count } ...` )
4042 // if the response is okay, and we previously failed, clear error
4143 if ( response . ok && failCount > 0 ) {
4244 setError ( null )
45+ } else if ( response . status === 404 ) {
46+ console . log ( 'dev reload endpoint not found, disabling dev reload' )
47+ return count
4348 }
4449 // await like this means we wait for the entire response to be received
4550 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' ) ) {
5052 failCount = 0
51- const value = parseInt ( text . replace ( / \. / g, '' ) ) || 0
53+ const valueMatch = text . match ( / ( \d + ) $ / )
54+ const value = valueMatch ? parseInt ( valueMatch [ 1 ] ! ) : 0
5255 if ( value !== lastValue ) {
5356 lastValue = value
5457 // wait long enough for the server to be back online
@@ -57,6 +60,9 @@ const DevReloadActive = () => {
5760 fireLoadEvent ( { reloadValue : value } )
5861 setError ( null )
5962 }
63+ } else if ( response . ok ) {
64+ console . log ( "dev reload endpoint didn't return magic value, disabling dev reload" )
65+ return count
6066 } else {
6167 failCount ++
6268 await sleep ( 2000 )
@@ -72,6 +78,6 @@ const DevReloadActive = () => {
7278 devConnected = false
7379 }
7480 }
75- } , [ setError ] )
81+ } , [ setError , rootUrl ] )
7682 return < > </ >
7783}
0 commit comments