-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
73 lines (62 loc) · 1.35 KB
/
index.js
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import debugFactory from 'debug';
import Poller from './poller';
const debug = debugFactory( 'calypso:poller' );
const _pollers = {};
function add( dataStore, fetcher, options ) {
const poller = new Poller( dataStore, fetcher, options );
if ( poller.id === 0 ) {
initActivityDetection();
}
_pollers[ poller.id ] = poller;
debug( 'Adding poller %o', poller );
return poller;
}
function remove( poller ) {
if ( typeof poller !== 'object' && _pollers[ poller ] ) {
poller = _pollers[ poller ];
}
poller.clear();
debug( 'Removing poller %o', poller );
delete _pollers[ poller.id ];
}
function pauseAll() {
let poller;
let id;
debug( 'Pausing active pollers' );
for ( id in _pollers ) {
poller = _pollers[ id ];
if ( poller.timer && poller.pauseWhenHidden ) {
poller.stop();
poller.paused = true;
}
}
}
function resumePaused() {
let poller;
let id;
debug( 'Resuming paused pollers' );
for ( id in _pollers ) {
poller = _pollers[ id ];
if ( poller.paused ) {
poller.start();
}
}
}
function initActivityDetection() {
if ( document ) {
document.addEventListener( 'visibilitychange', handleVisibilityChange, false );
}
}
function handleVisibilityChange() {
if ( document.hidden ) {
pauseAll();
} else {
resumePaused();
}
}
export default {
add: add,
remove: remove,
pauseAll: pauseAll,
resumePaused: resumePaused,
};