@@ -19,7 +19,10 @@ import {
19
19
import { LanguageModel } from '@/types/ModelSelector' ;
20
20
import pplxApi from '@/utils/pplx-api' ;
21
21
import { ui } from '@/utils/ui' ;
22
- import { useQuery } from '@tanstack/react-query' ;
22
+ import {
23
+ UndefinedInitialDataOptions ,
24
+ useQuery ,
25
+ } from '@tanstack/react-query' ;
23
26
24
27
import useQueryBoxObserver from '../hooks/useQueryBoxObserver' ;
25
28
import { Separator } from '../ui/separator' ;
@@ -39,15 +42,48 @@ export default function QueryBox() {
39
42
userSettings : false ,
40
43
} ) ;
41
44
45
+ const autoRefreshSessionTimeout = usePopupSettingsStore (
46
+ ( state ) => state . qolTweaks . autoRefreshSessionTimeout
47
+ ) ;
48
+
49
+ const queryOptions : Pick <
50
+ UndefinedInitialDataOptions ,
51
+ 'refetchIntervalInBackground' | 'retry'
52
+ > = autoRefreshSessionTimeout
53
+ ? {
54
+ refetchIntervalInBackground : true ,
55
+ retry : false ,
56
+ }
57
+ : { } ;
58
+
42
59
const {
43
60
data : userSettings ,
44
61
isLoading : isLoadingUserSettings ,
45
62
refetch : refetchUserSettings ,
63
+ error : userSettingsError ,
46
64
} = useQuery ( {
47
65
queryKey : [ 'userSettings' ] ,
48
66
queryFn : pplxApi . fetchUserSettings ,
67
+ refetchInterval : 10000 ,
68
+ ...queryOptions ,
49
69
} ) ;
50
70
71
+ useEffect ( ( ) => {
72
+ if ( ! autoRefreshSessionTimeout ) return ;
73
+
74
+ if ( userSettingsError ?. message === 'Cloudflare timeout' ) {
75
+ toast ( {
76
+ title : '⚠️ Cloudflare timeout!' ,
77
+ description : 'Refreshing the page...' ,
78
+ timeout : 3000 ,
79
+ } ) ;
80
+
81
+ setTimeout ( ( ) => {
82
+ window . location . reload ( ) ;
83
+ } , 3000 ) ;
84
+ }
85
+ } , [ userSettingsError , autoRefreshSessionTimeout , toast ] ) ;
86
+
51
87
useQuery ( {
52
88
queryKey : [ 'userProfileSettings' ] ,
53
89
queryFn : pplxApi . fetchUserProfileSettings ,
0 commit comments