-
Notifications
You must be signed in to change notification settings - Fork 0
/
ItiReactCoreContext.ts
50 lines (43 loc) · 1.55 KB
/
ItiReactCoreContext.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import moment from 'moment-timezone'
import React from 'react'
export interface ItiReactCoreContextData {
onError(e: unknown): void
useSimpleAutoRefreshQuery: {
defaultRefreshInterval: moment.Duration
// number of consecutive errors required to trigger onConnectionError()
connectionErrorThreshold: number
isConnectionError(e: unknown): boolean
}
}
export interface DefaultItiReactCoreContextData {
useSimpleAutoRefreshQuery: Omit<
ItiReactCoreContextData['useSimpleAutoRefreshQuery'],
'isConnectionError'
>
}
/**
* Defaults for **parts** of [[`ItiReactCoreContextData`]]. Does not include defaults
* for properties where there is no reasonable default value.
*/
export const defaultItiReactCoreContextData: DefaultItiReactCoreContextData = {
useSimpleAutoRefreshQuery: {
defaultRefreshInterval: moment.duration(1, 'minute'),
connectionErrorThreshold: 2,
},
}
const throwFunction = (): never => {
throw new Error('ItiReactCoreContextData is not set.')
}
/**
* A context that provides configuration values used by code within `iti-react-core`.
* You must wrap your application in with `<ItiReactCoreContext.Provider>`.
*/
// The default value set here should never be used
export const ItiReactCoreContext = React.createContext<ItiReactCoreContextData>({
...defaultItiReactCoreContextData,
onError: throwFunction,
useSimpleAutoRefreshQuery: {
...defaultItiReactCoreContextData.useSimpleAutoRefreshQuery,
isConnectionError: throwFunction,
},
})