1
- import lodashGet from 'lodash/get' ;
2
1
import Onyx from 'react-native-onyx' ;
3
- import _ from 'underscore' ;
4
2
import * as API from '@libs/API' ;
5
3
import asyncOpenURL from '@libs/asyncOpenURL' ;
6
4
import * as Environment from '@libs/Environment/Environment' ;
@@ -10,29 +8,23 @@ import ONYXKEYS from '@src/ONYXKEYS';
10
8
let isNetworkOffline = false ;
11
9
Onyx . connect ( {
12
10
key : ONYXKEYS . NETWORK ,
13
- callback : ( val ) => ( isNetworkOffline = lodashGet ( val , ' isOffline' , false ) ) ,
11
+ callback : ( value ) => ( isNetworkOffline = value ?. isOffline ?? false ) ,
14
12
} ) ;
15
13
16
- let currentUserEmail ;
14
+ let currentUserEmail = '' ;
17
15
Onyx . connect ( {
18
16
key : ONYXKEYS . SESSION ,
19
- callback : ( val ) => ( currentUserEmail = lodashGet ( val , ' email' , '' ) ) ,
17
+ callback : ( value ) => ( currentUserEmail = value ?. email ?? '' ) ,
20
18
} ) ;
21
19
22
- /**
23
- * @param {String } [url] the url path
24
- * @param {String } [shortLivedAuthToken]
25
- *
26
- * @returns {Promise<string> }
27
- */
28
- function buildOldDotURL ( url , shortLivedAuthToken ) {
20
+ function buildOldDotURL ( url : string , shortLivedAuthToken ?: string ) : Promise < string > {
29
21
const hasHashParams = url . indexOf ( '#' ) !== - 1 ;
30
22
const hasURLParams = url . indexOf ( '?' ) !== - 1 ;
31
23
32
24
const authTokenParam = shortLivedAuthToken ? `authToken=${ shortLivedAuthToken } ` : '' ;
33
25
const emailParam = `email=${ encodeURIComponent ( currentUserEmail ) } ` ;
34
-
35
- const params = _ . compact ( [ authTokenParam , emailParam ] ) . join ( '&' ) ;
26
+ const paramsArray = [ authTokenParam , emailParam ] ;
27
+ const params = paramsArray . filter ( Boolean ) . join ( '&' ) ;
36
28
37
29
return Environment . getOldDotEnvironmentURL ( ) . then ( ( environmentURL ) => {
38
30
const oldDotDomain = Url . addTrailingForwardSlash ( environmentURL ) ;
@@ -43,17 +35,13 @@ function buildOldDotURL(url, shortLivedAuthToken) {
43
35
}
44
36
45
37
/**
46
- * @param {String } url
47
- * @param {Boolean } shouldSkipCustomSafariLogic When true, we will use `Linking.openURL` even if the browser is Safari.
38
+ * @param shouldSkipCustomSafariLogic When true, we will use `Linking.openURL` even if the browser is Safari.
48
39
*/
49
- function openExternalLink ( url , shouldSkipCustomSafariLogic = false ) {
40
+ function openExternalLink ( url : string , shouldSkipCustomSafariLogic = false ) {
50
41
asyncOpenURL ( Promise . resolve ( ) , url , shouldSkipCustomSafariLogic ) ;
51
42
}
52
43
53
- /**
54
- * @param {String } url the url path
55
- */
56
- function openOldDotLink ( url ) {
44
+ function openOldDotLink ( url : string ) {
57
45
if ( isNetworkOffline ) {
58
46
buildOldDotURL ( url ) . then ( ( oldDotURL ) => openExternalLink ( oldDotURL ) ) ;
59
47
return ;
@@ -63,7 +51,7 @@ function openOldDotLink(url) {
63
51
asyncOpenURL (
64
52
// eslint-disable-next-line rulesdir/no-api-side-effects-method
65
53
API . makeRequestWithSideEffects ( 'OpenOldDotLink' , { } , { } )
66
- . then ( ( response ) => buildOldDotURL ( url , response . shortLivedAuthToken ) )
54
+ . then ( ( response ) => ( response ? buildOldDotURL ( url , response . shortLivedAuthToken ) : buildOldDotURL ( url ) ) )
67
55
. catch ( ( ) => buildOldDotURL ( url ) ) ,
68
56
( oldDotURL ) => oldDotURL ,
69
57
) ;
0 commit comments