@@ -9,13 +9,14 @@ import { throttleFn } from './utils/throttle'
99import { setTimers , timers as timer } from './utils/timers'
1010import { now } from './utils/now'
1111
12- import { EventType } from './types/EventType'
13- import { IEventHandler } from './types/IEventHandler'
14- import { IIdleTimer } from './types/IIdleTimer'
15- import { IIdleTimerProps } from './types/IIdleTimerProps'
16- import { EventsType } from './types/EventsType'
17- import { MessageType } from './types/MessageType'
18- import { PresenceType } from './types/PresenceType'
12+ import type { EventType } from './types/EventType'
13+ import type { IEventHandler } from './types/IEventHandler'
14+ import type { IIdleTimer } from './types/IIdleTimer'
15+ import type { IIdleTimerProps } from './types/IIdleTimerProps'
16+ import type { IPresenceChangeHandler } from './types/IPresenceChangeHandler'
17+ import type { IMessageHandler } from './types/IMessageHandler'
18+ import type { EventsType } from './types/EventsType'
19+ import type { MessageType } from './types/MessageType'
1920
2021const MAX_TIMEOUT = 2147483647
2122
@@ -106,7 +107,7 @@ export function useIdleTimer ({
106107 if ( ! firstLoad . current ) {
107108 if ( startManually ) return
108109 if ( idle . current ) {
109- emitOnActive . current ( )
110+ emitOnActive . current ( null , idleTimer )
110111 if ( manager . current ) {
111112 manager . current . active ( )
112113 }
@@ -128,7 +129,7 @@ export function useIdleTimer ({
128129 )
129130
130131 // On Presence Change Emitter
131- const emitOnPresenceChange = useRef < ( presence : PresenceType ) => void > ( onPresenceChange )
132+ const emitOnPresenceChange = useRef < IPresenceChangeHandler > ( onPresenceChange )
132133 useEffect ( ( ) => {
133134 emitOnPresenceChange . current = onPresenceChange
134135 } , [ onPresenceChange ] )
@@ -158,13 +159,13 @@ export function useIdleTimer ({
158159 } , [ onAction ] )
159160
160161 // On Message Emitter
161- const emitOnMessage = useRef < ( data : string | number | object ) => void > ( onMessage )
162+ const emitOnMessage = useRef < IMessageHandler > ( onMessage )
162163 useEffect ( ( ) => {
163164 emitOnMessage . current = onMessage
164165 } , [ onMessage ] )
165166
166167 const callOnAction = useMemo < IEventHandler > ( ( ) => {
167- const call : IEventHandler = ( event : EventType ) => emitOnAction . current ( event )
168+ const call : IEventHandler = ( event : EventType , idleTimer : IIdleTimer ) => emitOnAction . current ( event , idleTimer )
168169
169170 // Create debounced action if applicable
170171 if ( debounce > 0 ) {
@@ -217,8 +218,8 @@ export function useIdleTimer ({
217218 */
218219 const togglePrompted = ( event ?: EventType ) : void => {
219220 if ( ! prompted . current && ! idle . current ) {
220- emitOnPrompt . current ( event )
221- emitOnPresenceChange . current ( { type : 'active' , prompted : true } )
221+ emitOnPrompt . current ( event , idleTimer )
222+ emitOnPresenceChange . current ( { type : 'active' , prompted : true } , idleTimer )
222223 }
223224 remaining . current = 0
224225 promptTime . current = now ( )
@@ -233,8 +234,8 @@ export function useIdleTimer ({
233234 const toggleIdle = ( ) => {
234235 destroyTimeout ( )
235236 if ( ! idle . current ) {
236- emitOnIdle . current ( )
237- emitOnPresenceChange . current ( { type : 'idle' } )
237+ emitOnIdle . current ( null , idleTimer )
238+ emitOnPresenceChange . current ( { type : 'idle' } , idleTimer )
238239 }
239240
240241 // Flip idle
@@ -258,8 +259,8 @@ export function useIdleTimer ({
258259 const toggleActive = ( event ?: EventType ) => {
259260 destroyTimeout ( )
260261 if ( idle . current || prompted . current ) {
261- emitOnActive . current ( event )
262- emitOnPresenceChange . current ( { type : 'active' , prompted : false } )
262+ emitOnActive . current ( event , idleTimer )
263+ emitOnPresenceChange . current ( { type : 'active' , prompted : false } , idleTimer )
263264 }
264265 prompted . current = false
265266 promptTime . current = 0
@@ -324,11 +325,11 @@ export function useIdleTimer ({
324325 const eventHandler = ( event : EventType ) : void => {
325326 if ( ! startOnMount && ! lastActive . current ) {
326327 lastActive . current = now ( )
327- emitOnActive . current ( )
328+ emitOnActive . current ( null , idleTimer )
328329 }
329330
330331 // Fire onAction event
331- callOnAction ( event )
332+ callOnAction ( event , idleTimer )
332333
333334 // If the prompt is open, only emit onAction
334335 if ( prompted . current ) return
@@ -585,10 +586,10 @@ export function useIdleTimer ({
585586 */
586587 const message = useCallback < ( data : MessageType , emitOnSelf ?: boolean ) => void > ( ( data : MessageType , emitOnSelf ?: boolean ) : void => {
587588 if ( manager . current ) {
588- if ( emitOnSelf ) emitOnMessage . current ( data )
589+ if ( emitOnSelf ) emitOnMessage . current ( data , idleTimer )
589590 manager . current . message ( data )
590591 } else if ( emitOnSelf ) {
591- emitOnMessage . current ( data )
592+ emitOnMessage . current ( data , idleTimer )
592593 }
593594 } , [ onMessage ] )
594595
@@ -795,8 +796,8 @@ export function useIdleTimer ({
795796 onActive : ( ) => {
796797 toggleActive ( )
797798 } ,
798- onMessage : ( ... args ) => {
799- emitOnMessage . current ( ... args )
799+ onMessage : ( data : any ) => {
800+ emitOnMessage . current ( data , idleTimer )
800801 } ,
801802 start,
802803 reset,
@@ -866,7 +867,7 @@ export function useIdleTimer ({
866867 } , [ firstLoad ] )
867868
868869 // Return API
869- return {
870+ const idleTimer = {
870871 message,
871872 start,
872873 reset,
@@ -888,7 +889,7 @@ export function useIdleTimer ({
888889 getActiveTime,
889890 getTotalActiveTime,
890891 // @ts -ignore
891- setOnPresenceChange : ( fn : ( presence : PresenceType ) => void ) => {
892+ setOnPresenceChange : ( fn : IPresenceChangeHandler ) => {
892893 onPresenceChange = fn
893894 emitOnPresenceChange . current = fn
894895 } ,
@@ -913,4 +914,6 @@ export function useIdleTimer ({
913914 emitOnMessage . current = fn
914915 }
915916 }
917+
918+ return idleTimer
916919}
0 commit comments