1
- const timers = require ( 'timers' ) ;
2
1
const path = require ( 'path' ) ;
3
- const dns = require ( 'dns' ) ;
4
- const Ping = require ( 'ping-lite' ) ;
5
- const { forever, timeout, parallel, waterfall } = require ( 'async' ) ;
6
- const { app, dialog, BrowserWindow, Tray, Menu } = require ( 'electron' ) ;
2
+ const networkStatus = require ( './network-status' ) ;
3
+ const { app, BrowserWindow, Tray, Menu } = require ( 'electron' ) ;
4
+ const timeoutMs = 2000 ;
7
5
8
- const dnsLatency = ( host , callback ) => {
9
- const dnsStartMs = + ( new Date ) ;
10
- dns . resolve ( host , err => {
11
- if ( err ) return callback ( err ) ;
12
- callback ( null , + ( new Date ) - dnsStartMs ) ;
13
- } ) ;
14
- }
15
-
16
- const pingLatency = ( ip , callback ) => {
17
- const ping = new Ping ( ip ) ;
18
- ping . send ( ( err , latencyMs ) => {
19
- if ( err ) return callback ( err ) ;
20
- callback ( null , Math . round ( latencyMs ) ) ;
21
- } ) ;
22
- }
23
-
24
- let mainWindow ;
25
6
app . on ( 'ready' , ( ) => {
26
- mainWindow = new BrowserWindow ( { show : false } ) ;
7
+ new BrowserWindow ( { show : false } ) ;
27
8
if ( app . dock ) app . dock . hide ( ) ;
28
9
29
10
const tray = new Tray ( path . join ( app . getAppPath ( ) , 'icon.png' ) ) ;
@@ -39,17 +20,12 @@ app.on('ready', () => {
39
20
let title = `.../...ms` ;
40
21
tray . setTitle ( title ) ;
41
22
42
- const refreshLatency = ( check , arg , timeoutMs , titleRegex ) =>
43
- ( ) => setInterval ( ( ) => {
44
- timeout ( check , timeoutMs ) ( arg , ( err , latency ) => {
45
- title = title . replace ( titleRegex , latency || '...' ) ;
46
- tray . setTitle ( title ) ;
47
- } )
48
- } , timeoutMs + 100 ) ;
49
-
50
- parallel ( [
51
- refreshLatency ( dnsLatency , 'google.com' , 2000 , / [ \d \. ] + (? = \/ ) / ) ,
52
- refreshLatency ( pingLatency , '8.8.8.8' , 2000 , / [ \d \. ] + (? = m s ) / ) ,
53
- ] ) ;
54
-
23
+ networkStatus ( {
24
+ timeoutMs : 2000 ,
25
+ intervalMs : 2000 ,
26
+ hostname : 'google.com' ,
27
+ address : '8.8.8.8'
28
+ } ) . on ( 'latencies' , ( { dns, ping} ) =>
29
+ tray . setTitle ( `${ dns || '...' } /${ ping || '...' } ms` )
30
+ ) ;
55
31
} ) ;
0 commit comments