11import { autorun , observable } from 'mobx' ;
22import { remote } from 'electron' ;
33
4- import { DEFAULT_FEATURES_CONFIG } from '../../config' ;
4+ import { DEFAULT_FEATURES_CONFIG , HEALTHCHECK_URL } from '../../config' ;
55
66const { session } = remote ;
77
@@ -15,29 +15,40 @@ export const config = observable({
1515export default function init ( stores ) {
1616 debug ( 'Initializing `serviceProxy` feature' ) ;
1717
18- autorun ( ( ) => {
19- const { isServiceProxyEnabled, isServiceProxyPremiumFeature } = stores . features . features ;
18+ const { defaultSession } = session ;
19+ defaultSession . resolveProxy ( HEALTHCHECK_URL , ( proxy ) => {
20+ debug ( 'Resolve proxy' , proxy ) ;
2021
21- config . isEnabled = isServiceProxyEnabled !== undefined ? isServiceProxyEnabled : DEFAULT_FEATURES_CONFIG . isServiceProxyEnabled ;
22- config . isPremium = isServiceProxyPremiumFeature !== undefined ? isServiceProxyPremiumFeature : DEFAULT_FEATURES_CONFIG . isServiceProxyPremiumFeature ;
22+ let systemProxy = 'direct://' ;
23+ const proxyMatch = proxy . match ( / P R O X Y ( .* ) / i) ;
24+ if ( proxyMatch . length ) {
25+ systemProxy = proxyMatch [ 1 ] . trim ( ) ;
26+ }
2327
24- const services = stores . services . all ;
25- const isPremiumUser = stores . user . data . isPremium ;
28+ autorun ( ( ) => {
29+ const { isServiceProxyEnabled , isServiceProxyPremiumFeature } = stores . features . features ;
2630
27- services . forEach ( ( service ) => {
28- const s = session . fromPartition ( `persist:service-${ service . id } ` ) ;
29- let proxyHost = 'direct://' ;
31+ config . isEnabled = isServiceProxyEnabled !== undefined ? isServiceProxyEnabled : DEFAULT_FEATURES_CONFIG . isServiceProxyEnabled ;
32+ config . isPremium = isServiceProxyPremiumFeature !== undefined ? isServiceProxyPremiumFeature : DEFAULT_FEATURES_CONFIG . isServiceProxyPremiumFeature ;
3033
31- if ( config . isEnabled && ( isPremiumUser || ! config . isPremium ) ) {
32- const serviceProxyConfig = stores . settings . proxy [ service . id ] ;
34+ const services = stores . services . enabled ;
35+ const isPremiumUser = stores . user . data . isPremium ;
3336
34- if ( serviceProxyConfig && serviceProxyConfig . isEnabled && serviceProxyConfig . host ) {
35- proxyHost = serviceProxyConfig . host ;
37+ services . forEach ( ( service ) => {
38+ let proxyHost = systemProxy ;
39+ const s = session . fromPartition ( `persist:service-${ service . id } ` ) ;
40+
41+ if ( config . isEnabled && ( isPremiumUser || ! config . isPremium ) ) {
42+ const serviceProxyConfig = stores . settings . proxy [ service . id ] ;
43+
44+ if ( serviceProxyConfig && serviceProxyConfig . isEnabled && serviceProxyConfig . host ) {
45+ proxyHost = serviceProxyConfig . host ;
46+ }
3647 }
37- }
3848
39- s . setProxy ( { proxyRules : proxyHost } , ( e ) => {
40- debug ( `Using proxy "${ proxyHost } " for "${ service . name } " (${ service . id } )` , e ) ;
49+ s . setProxy ( { proxyRules : proxyHost } , ( ) => {
50+ debug ( `Using proxy "${ proxyHost } " for "${ service . name } " (${ service . id } )` ) ;
51+ } ) ;
4152 } ) ;
4253 } ) ;
4354 } ) ;
0 commit comments