@@ -23,11 +23,10 @@ import {
2323 CheckResult ,
2424 ProgressData ,
2525 UpdateTestPayload ,
26- VersionInfo ,
2726} from './type' ;
2827import { UpdateContext } from './context' ;
2928import { URL } from 'react-native-url-polyfill' ;
30- import { isInRollout } from './isInRollout ' ;
29+ import { resolveCheckResult } from './resolveCheckResult ' ;
3130import { assertWeb , log } from './utils' ;
3231
3332export const UpdateProvider = ( {
@@ -181,94 +180,77 @@ export const UpdateProvider = ({
181180 if ( ! rootInfo ) {
182181 return ;
183182 }
184- const versions = [ rootInfo . expVersion , rootInfo ] . filter (
185- Boolean ,
186- ) as VersionInfo [ ] ;
187- delete rootInfo . expVersion ;
188- for ( const versionInfo of versions ) {
189- const info : CheckResult = {
190- ...rootInfo ,
191- ...versionInfo ,
192- } ;
193- const rollout = info . config ?. rollout ?. [ packageVersion ] ;
194- if ( info . update && rollout ) {
195- if ( ! isInRollout ( rollout ) ) {
196- log ( `${ info . name } not in ${ rollout } % rollout, ignored` ) ;
197- continue ;
198- }
199- log ( `${ info . name } in ${ rollout } % rollout, continue` ) ;
200- }
201- if ( info . update ) {
202- info . description = info . description ?? '' ;
183+ const info = resolveCheckResult ( rootInfo ) ;
184+ if ( info . update ) {
185+ info . description = info . description ?? '' ;
186+ }
187+ updateInfoRef . current = info ;
188+ setUpdateInfo ( info ) ;
189+ if ( info . expired ) {
190+ if (
191+ options . onPackageExpired &&
192+ ( await options . onPackageExpired ( info ) ) === false
193+ ) {
194+ log ( 'onPackageExpired returned false, skipping' ) ;
195+ return ;
203196 }
204- updateInfoRef . current = info ;
205- setUpdateInfo ( info ) ;
206- if ( info . expired ) {
207- if (
208- options . onPackageExpired &&
209- ( await options . onPackageExpired ( info ) ) === false
210- ) {
211- log ( 'onPackageExpired returned false, skipping' ) ;
212- return ;
213- }
214- const { downloadUrl } = info ;
215- if ( downloadUrl && sharedState . apkStatus === null ) {
216- if ( options . updateStrategy === 'silentAndNow' ) {
217- if ( Platform . OS === 'android' && downloadUrl . endsWith ( '.apk' ) ) {
218- downloadAndInstallApk ( downloadUrl ) ;
219- } else {
220- Linking . openURL ( downloadUrl ) ;
221- }
222- return info ;
197+ const { downloadUrl } = info ;
198+ if ( downloadUrl && sharedState . apkStatus === null ) {
199+ if ( options . updateStrategy === 'silentAndNow' ) {
200+ if ( Platform . OS === 'android' && downloadUrl . endsWith ( '.apk' ) ) {
201+ downloadAndInstallApk ( downloadUrl ) ;
202+ } else {
203+ Linking . openURL ( downloadUrl ) ;
223204 }
224- alertUpdate (
225- client . t ( 'alert_title' ) ,
226- client . t ( 'alert_app_updated' ) ,
227- [
228- {
229- text : client . t ( 'alert_update_button' ) ,
230- onPress : ( ) => {
231- if (
232- Platform . OS === 'android' &&
233- downloadUrl . endsWith ( '.apk' )
234- ) {
235- downloadAndInstallApk ( downloadUrl ) ;
236- } else {
237- Linking . openURL ( downloadUrl ) ;
238- }
239- } ,
240- } ,
241- ] ,
242- ) ;
243- }
244- } else if ( info . update ) {
245- if (
246- options . updateStrategy === 'silentAndNow' ||
247- options . updateStrategy === 'silentAndLater'
248- ) {
249- downloadUpdate ( info ) ;
250205 return info ;
251206 }
252207 alertUpdate (
253208 client . t ( 'alert_title' ) ,
254- client . t ( 'alert_new_version_found' , {
255- name : info . name ! ,
256- description : info . description ! ,
257- } ) ,
209+ client . t ( 'alert_app_updated' ) ,
258210 [
259- { text : client . t ( 'alert_cancel' ) , style : 'cancel' } ,
260211 {
261- text : client . t ( 'alert_confirm' ) ,
262- style : 'default' ,
212+ text : client . t ( 'alert_update_button' ) ,
263213 onPress : ( ) => {
264- downloadUpdate ( ) ;
214+ if (
215+ Platform . OS === 'android' &&
216+ downloadUrl . endsWith ( '.apk' )
217+ ) {
218+ downloadAndInstallApk ( downloadUrl ) ;
219+ } else {
220+ Linking . openURL ( downloadUrl ) ;
221+ }
265222 } ,
266223 } ,
267224 ] ,
268225 ) ;
269226 }
270- return info ;
227+ } else if ( info . update ) {
228+ if (
229+ options . updateStrategy === 'silentAndNow' ||
230+ options . updateStrategy === 'silentAndLater'
231+ ) {
232+ downloadUpdate ( info ) ;
233+ return info ;
234+ }
235+ alertUpdate (
236+ client . t ( 'alert_title' ) ,
237+ client . t ( 'alert_new_version_found' , {
238+ name : info . name ! ,
239+ description : info . description ! ,
240+ } ) ,
241+ [
242+ { text : client . t ( 'alert_cancel' ) , style : 'cancel' } ,
243+ {
244+ text : client . t ( 'alert_confirm' ) ,
245+ style : 'default' ,
246+ onPress : ( ) => {
247+ downloadUpdate ( ) ;
248+ } ,
249+ } ,
250+ ] ,
251+ ) ;
271252 }
253+ return info ;
272254 } ,
273255 [
274256 client ,
0 commit comments