@@ -50,6 +50,10 @@ const ledgerVideoCache = require('../../common/cache/ledgerVideoCache')
50
50
const updater = require ( '../../updater' )
51
51
const promoCodeFirstRunStorage = require ( '../../promoCodeFirstRunStorage' )
52
52
const appUrlUtil = require ( '../../../js/lib/appUrlUtil' )
53
+ const urlutil = require ( '../../../js/lib/urlutil' )
54
+ const windowState = require ( '../../common/state/windowState' )
55
+ const { makeImmutable, makeJS, isList} = require ( '../../common/state/immutableUtil' )
56
+ const siteHacks = require ( '../../siteHacks' )
53
57
54
58
// Caching
55
59
let locationDefault = 'NOOP'
@@ -99,7 +103,7 @@ const clientOptions = {
99
103
environment : process . env . LEDGER_ENVIRONMENT || 'production'
100
104
}
101
105
102
- var platforms = {
106
+ const platforms = {
103
107
'darwin' : 'osx' ,
104
108
'win32x64' : 'winx64' ,
105
109
'win32ia32' : 'winia32' ,
@@ -2059,6 +2063,7 @@ const onCallback = (state, result, delayTime) => {
2059
2063
2060
2064
const onReferralCodeRead = ( code ) => {
2061
2065
if ( ! code ) {
2066
+ fetchReferralHeaders ( )
2062
2067
return
2063
2068
}
2064
2069
@@ -2087,7 +2092,7 @@ const onReferralInit = (err, response, body) => {
2087
2092
}
2088
2093
2089
2094
if ( body && body . download_id ) {
2090
- appActions . onReferralCodeRead ( body . download_id , body . referral_code )
2095
+ appActions . onReferralCodeRead ( body )
2091
2096
promoCodeFirstRunStorage
2092
2097
. removePromoCode ( )
2093
2098
. catch ( error => {
@@ -2103,6 +2108,60 @@ const onReferralInit = (err, response, body) => {
2103
2108
}
2104
2109
}
2105
2110
2111
+ const onReferralRead = ( state , body , activeWindowId ) => {
2112
+ body = makeImmutable ( body )
2113
+
2114
+ if ( body . has ( 'offer_page_url' ) ) {
2115
+ const url = body . get ( 'offer_page_url' )
2116
+ if ( urlutil . isURL ( url ) ) {
2117
+ if ( activeWindowId === windowState . WINDOW_ID_NONE ) {
2118
+ state = updateState . setUpdateProp ( state , 'referralPage' , url )
2119
+ } else {
2120
+ appActions . createTabRequested ( {
2121
+ url,
2122
+ windowId : activeWindowId
2123
+ } )
2124
+ state = updateState . setUpdateProp ( state , 'referralPage' , null )
2125
+ }
2126
+ }
2127
+ }
2128
+
2129
+ if ( body . has ( 'headers' ) ) {
2130
+ const headers = body . get ( 'headers' )
2131
+ state = updateState . setUpdateProp ( state , 'referralHeaders' , headers )
2132
+ siteHacks . setReferralHeaders ( headers )
2133
+ }
2134
+
2135
+ state = updateState . setUpdateProp ( state , 'referralDownloadId' , body . get ( 'download_id' ) )
2136
+ state = updateState . setUpdateProp ( state , 'referralPromoCode' , body . get ( 'referral_code' ) )
2137
+
2138
+ return state
2139
+ }
2140
+
2141
+ const fetchReferralHeaders = ( ) => {
2142
+ module . exports . roundtrip ( {
2143
+ server : referralServer ,
2144
+ method : 'GET' ,
2145
+ path : '/promo/custom-headers'
2146
+ } , { } , appActions . onFetchReferralHeaders )
2147
+ }
2148
+
2149
+ const onFetchReferralHeaders = ( state , err , response , body ) => {
2150
+ if ( err ) {
2151
+ if ( clientOptions . verboseP ) {
2152
+ console . error ( makeJS ( err ) )
2153
+ }
2154
+ return state
2155
+ }
2156
+
2157
+ if ( body && isList ( body ) ) {
2158
+ state = updateState . setUpdateProp ( state , 'referralHeaders' , body )
2159
+ siteHacks . setReferralHeaders ( body )
2160
+ }
2161
+
2162
+ return state
2163
+ }
2164
+
2106
2165
const initialize = ( state , paymentsEnabled ) => {
2107
2166
let fs
2108
2167
@@ -2138,9 +2197,15 @@ const initialize = (state, paymentsEnabled) => {
2138
2197
if ( clientOptions . verboseP ) {
2139
2198
console . error ( 'read error: ' + error . toString ( ) )
2140
2199
}
2200
+ fetchReferralHeaders ( )
2141
2201
} )
2202
+ } else {
2203
+ fetchReferralHeaders ( )
2142
2204
}
2143
2205
2206
+ // Get referral headers every day
2207
+ setInterval ( ( ) => fetchReferralHeaders , ( 24 * ledgerUtil . milliseconds . hour ) )
2208
+
2144
2209
if ( ! paymentsEnabled ) {
2145
2210
client = null
2146
2211
return ledgerState . resetInfo ( state , true )
@@ -2984,7 +3049,9 @@ const getMethods = () => {
2984
3049
checkReferralActivity,
2985
3050
setPublishersOptions,
2986
3051
referralCheck,
2987
- roundtrip
3052
+ roundtrip,
3053
+ onFetchReferralHeaders,
3054
+ onReferralRead
2988
3055
}
2989
3056
2990
3057
let privateMethods = { }
0 commit comments