@@ -19,17 +19,13 @@ export class AutoFetcher {
1919
2020 private static DidInformUser = 'autofetch.didInformUser' ;
2121
22- private _onDidChange = new EventEmitter < boolean | number > ( ) ;
22+ private _onDidChange = new EventEmitter < boolean > ( ) ;
2323 private onDidChange = this . _onDidChange . event ;
2424
2525 private _enabled : boolean = false ;
2626 get enabled ( ) : boolean { return this . _enabled ; }
2727 set enabled ( enabled : boolean ) { this . _enabled = enabled ; this . _onDidChange . fire ( enabled ) ; }
2828
29- private _timeout : number = workspace . getConfiguration ( 'git' ) . get < number > ( 'autofetchPeriod' , 3 ) * 60 * 1000 ;
30- private get timeout ( ) : number { return this . _timeout ; }
31- private set timeout ( minutes : number ) { this . _timeout = minutes * 60 * 1000 ; this . _onDidChange . fire ( minutes ) ; }
32-
3329 private disposables : Disposable [ ] = [ ] ;
3430
3531 constructor ( private repository : Repository , private globalState : Memento ) {
@@ -73,19 +69,19 @@ export class AutoFetcher {
7369
7470 private onConfiguration ( ) : void {
7571 const gitConfig = workspace . getConfiguration ( 'git' ) ;
76- const minutes = gitConfig . get < number > ( 'autofetchPeriod' , 3 ) ;
77- const autofetch = gitConfig . get < boolean > ( 'autofetch' ) ;
78-
79- if ( this . timeout !== minutes ) {
80- this . timeout = minutes ;
81- }
8272
83- if ( this . enabled !== autofetch ) {
84- autofetch ? this . enable ( ) : this . disable ( ) ;
73+ if ( gitConfig . get < boolean > ( 'autofetch' ) === false ) {
74+ this . disable ( ) ;
75+ } else {
76+ this . enable ( ) ;
8577 }
8678 }
8779
8880 enable ( ) : void {
81+ if ( this . enabled ) {
82+ return ;
83+ }
84+
8985 this . enabled = true ;
9086 this . run ( ) ;
9187 }
@@ -114,9 +110,11 @@ export class AutoFetcher {
114110 return ;
115111 }
116112
117- const timeout = new Promise ( c => setTimeout ( c , this . timeout ) ) ;
118- const onChanged = eventToPromise ( filterEvent ( this . onDidChange , ( ) => true ) ) ;
119- await Promise . race ( [ timeout , onChanged ] ) ;
113+ const period = workspace . getConfiguration ( 'git' ) . get < number > ( 'autofetchPeriod' , 180 ) * 1000 ;
114+ const timeout = new Promise ( c => setTimeout ( c , period ) ) ;
115+ const whenDisabled = eventToPromise ( filterEvent ( this . onDidChange , enabled => ! enabled ) ) ;
116+
117+ await Promise . race ( [ timeout , whenDisabled ] ) ;
120118 }
121119 }
122120
0 commit comments