From 381e780d8d17fb233b700ee43e26ad93b1424fd0 Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Fri, 31 Jan 2020 16:46:30 +0100 Subject: [PATCH 01/10] added lite file page --- src/component/AppNavigator.js | 7 +++ src/page/liteFile/index.js | 34 +++++++++++++ src/page/liteFile/view.js | 94 +++++++++++++++++++++++++++++++++++ 3 files changed, 135 insertions(+) create mode 100644 src/page/liteFile/index.js create mode 100644 src/page/liteFile/view.js diff --git a/src/component/AppNavigator.js b/src/component/AppNavigator.js index db507e5..80266be 100644 --- a/src/component/AppNavigator.js +++ b/src/component/AppNavigator.js @@ -5,6 +5,7 @@ import DiscoverPage from 'page/discover'; import DownloadsPage from 'page/downloads'; import DrawerContent from 'component/drawerContent'; import FilePage from 'page/file'; +import LiteFilePage from 'page/liteFile'; import FirstRunScreen from 'page/firstRun'; import InvitesPage from 'page/invites'; import PublishPage from 'page/publish'; @@ -277,6 +278,12 @@ const mainStackNavigator = new createStackNavigator( drawerLockMode: 'locked-closed', }, }, + LiteFile: { + screen: LiteFilePage, + navigationOptions: { + drawerLockMode: 'locked-closed', + }, + }, }, { headerMode: 'none', diff --git a/src/page/liteFile/index.js b/src/page/liteFile/index.js new file mode 100644 index 0000000..dbe2b56 --- /dev/null +++ b/src/page/liteFile/index.js @@ -0,0 +1,34 @@ +import { connect } from 'react-redux'; +import { + makeSelectContentPositionForUri, + selectBalance, + from 'lbry-redux'; +import { + doClaimEligiblePurchaseRewards, + makeSelectViewCountForUri, +} from 'lbryinc'; +import { doToggleFullscreenMode } from 'redux/actions/settings'; +import FilePage from './view'; + +const select = (state, props) => { + const { uri, fullUri } = props.navigation.state.params; + const contentUri = fullUri || uri; + const selectProps = { uri: contentUri }; + return { + balance: selectBalance(state), + isPlayerVisible: makeSelectPlayerVisible(uri)(state), // use navigation uri for this selector + position: makeSelectContentPositionForUri(contentUri)(state), + viewCount: makeSelectViewCountForUri(contentUri)(state), + }; +}; + +const perform = dispatch => ({ + claimEligibleRewards: () => dispatch(doClaimEligiblePurchaseRewards()), + setPlayerVisible: (visible, uri) => dispatch(doSetPlayerVisible(visible, uri)), + toggleFullscreenMode: mode => dispatch(doToggleFullscreenMode(mode)), +}); + +export default connect( + select, + perform, +)(LiteFilePage); diff --git a/src/page/liteFile/view.js b/src/page/liteFile/view.js new file mode 100644 index 0000000..4d429da --- /dev/null +++ b/src/page/liteFile/view.js @@ -0,0 +1,94 @@ +import React from 'react'; +import { Lbry, formatCredits, normalizeURI, parseURI } from 'lbry-redux'; +import { Lbryio } from 'lbryinc'; +import { + ActivityIndicator, + Alert, + DeviceEventEmitter, + Dimensions, + Image, + Linking, + NativeModules, + Platform, + ScrollView, + StatusBar, + StyleSheet, + Text, + TextInput, + TouchableOpacity, + TouchableWithoutFeedback, + View, +} from 'react-native'; +import MediaPlayer from 'component/mediaPlayer'; +import filePageStyle from 'styles/filePage'; +import uriBarStyle from 'styles/uriBar'; + +// This page will only be used for playing audio / video content from a remote stream URL +class LiteFilePage extends React.PureComponent { + + playerBackground = null; + + scrollView = null; + + player = null; + + state = { + fullscreenMode: false, + playerHeight: null, + } + + getStreamUrl = (uri) => { + + } + + render() { + const { contentUri } = this.props; + + const playerStyle = [ + filePageStyle.player, + this.state.isLandscape + ? filePageStyle.containedPlayerLandscape + : this.state.fullscreenMode + ? filePageStyle.fullscreenPlayer + : filePageStyle.containedPlayer, + ]; + + return ( + + {!this.state.fullscreenMode && } + + + { + this.player = ref; + }} + uri={uri} + source={this.playerUriForFileInfo(fileInfo)} + style={playerStyle} + autoPlay + onFullscreenToggled={this.handleFullscreenToggle} + onLayout={evt => { + if (!this.state.playerHeight) { + this.setState({ playerHeight: evt.nativeEvent.layout.height }); + } + }} + onMediaLoaded={() => this.onMediaLoaded(channelName, title, uri)} + onBackButtonPressed={this.onBackButtonPressed} + onPlaybackStarted={this.onPlaybackStarted} + onPlaybackFinished={this.onPlaybackFinished} + thumbnail={thumbnail} + position={position} + /> + + + ); + } +} + +export default LiteFilePage; \ No newline at end of file -- 2.43.4 From b0c5b6f0622039d2cfac60ffca4b6501349f11d3 Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Fri, 31 Jan 2020 16:46:48 +0100 Subject: [PATCH 02/10] added lite file page --- src/page/liteFile/view.js | 59 ++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 32 deletions(-) diff --git a/src/page/liteFile/view.js b/src/page/liteFile/view.js index 4d429da..47dcc76 100644 --- a/src/page/liteFile/view.js +++ b/src/page/liteFile/view.js @@ -25,7 +25,6 @@ import uriBarStyle from 'styles/uriBar'; // This page will only be used for playing audio / video content from a remote stream URL class LiteFilePage extends React.PureComponent { - playerBackground = null; scrollView = null; @@ -35,11 +34,9 @@ class LiteFilePage extends React.PureComponent { state = { fullscreenMode: false, playerHeight: null, - } + }; - getStreamUrl = (uri) => { - - } + getStreamUrl = uri => {}; render() { const { contentUri } = this.props; @@ -58,37 +55,35 @@ class LiteFilePage extends React.PureComponent { {!this.state.fullscreenMode && } + style={this.state.fullscreenMode ? filePageStyle.innerPageContainerFsMode : filePageStyle.innerPageContainer} + onLayout={this.checkOrientation} + > { - this.player = ref; - }} - uri={uri} - source={this.playerUriForFileInfo(fileInfo)} - style={playerStyle} - autoPlay - onFullscreenToggled={this.handleFullscreenToggle} - onLayout={evt => { - if (!this.state.playerHeight) { - this.setState({ playerHeight: evt.nativeEvent.layout.height }); - } - }} - onMediaLoaded={() => this.onMediaLoaded(channelName, title, uri)} - onBackButtonPressed={this.onBackButtonPressed} - onPlaybackStarted={this.onPlaybackStarted} - onPlaybackFinished={this.onPlaybackFinished} - thumbnail={thumbnail} - position={position} - /> + claim={claim} + assignPlayer={ref => { + this.player = ref; + }} + uri={uri} + source={this.playerUriForFileInfo(fileInfo)} + style={playerStyle} + autoPlay + onFullscreenToggled={this.handleFullscreenToggle} + onLayout={evt => { + if (!this.state.playerHeight) { + this.setState({ playerHeight: evt.nativeEvent.layout.height }); + } + }} + onMediaLoaded={() => this.onMediaLoaded(channelName, title, uri)} + onBackButtonPressed={this.onBackButtonPressed} + onPlaybackStarted={this.onPlaybackStarted} + onPlaybackFinished={this.onPlaybackFinished} + thumbnail={thumbnail} + position={position} + /> ); } } -export default LiteFilePage; \ No newline at end of file +export default LiteFilePage; -- 2.43.4 From 156c3e1a72be3bfb2f2e7465803d185591b71d8a Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Fri, 31 Jan 2020 19:19:50 +0100 Subject: [PATCH 03/10] update splash logic --- src/component/mediaPlayer/view.js | 2 +- src/page/liteFile/view.js | 9 +------ src/page/splash/view.js | 41 ++++++++++++++++++++++++++----- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/src/component/mediaPlayer/view.js b/src/component/mediaPlayer/view.js index 53af706..559521a 100644 --- a/src/component/mediaPlayer/view.js +++ b/src/component/mediaPlayer/view.js @@ -106,7 +106,7 @@ class MediaPlayer extends React.PureComponent { const { savePosition, claim } = this.props; this.setState({ buffering: false, currentTime: data.currentTime }); - if (data.currentTime > 0 && Math.floor(data.currentTime) % positionSaveInterval === 0) { + if (claim && data.currentTime > 0 && Math.floor(data.currentTime) % positionSaveInterval === 0) { const { claim_id: claimId, txid, nout } = claim; savePosition(claimId, `${txid}:${nout}`, data.currentTime); } diff --git a/src/page/liteFile/view.js b/src/page/liteFile/view.js index 47dcc76..f385981 100644 --- a/src/page/liteFile/view.js +++ b/src/page/liteFile/view.js @@ -59,12 +59,11 @@ class LiteFilePage extends React.PureComponent { onLayout={this.checkOrientation} > { this.player = ref; }} uri={uri} - source={this.playerUriForFileInfo(fileInfo)} + source={this.getStreamUrl(uri)} style={playerStyle} autoPlay onFullscreenToggled={this.handleFullscreenToggle} @@ -73,12 +72,6 @@ class LiteFilePage extends React.PureComponent { this.setState({ playerHeight: evt.nativeEvent.layout.height }); } }} - onMediaLoaded={() => this.onMediaLoaded(channelName, title, uri)} - onBackButtonPressed={this.onBackButtonPressed} - onPlaybackStarted={this.onPlaybackStarted} - onPlaybackFinished={this.onPlaybackFinished} - thumbnail={thumbnail} - position={position} /> diff --git a/src/page/splash/view.js b/src/page/splash/view.js index 4bf8a59..c8ae4be 100644 --- a/src/page/splash/view.js +++ b/src/page/splash/view.js @@ -34,12 +34,28 @@ class SplashScreen extends React.PureComponent { headersDownloadProgress: 0, shouldAuthenticate: false, subscriptionsFetched: false, + liteMode: false, }; updateStatus() { - Lbry.status().then(status => { - this._updateStatusCallback(status); - }); + const { authenticate } = this.props; + + if (this.state.liteMode) { + // authenticate immediately + NativeModules.VersionInfo.getAppVersion().then(appVersion => { + this.setState({ shouldAuthenticate: true }); + NativeModules.Firebase.getMessagingToken() + .then(firebaseToken => { + console.log(firebaseToken); + authenticate(appVersion, Platform.OS, firebaseToken); + }) + .catch(() => authenticate(appVersion, Platform.OS)); + }); + } else { + Lbry.status().then(status => { + this._updateStatusCallback(status); + }); + } } navigateToMain = () => { @@ -71,10 +87,12 @@ class SplashScreen extends React.PureComponent { componentWillReceiveProps(nextProps) { const { emailToVerify, getSync, setEmailToVerify, verifyUserEmail, verifyUserEmailFailure } = this.props; - const { daemonReady, shouldAuthenticate } = this.state; + const { daemonReady, shouldAuthenticate, liteMode } = this.state; const { user } = nextProps; - if (daemonReady && shouldAuthenticate && user && user.id) { + if (liteMode && user && user.id) { + this.navigateToLiteMode(); + } else if (daemonReady && shouldAuthenticate && user && user.id) { this.setState({ shouldAuthenticate: false }, () => { // user is authenticated, navigate to the main view if (user.has_verified_email) { @@ -92,6 +110,14 @@ class SplashScreen extends React.PureComponent { } } + navigateToLiteMode = () => { + const resetAction = StackActions.reset({ + index: 0, + actions: [NavigationActions.navigate({ routeName: 'LiteFile', params: { url: this.state.launchUrl } })], + }); + navigation.dispatch(resetAction); + }; + getUserSettings = () => { const { populateSharedUserState } = this.props; @@ -142,6 +168,7 @@ class SplashScreen extends React.PureComponent { this.setState({ shouldAuthenticate: true }); NativeModules.Firebase.getMessagingToken() .then(firebaseToken => { + console.log(firebaseToken); authenticate(appVersion, Platform.OS, firebaseToken); }) .catch(() => authenticate(appVersion, Platform.OS)); @@ -265,7 +292,9 @@ class SplashScreen extends React.PureComponent { NativeModules.UtilityModule.getNotificationLaunchTarget().then(target => { if (target) { - this.setState({ launchUrl: target }); + const liteMode = target.indexOf('liteMode=1') > -1; + android.util.Log.d('setting liteMode=' + liteModoe); + this.setState({ launchUrl: target, liteMode }); } // Only connect after checking initial launch url / notification launch target -- 2.43.4 From e541dcc381df0d93836d85061113029777e1c63d Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Fri, 31 Jan 2020 20:22:02 +0100 Subject: [PATCH 04/10] update lite file page --- src/page/liteFile/index.js | 14 ++++------ src/page/liteFile/view.js | 56 ++++++++++++++++++++++++++++++++++++-- src/page/splash/view.js | 9 +++--- 3 files changed, 63 insertions(+), 16 deletions(-) diff --git a/src/page/liteFile/index.js b/src/page/liteFile/index.js index dbe2b56..a489bbc 100644 --- a/src/page/liteFile/index.js +++ b/src/page/liteFile/index.js @@ -1,14 +1,10 @@ import { connect } from 'react-redux'; -import { - makeSelectContentPositionForUri, - selectBalance, - from 'lbry-redux'; -import { - doClaimEligiblePurchaseRewards, - makeSelectViewCountForUri, -} from 'lbryinc'; +import { makeSelectContentPositionForUri, selectBalance } from 'lbry-redux'; +import { doClaimEligiblePurchaseRewards, makeSelectViewCountForUri } from 'lbryinc'; +import { doSetPlayerVisible } from 'redux/actions/drawer'; +import { makeSelectPlayerVisible } from 'redux/selectors/drawer'; import { doToggleFullscreenMode } from 'redux/actions/settings'; -import FilePage from './view'; +import LiteFilePage from './view'; const select = (state, props) => { const { uri, fullUri } = props.navigation.state.params; diff --git a/src/page/liteFile/view.js b/src/page/liteFile/view.js index f385981..ede530d 100644 --- a/src/page/liteFile/view.js +++ b/src/page/liteFile/view.js @@ -19,6 +19,7 @@ import { TouchableWithoutFeedback, View, } from 'react-native'; +import UriBar from 'component/uriBar'; import MediaPlayer from 'component/mediaPlayer'; import filePageStyle from 'styles/filePage'; import uriBarStyle from 'styles/uriBar'; @@ -34,12 +35,63 @@ class LiteFilePage extends React.PureComponent { state = { fullscreenMode: false, playerHeight: null, + isLandscape: false, }; - getStreamUrl = uri => {}; + checkOrientation = () => { + if (this.state.fullscreenMode) { + return; + } + + const screenDimension = Dimensions.get('window'); + const screenWidth = screenDimension.width; + const screenHeight = screenDimension.height; + const isLandscape = screenWidth > screenHeight; + this.setState({ isLandscape }); + + if (!this.playerBackground) { + return; + } + + if (isLandscape) { + this.playerBackground.setNativeProps({ + height: screenHeight - StyleSheet.flatten(uriBarStyle.uriContainer).height, + }); + } else if (this.state.playerBgHeight > 0) { + this.playerBackground.setNativeProps({ height: this.state.playerBgHeight }); + } + }; + + handleFullscreenToggle = isFullscreen => { + const { toggleFullscreenMode } = this.props; + toggleFullscreenMode(isFullscreen); + + if (isFullscreen) { + // fullscreen, so change orientation to landscape mode + NativeModules.ScreenOrientation.lockOrientationLandscape(); + + // hide the navigation bar (on devices that have the soft navigation bar) + NativeModules.UtilityModule.hideNavigationBar(); + } else { + // Switch back to portrait mode when the media is not fullscreen + NativeModules.ScreenOrientation.lockOrientationPortrait(); + + // show the navigation bar (on devices that have the soft navigation bar) + NativeModules.UtilityModule.showNavigationBar(); + } + + this.setState({ fullscreenMode: isFullscreen }); + StatusBar.setHidden(isFullscreen); + }; + + getStreamUrl = uri => { + const { claimName, claimId } = parseURI(uri); + return `https://player.lbry.tv/content/claims/${claimName}/${claimId}/stream`; + }; render() { - const { contentUri } = this.props; + const { navigation } = this.props; + const { uri } = navigation.state.params; const playerStyle = [ filePageStyle.player, diff --git a/src/page/splash/view.js b/src/page/splash/view.js index c8ae4be..b9850d2 100644 --- a/src/page/splash/view.js +++ b/src/page/splash/view.js @@ -46,7 +46,6 @@ class SplashScreen extends React.PureComponent { this.setState({ shouldAuthenticate: true }); NativeModules.Firebase.getMessagingToken() .then(firebaseToken => { - console.log(firebaseToken); authenticate(appVersion, Platform.OS, firebaseToken); }) .catch(() => authenticate(appVersion, Platform.OS)); @@ -111,9 +110,10 @@ class SplashScreen extends React.PureComponent { } navigateToLiteMode = () => { + const { navigation } = this.props; const resetAction = StackActions.reset({ index: 0, - actions: [NavigationActions.navigate({ routeName: 'LiteFile', params: { url: this.state.launchUrl } })], + actions: [NavigationActions.navigate({ routeName: 'LiteFile', params: { uri: this.state.launchUrl } })], }); navigation.dispatch(resetAction); }; @@ -168,7 +168,6 @@ class SplashScreen extends React.PureComponent { this.setState({ shouldAuthenticate: true }); NativeModules.Firebase.getMessagingToken() .then(firebaseToken => { - console.log(firebaseToken); authenticate(appVersion, Platform.OS, firebaseToken); }) .catch(() => authenticate(appVersion, Platform.OS)); @@ -287,13 +286,13 @@ class SplashScreen extends React.PureComponent { this.props.fetchRewardedContent(); Linking.getInitialURL().then(url => { if (url) { - this.setState({ launchUrl: url }); + const liteMode = url.indexOf('liteMode=1') > -1; + this.setState({ launchUrl: url, liteMode }); } NativeModules.UtilityModule.getNotificationLaunchTarget().then(target => { if (target) { const liteMode = target.indexOf('liteMode=1') > -1; - android.util.Log.d('setting liteMode=' + liteModoe); this.setState({ launchUrl: target, liteMode }); } -- 2.43.4 From 6f891c8b2798fe36df9009a268193125f9dcf008 Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Fri, 6 Mar 2020 14:14:24 +0100 Subject: [PATCH 05/10] updates to navigation handling for lite mode --- android | 2 +- src/component/AppNavigator.js | 15 ++--- src/component/mediaPlayer/view.js | 12 +++- src/component/uriBar/view.js | 28 +++++++- src/index.js | 1 + src/page/liteFile/index.js | 3 +- src/page/liteFile/view.js | 107 +++++++++++++++++++++++++++++- src/page/splash/view.js | 3 +- src/redux/reducers/drawer.js | 6 +- 9 files changed, 153 insertions(+), 24 deletions(-) diff --git a/android b/android index 37b8931..37f84f0 160000 --- a/android +++ b/android @@ -1 +1 @@ -Subproject commit 37b893103da874282f2bdef4a8a1bb543d2c9859 +Subproject commit 37f84f0399f955544b3037cefc911e515f6ffa46 diff --git a/src/component/AppNavigator.js b/src/component/AppNavigator.js index e3a1fb3..1154c58 100644 --- a/src/component/AppNavigator.js +++ b/src/component/AppNavigator.js @@ -20,7 +20,7 @@ import SubscriptionsPage from 'page/subscriptions'; import TransactionHistoryPage from 'page/transactionHistory'; import VerificationScreen from 'page/verification'; import WalletPage from 'page/wallet'; -import { NavigationActions } from 'react-navigation'; +import { NavigationActions, StackActions } from 'react-navigation'; import { createDrawerNavigator } from 'react-navigation-drawer'; import { createStackNavigator } from 'react-navigation-stack'; import { @@ -31,6 +31,7 @@ import { import { connect } from 'react-redux'; import { AppState, + Alert, BackHandler, DeviceEventEmitter, Linking, @@ -77,16 +78,6 @@ import Snackbar from 'react-native-snackbar'; const SYNC_GET_INTERVAL = 1000 * 60 * 5; // every 5 minutes -const menuNavigationButton = navigation => ( - navigation.openDrawer()} - /> -); - const discoverStack = createStackNavigator( { Subscriptions: { @@ -321,6 +312,8 @@ class AppWithNavigationState extends React.Component { 'hardwareBackPress', function() { const { dispatch, nav, drawerStack } = this.props; + console.log(nav); + if (drawerStack.length > 1) { dispatchNavigateBack(dispatch, nav, drawerStack); return true; diff --git a/src/component/mediaPlayer/view.js b/src/component/mediaPlayer/view.js index 0b18f2c..0d67dfb 100644 --- a/src/component/mediaPlayer/view.js +++ b/src/component/mediaPlayer/view.js @@ -36,7 +36,7 @@ class MediaPlayer extends React.PureComponent { constructor(props) { super(props); this.state = { - buffering: false, + buffering: true, backgroundPlayEnabled: false, autoPaused: false, rate: 1, @@ -45,9 +45,9 @@ class MediaPlayer extends React.PureComponent { resizeMode: 'contain', duration: 0.0, currentTime: 0.0, - paused: !props.autoPlay, + paused: true, fullscreenMode: false, - areControlsVisible: true, + areControlsVisible: false, controlsTimeout: -1, seekerOffset: 0, seekerPosition: 0, @@ -87,7 +87,9 @@ class MediaPlayer extends React.PureComponent { } onLoad = data => { + const { autoPlay } = this.props; this.setState({ + buffering: false, duration: data.duration, }); @@ -100,6 +102,10 @@ class MediaPlayer extends React.PureComponent { if (this.props.onMediaLoaded) { this.props.onMediaLoaded(); } + + if (autoPlay) { + this.setState({ paused: false }); + } }; onProgress = data => { diff --git a/src/component/uriBar/view.js b/src/component/uriBar/view.js index 46554cc..6dc27aa 100644 --- a/src/component/uriBar/view.js +++ b/src/component/uriBar/view.js @@ -1,13 +1,14 @@ // @flow import React from 'react'; import { SEARCH_TYPES, isNameValid, isURIValid, normalizeURI } from 'lbry-redux'; -import { Dimensions, FlatList, Keyboard, Text, TextInput, TouchableOpacity, View } from 'react-native'; +import { Alert, Dimensions, FlatList, Keyboard, Text, TextInput, TouchableOpacity, View } from 'react-native'; import { navigateToUri, transformUrl } from 'utils/helper'; import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api import UriBarItem from './internal/uri-bar-item'; import Icon from 'react-native-vector-icons/FontAwesome5'; import NavigationButton from 'component/navigationButton'; import uriBarStyle from 'styles/uriBar'; +import { NavigationActions, StackActions } from 'react-navigation'; class UriBar extends React.PureComponent { static INPUT_TIMEOUT = 2500; // 2.5 seconds @@ -183,6 +184,29 @@ class UriBar extends React.PureComponent { }); }; + handleNavigationButtonPress = () => { + const { navigation } = this.props; + if (!navigation.openDrawer) { + Alert.alert(__('Switch to full mode'), + 'This will reload the app in full mode. Do you wish to continue?', + [ + { text: __('No') }, + { + text: __('Yes'), + onPress: () => { + const resetAction = StackActions.reset({ + index: 0, + actions: [NavigationActions.navigate({ routeName: 'Splash' })], + }); + navigation.dispatch(resetAction); + }, + }, + ]); + } else { + navigation.openDrawer(); + } + } + render() { const { allowEdit, @@ -262,7 +286,7 @@ class UriBar extends React.PureComponent { size={24} style={uriBarStyle.drawerMenuButton} iconStyle={uriBarStyle.drawerHamburger} - onPress={() => navigation.openDrawer()} + onPress={this.handleNavigationButtonPress} /> )} {!selectionMode && ( diff --git a/src/index.js b/src/index.js index 5a52168..f64e3e5 100644 --- a/src/index.js +++ b/src/index.js @@ -58,6 +58,7 @@ window.__ = __; const globalExceptionHandler = (error, isFatal) => { if (error && NativeModules.Firebase) { + console.log(error); NativeModules.Firebase.logException(!!isFatal, error.message ? error.message : 'No message', JSON.stringify(error)); } }; diff --git a/src/page/liteFile/index.js b/src/page/liteFile/index.js index a489bbc..49b4570 100644 --- a/src/page/liteFile/index.js +++ b/src/page/liteFile/index.js @@ -1,6 +1,6 @@ import { connect } from 'react-redux'; import { makeSelectContentPositionForUri, selectBalance } from 'lbry-redux'; -import { doClaimEligiblePurchaseRewards, makeSelectViewCountForUri } from 'lbryinc'; +import { doClaimEligiblePurchaseRewards, makeSelectViewCountForUri, selectRewardContentClaimIds } from 'lbryinc'; import { doSetPlayerVisible } from 'redux/actions/drawer'; import { makeSelectPlayerVisible } from 'redux/selectors/drawer'; import { doToggleFullscreenMode } from 'redux/actions/settings'; @@ -15,6 +15,7 @@ const select = (state, props) => { isPlayerVisible: makeSelectPlayerVisible(uri)(state), // use navigation uri for this selector position: makeSelectContentPositionForUri(contentUri)(state), viewCount: makeSelectViewCountForUri(contentUri)(state), + rewardedContentClaimIds: selectRewardContentClaimIds(state), }; }; diff --git a/src/page/liteFile/view.js b/src/page/liteFile/view.js index ede530d..8c60814 100644 --- a/src/page/liteFile/view.js +++ b/src/page/liteFile/view.js @@ -20,9 +20,15 @@ import { View, } from 'react-native'; import UriBar from 'component/uriBar'; +import Link from 'component/link'; import MediaPlayer from 'component/mediaPlayer'; +import RelatedContent from 'component/relatedContent'; import filePageStyle from 'styles/filePage'; +import { formatLbryUrlForWeb, navigateToUri } from 'utils/helper'; import uriBarStyle from 'styles/uriBar'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import ProgressCircle from 'react-native-progress-circle'; +import Constants from "constants"; // This page will only be used for playing audio / video content from a remote stream URL class LiteFilePage extends React.PureComponent { @@ -36,6 +42,8 @@ class LiteFilePage extends React.PureComponent { fullscreenMode: false, playerHeight: null, isLandscape: false, + showRecommended: false, + viewCount: 0, }; checkOrientation = () => { @@ -84,15 +92,26 @@ class LiteFilePage extends React.PureComponent { StatusBar.setHidden(isFullscreen); }; - getStreamUrl = uri => { - const { claimName, claimId } = parseURI(uri); + getStreamUrl = url => { + const { claimName, claimId } = parseURI(url); return `https://player.lbry.tv/content/claims/${claimName}/${claimId}/stream`; }; + handleSharePress = url => { + const shareUrl = Constants.SHARE_BASE_URL + formatLbryUrlForWeb(url); + NativeModules.UtilityModule.shareUrl(shareUrl); + }; + render() { - const { navigation } = this.props; + const { navigation, rewardedContentClaimIds, title } = this.props; + const { viewCount } = this.state; const { uri } = navigation.state.params; + const { claimName, claimId } = parseURI(uri); + const isRewardContent = rewardedContentClaimIds.includes(claimId); + const channelName = null; + const channelUri = null; + const playerStyle = [ filePageStyle.player, this.state.isLandscape @@ -126,6 +145,88 @@ class LiteFilePage extends React.PureComponent { }} /> + + { + this.scrollView = ref; + }} + > + this.setState({ showDescription: !this.state.showDescription })} + > + + + + {title} + + {isRewardContent && } + + + {viewCount === 1 && __('%view% view', { view: viewCount })} + {viewCount > 1 && __('%view% views', { view: viewCount })} + + + + + + this.handleSharePress(uri)}> + + {__('Share')} + + + this.setState({ showTipView: true })} + > + + {__('Tip')} + + + + + + {channelName && ( + { + navigateToUri( + navigation, + normalizeURI(channelUri), + null, + false, + null, + false, + ); + }} + /> + )} + {!channelName && ( + + {__('Anonymous')} + + )} + + + + + + {this.state.showRecommended && ( + + )} + ); } diff --git a/src/page/splash/view.js b/src/page/splash/view.js index cc049dc..51b44f0 100644 --- a/src/page/splash/view.js +++ b/src/page/splash/view.js @@ -116,7 +116,7 @@ class SplashScreen extends React.PureComponent { const { navigation } = this.props; const resetAction = StackActions.reset({ index: 0, - actions: [NavigationActions.navigate({ routeName: 'LiteFile', params: { uri: this.state.launchUrl } })], + actions: [NavigationActions.navigate({ routeName: 'LiteFile', params: { uri: this.state.launchUrl.replace(/liteMode=1/gi, '') } })], }); navigation.dispatch(resetAction); }; @@ -171,6 +171,7 @@ class SplashScreen extends React.PureComponent { this.setState({ shouldAuthenticate: true }, () => { NativeModules.Firebase.getMessagingToken() .then(firebaseToken => { + console.log('firebaseToken=' + firebaseToken); authenticate(appVersion, Platform.OS, firebaseToken); }) .catch(() => authenticate(appVersion, Platform.OS)); diff --git a/src/redux/reducers/drawer.js b/src/redux/reducers/drawer.js index dc01e74..2525ece 100644 --- a/src/redux/reducers/drawer.js +++ b/src/redux/reducers/drawer.js @@ -50,8 +50,10 @@ reducers[Constants.ACTION_PUSH_DRAWER_STACK] = (state, action) => { if (canPushStack) { newStack.push({ route: routeName, params }); - // save the route - lastRouteInStack = { route: routeName, params }; + // save the route (if it's not lite mode) + if (routeName.toLowerCase() !== 'litefile') { + lastRouteInStack = { route: routeName, params }; + } } return { -- 2.43.4 From 8e99074ba4fa1c6359611f6051283c86501a3af5 Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Fri, 6 Mar 2020 18:25:36 +0100 Subject: [PATCH 06/10] update packages --- android | 2 +- bundle-android.sh | 1 - package.json | 2 +- src/page/splash/index.js | 9 +- src/page/splash/view.js | 72 ++++-- yarn.lock | 539 +++++++++++++++++++++++++++------------ 6 files changed, 428 insertions(+), 197 deletions(-) diff --git a/android b/android index 37f84f0..93c87a2 160000 --- a/android +++ b/android @@ -1 +1 @@ -Subproject commit 37f84f0399f955544b3037cefc911e515f6ffa46 +Subproject commit 93c87a226bf095201762ea4f47dae3b164150ae1 diff --git a/bundle-android.sh b/bundle-android.sh index 49e6ba1..37d41d4 100644 --- a/bundle-android.sh +++ b/bundle-android.sh @@ -1,3 +1,2 @@ #!/bin/bash react-native bundle --platform android --dev false --entry-file src/index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/ - diff --git a/package.json b/package.json index 36a313e..0c3162f 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "flow-babel-webpack-plugin": "^1.1.1", "husky": "^0.14.3", "lint-staged": "^7.0.4", - "metro-react-native-babel-preset": "^0.58.0", + "metro-react-native-babel-preset": "0.56.3", "prettier": "^1.11.1", "@react-native-community/eslint-config": "^0.0.5", "react-devtools": "^3.6.3", diff --git a/src/page/splash/index.js b/src/page/splash/index.js index b764d5c..ebc5c89 100644 --- a/src/page/splash/index.js +++ b/src/page/splash/index.js @@ -2,6 +2,7 @@ import { connect } from 'react-redux'; import { SETTINGS, doBalanceSubscribe, doUpdateBlockHeight, doPopulateSharedUserState, doToast } from 'lbry-redux'; import { doAuthenticate, + doInstallNewWithParams, doBlackListedOutpointsSubscribe, doFilteredOutpointsSubscribe, doFetchMySubscriptions, @@ -17,6 +18,7 @@ import { import { doSetClientSetting } from 'redux/actions/settings'; import { selectLastRouteInStack } from 'redux/selectors/drawer'; import SplashScreen from './view'; +import { doInstallNew } from 'lbryinc/src/redux/actions/user'; const select = state => ({ authIsPending: selectAuthenticationIsPending(state), @@ -27,6 +29,8 @@ const select = state => ({ const perform = dispatch => ({ authenticate: (appVersion, os, firebaseToken) => dispatch(doAuthenticate(appVersion, os, firebaseToken)), + installNewWithParams: (appVersion, installationId, nodeId, lbrynetVersion, os, platform, firebaseToken) => + dispatch(doInstallNewWithParams(appVersion, installationId, nodeId, lbrynetVersion, os, platform, firebaseToken)), balanceSubscribe: () => dispatch(doBalanceSubscribe()), blacklistedOutpointsSubscribe: () => dispatch(doBlackListedOutpointsSubscribe()), filteredOutpointsSubscribe: () => dispatch(doFilteredOutpointsSubscribe()), @@ -42,7 +46,4 @@ const perform = dispatch => ({ verifyUserEmailFailure: error => dispatch(doUserEmailVerifyFailure(error)), }); -export default connect( - select, - perform, -)(SplashScreen); +export default connect(select, perform)(SplashScreen); diff --git a/src/page/splash/view.js b/src/page/splash/view.js index 51b44f0..834a580 100644 --- a/src/page/splash/view.js +++ b/src/page/splash/view.js @@ -35,20 +35,37 @@ class SplashScreen extends React.PureComponent { shouldAuthenticate: false, subscriptionsFetched: false, liteMode: false, + liteModeParams: {}, }; - updateStatus() { - const { authenticate } = this.props; + initLiteMode = () => {}; - if (this.state.liteMode) { + updateStatus() { + const { authenticate, installNewWithParams } = this.props; + const { liteMode, liteModeParams } = this.state; + const { installationId, nodeId, lbrynetVersion, platform } = liteModeParams; + + if (liteMode) { // authenticate immediately NativeModules.VersionInfo.getAppVersion().then(appVersion => { this.setState({ shouldAuthenticate: true }); NativeModules.Firebase.getMessagingToken() .then(firebaseToken => { - authenticate(appVersion, Platform.OS, firebaseToken); + authenticate(appVersion, Platform.OS, firebaseToken, false); + installNewWithParams( + appVersion, + installationId, + nodeId, + lbrynetVersion, + Platform.OS, + platform, + firebaseToken, + ); }) - .catch(() => authenticate(appVersion, Platform.OS)); + .catch(() => { + authenticate(appVersion, Platform.OS, null, false); + installNewWithParams(appVersion, installationId, nodeId, lbrynetVersion, Platform.OS, platform, null); + }); }); } else { Lbry.status().then(status => { @@ -116,7 +133,12 @@ class SplashScreen extends React.PureComponent { const { navigation } = this.props; const resetAction = StackActions.reset({ index: 0, - actions: [NavigationActions.navigate({ routeName: 'LiteFile', params: { uri: this.state.launchUrl.replace(/liteMode=1/gi, '') } })], + actions: [ + NavigationActions.navigate({ + routeName: 'LiteFile', + params: { uri: this.state.launchUrl.replace(/liteMode=1/gi, '') }, + }), + ], }); navigation.dispatch(resetAction); }; @@ -171,7 +193,6 @@ class SplashScreen extends React.PureComponent { this.setState({ shouldAuthenticate: true }, () => { NativeModules.Firebase.getMessagingToken() .then(firebaseToken => { - console.log('firebaseToken=' + firebaseToken); authenticate(appVersion, Platform.OS, firebaseToken); }) .catch(() => authenticate(appVersion, Platform.OS)); @@ -296,25 +317,18 @@ class SplashScreen extends React.PureComponent { } NativeModules.UtilityModule.getNotificationLaunchTarget().then(target => { + let liteMode; if (target) { - const liteMode = target.indexOf('liteMode=1') > -1; + liteMode = target.indexOf('liteMode=1') > -1; this.setState({ launchUrl: target, liteMode }); } // Only connect after checking initial launch url / notification launch target - Lbry.connect() - .then(() => { - this.updateStatus(); - }) - .catch(e => { - this.setState({ - isLagging: true, - message: __('Connection Failure'), - details: __( - 'We could not establish a connection to the SDK. Your data connection may be preventing LBRY from connecting. Contact hello@lbry.com if you think this is a software bug.', - ), - }); - }); + if (liteMode) { + this.initLiteMode(); + } else { + this.lbryConnect(); + } }); }); @@ -329,6 +343,22 @@ class SplashScreen extends React.PureComponent { }); } + lbryConnect = () => { + Lbry.connect() + .then(() => { + this.updateStatus(); + }) + .catch(e => { + this.setState({ + isLagging: true, + message: __('Connection Failure'), + details: __( + 'We could not establish a connection to the SDK. Your data connection may be preventing LBRY from connecting. Contact hello@lbry.com if you think this is a software bug.', + ), + }); + }); + }; + handleContinueAnywayPressed = () => { this.setState( { diff --git a/yarn.lock b/yarn.lock index bed52b5..6b43314 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,17 +10,17 @@ "@babel/highlight" "^7.8.3" "@babel/core@^7.0.0", "@babel/core@^7.6.2": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.4.tgz#d496799e5c12195b3602d0fddd77294e3e38e80e" - integrity sha512-0LiLrB2PwrVI+a2/IEskBopDYSd8BCb3rOvH7D5tzoWd696TBEduBvuLVm4Nx6rltrLZqvI3MCalB2K2aVzQjA== + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.8.7.tgz#b69017d221ccdeb203145ae9da269d72cf102f3b" + integrity sha512-rBlqF3Yko9cynC5CCFy6+K/w2N+Sq/ff2BPy+Krp7rHlABIr5epbA7OxVeKoMHB39LZOp1UY5SuLjy6uWi35yA== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.4" + "@babel/generator" "^7.8.7" "@babel/helpers" "^7.8.4" - "@babel/parser" "^7.8.4" - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.8.4" - "@babel/types" "^7.8.3" + "@babel/parser" "^7.8.7" + "@babel/template" "^7.8.6" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.7" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -30,12 +30,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.0.0", "@babel/generator@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.4.tgz#35bbc74486956fe4251829f9f6c48330e8d0985e" - integrity sha512-PwhclGdRpNAf3IxZb0YVuITPZmmrXz9zf6fH8lT4XbrmfQKr6ryBzhv593P5C6poJRciFCL/eHGW2NuGrgEyxA== +"@babel/generator@^7.0.0", "@babel/generator@^7.8.6", "@babel/generator@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.8.7.tgz#870b3cf7984f5297998152af625c4f3e341400f7" + integrity sha512-DQwjiKJqH4C3qGiyQCAExJHoZssn49JTMJgZ8SANGgVFdkupcUhLOdkAeoC6kmHZCPfoDG5M0b6cFlSN5wW7Ew== dependencies: - "@babel/types" "^7.8.3" + "@babel/types" "^7.8.7" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" @@ -63,32 +63,33 @@ "@babel/types" "^7.8.3" esutils "^2.0.0" -"@babel/helper-call-delegate@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.3.tgz#de82619898aa605d409c42be6ffb8d7204579692" - integrity sha512-6Q05px0Eb+N4/GTyKPPvnkig7Lylw+QzihMpws9iiZQv7ZImf84ZsZpQH7QoWN4n4tm81SnSzPgHw2qtO0Zf3A== +"@babel/helper-call-delegate@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/helper-call-delegate/-/helper-call-delegate-7.8.7.tgz#28a279c2e6c622a6233da548127f980751324cab" + integrity sha512-doAA5LAKhsFCR0LAFIf+r2RSMmC+m8f/oQ+URnUET/rWeEzC0yTRmAGyWkD4sSu3xwbS7MYQ2u+xlt1V5R56KQ== dependencies: "@babel/helper-hoist-variables" "^7.8.3" "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/types" "^7.8.7" "@babel/helper-create-class-features-plugin@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.3.tgz#5b94be88c255f140fd2c10dd151e7f98f4bff397" - integrity sha512-qmp4pD7zeTxsv0JNecSBsEmG1ei2MqwJq4YQcK3ZWm/0t07QstWfvuV/vm3Qt5xNMFETn2SZqpMx2MQzbtq+KA== + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.8.6.tgz#243a5b46e2f8f0f674dc1387631eb6b28b851de0" + integrity sha512-klTBDdsr+VFFqaDHm5rR69OpEQtO2Qv8ECxHS1mNhJJvaHArR6a1xTf5K/eZW7eZpJbhCx3NW1Yt/sKsLXLblg== dependencies: "@babel/helper-function-name" "^7.8.3" "@babel/helper-member-expression-to-functions" "^7.8.3" "@babel/helper-optimise-call-expression" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-split-export-declaration" "^7.8.3" "@babel/helper-create-regexp-features-plugin@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.3.tgz#c774268c95ec07ee92476a3862b75cc2839beb79" - integrity sha512-Gcsm1OHCUr9o9TcJln57xhWHtdXbA2pgQ58S0Lxlks0WMGNXuki4+GLfX0p+L2ZkINUGZvfkz8rzoqJQSthI+Q== + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.8.6.tgz#7fa040c97fb8aebe1247a5c645330c32d083066b" + integrity sha512-bPyujWfsHhV/ztUkwGHz/RPV1T1TDEsSZDsN42JPehndA+p1KKTh3npvTadux0ZhCrytx9tvjpWNowKby3tM6A== dependencies: + "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/helper-regex" "^7.8.3" regexpu-core "^4.6.0" @@ -147,15 +148,16 @@ "@babel/types" "^7.8.3" "@babel/helper-module-transforms@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.3.tgz#d305e35d02bee720fbc2c3c3623aa0c316c01590" - integrity sha512-C7NG6B7vfBa/pwCOshpMbOYUmrYQDfCpVL/JCRu0ek8B5p8kue1+BCXpg2vOYs7w5ACB9GTOBYQ5U6NwrMg+3Q== + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.8.6.tgz#6a13b5eecadc35692047073a64e42977b97654a4" + integrity sha512-RDnGJSR5EFBJjG3deY0NiL0K9TO8SXxS9n/MPsbPK/s9LbQymuLNtlzvDiNS7IpecuL45cMeLVkA+HfmlrnkRg== dependencies: "@babel/helper-module-imports" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-simple-access" "^7.8.3" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/template" "^7.8.6" + "@babel/types" "^7.8.6" lodash "^4.17.13" "@babel/helper-optimise-call-expression@^7.8.3": @@ -188,15 +190,15 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-replace-supers@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.3.tgz#91192d25f6abbcd41da8a989d4492574fb1530bc" - integrity sha512-xOUssL6ho41U81etpLoT2RTdvdus4VfHamCuAm4AHxGr+0it5fnwoVdwUJ7GFEqCsQYzJUhcbsN9wB9apcYKFA== +"@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" + integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== dependencies: "@babel/helper-member-expression-to-functions" "^7.8.3" "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/traverse" "^7.8.6" + "@babel/types" "^7.8.6" "@babel/helper-simple-access@^7.8.3": version "7.8.3" @@ -241,10 +243,10 @@ esutils "^2.0.2" js-tokens "^4.0.0" -"@babel/parser@^7.0.0", "@babel/parser@^7.8.3", "@babel/parser@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.4.tgz#d1dbe64691d60358a974295fa53da074dd2ce8e8" - integrity sha512-0fKu/QqildpXmPVaRBoXOlyBb3MC+J0A66x97qEfLOMkn3u6nfY5esWogQwi/K0BjASYy4DbnsEWnpNL6qT5Mw== +"@babel/parser@^7.0.0", "@babel/parser@^7.8.6", "@babel/parser@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.8.7.tgz#7b8facf95d25fef9534aad51c4ffecde1a61e26a" + integrity sha512-9JWls8WilDXFGxs0phaXAZgpxTZhSk/yOYH2hTHC0X1yC7Z78IJfvR1vJ+rmJKq3I35td2XzXzN6ZLYlna+r/A== "@babel/plugin-external-helpers@^7.0.0": version "7.8.3" @@ -403,16 +405,16 @@ lodash "^4.17.13" "@babel/plugin-transform-classes@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.3.tgz#46fd7a9d2bb9ea89ce88720477979fe0d71b21b8" - integrity sha512-SjT0cwFJ+7Rbr1vQsvphAHwUHvSUPmMjMU/0P59G8U2HLFqSa082JO7zkbDNWs9kH/IUqpHI6xWNesGf8haF1w== + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.8.6.tgz#77534447a477cbe5995ae4aee3e39fbc8090c46d" + integrity sha512-k9r8qRay/R6v5aWZkrEclEhKO6mc1CCQr2dLsVHBmOQiMpN6I2bpjX3vgnldUWeEI1GHVNByULVxZ4BdP4Hmdg== dependencies: "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/helper-define-map" "^7.8.3" "@babel/helper-function-name" "^7.8.3" "@babel/helper-optimise-call-expression" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.3" + "@babel/helper-replace-supers" "^7.8.6" "@babel/helper-split-export-declaration" "^7.8.3" globals "^11.1.0" @@ -447,9 +449,9 @@ "@babel/plugin-syntax-flow" "^7.8.3" "@babel/plugin-transform-for-of@^7.0.0": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.4.tgz#6fe8eae5d6875086ee185dd0b098a8513783b47d" - integrity sha512-iAXNlOWvcYUYoV8YIxwS7TxGRJcxyl8eQCfT+A5j8sKUzRFvJdcyjp97jL2IghWSRDaL2PU2O2tX8Cu9dTBq5A== + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.8.6.tgz#a051bd1b402c61af97a27ff51b468321c7c2a085" + integrity sha512-M0pw4/1/KI5WAxPsdcUL/w2LJ7o89YHN3yLkzNjg7Yl15GlVGgzHyCU+FMeAxevHGsLVmUqbirlUIKTafPmzdw== dependencies: "@babel/helper-plugin-utils" "^7.8.3" @@ -501,11 +503,11 @@ "@babel/helper-replace-supers" "^7.8.3" "@babel/plugin-transform-parameters@^7.0.0": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.4.tgz#1d5155de0b65db0ccf9971165745d3bb990d77d3" - integrity sha512-IsS3oTxeTsZlE5KqzTbcC2sV0P9pXdec53SU+Yxv7o/6dvGM5AkTotQKhoSffhNgZ/dftsSiOoxy7evCYJXzVA== + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.8.7.tgz#66fa2f1de4129b4e0447509223ac71bda4955395" + integrity sha512-brYWaEPTRimOctz2NDA3jnBbDi7SVN2T4wYuu0aqSzxC3nozFZngGaw29CJ9ZPweB7k+iFmZuoG3IVPIcXmD2g== dependencies: - "@babel/helper-call-delegate" "^7.8.3" + "@babel/helper-call-delegate" "^7.8.7" "@babel/helper-get-function-arity" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -541,11 +543,11 @@ "@babel/plugin-syntax-jsx" "^7.8.3" "@babel/plugin-transform-regenerator@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.3.tgz#b31031e8059c07495bf23614c97f3d9698bc6ec8" - integrity sha512-qt/kcur/FxrQrzFR432FGZznkVAjiyFtCOANjkAKwCbt465L6ZCiUQh2oMYGU3Wo8LRFJxNDFwWn106S5wVUNA== + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.8.7.tgz#5e46a0dca2bee1ad8285eb0527e6abc9c37672f8" + integrity sha512-TIg+gAl4Z0a3WmD3mbYSk+J9ZUH6n/Yc57rtKRnlA/7rcCvpekHXe0CMZHP1gYp7/KLe9GHTuIba0vXmls6drA== dependencies: - regenerator-transform "^0.14.0" + regenerator-transform "^0.14.2" "@babel/plugin-transform-runtime@^7.0.0": version "7.8.3" @@ -587,10 +589,10 @@ "@babel/helper-annotate-as-pure" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-typescript@^7.0.0", "@babel/plugin-transform-typescript@^7.5.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.3.tgz#be6f01a7ef423be68e65ace1f04fc407e6d88917" - integrity sha512-Ebj230AxcrKGZPKIp4g4TdQLrqX95TobLUWKd/CwG7X1XHUH1ZpkpFvXuXqWbtGRWb7uuEWNlrl681wsOArAdQ== +"@babel/plugin-transform-typescript@^7.0.0": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.8.7.tgz#48bccff331108a7b3a28c3a4adc89e036dc3efda" + integrity sha512-7O0UsPQVNKqpHeHLpfvOG4uXmlw+MOxYvUv6Otc9uH5SYMIxvF6eBdjkWvC3f9G+VXe0RsNExyAQBeTRug/wqQ== dependencies: "@babel/helper-create-class-features-plugin" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" @@ -605,9 +607,9 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/register@^7.0.0": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.8.3.tgz#5d5d30cfcc918437535d724b8ac1e4a60c5db1f8" - integrity sha512-t7UqebaWwo9nXWClIPLPloa5pN33A2leVs8Hf0e9g9YwUP8/H9NeR7DJU+4CXo23QtjChQv5a3DjEtT83ih1rg== + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.8.6.tgz#a1066aa6168a73a70c35ef28cc5865ccc087ea69" + integrity sha512-7IDO93fuRsbyml7bAafBQb3RcBGlCpU4hh5wADA2LJEEcYk92WkwFZ0pHyIi2fb5Auoz1714abETdZKCOxN0CQ== dependencies: find-cache-dir "^2.0.0" lodash "^4.17.13" @@ -615,41 +617,41 @@ pirates "^4.0.0" source-map-support "^0.5.16" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.4.tgz#d79f5a2040f7caa24d53e563aad49cbc05581308" - integrity sha512-neAp3zt80trRVBI1x0azq6c57aNBqYZH8KhMm3TaB7wEI5Q4A2SHfBHE8w9gOhI/lrqxtEbXZgQIrHP+wvSGwQ== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.8.4": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.8.7.tgz#8fefce9802db54881ba59f90bb28719b4996324d" + integrity sha512-+AATMUFppJDw6aiR5NVPHqIQBlV/Pj8wY/EZH+lmvRdUo9xBaz/rF3alAwFJQavvKfeOlPE7oaaDHVbcySbCsg== dependencies: - regenerator-runtime "^0.13.2" + regenerator-runtime "^0.13.4" -"@babel/template@^7.0.0", "@babel/template@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.3.tgz#e02ad04fe262a657809327f578056ca15fd4d1b8" - integrity sha512-04m87AcQgAFdvuoyiQ2kgELr2tV8B4fP/xJAVUL3Yb3bkNdMedD3d0rlSQr3PegP0cms3eHjl1F7PWlvWbU8FQ== +"@babel/template@^7.0.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" + integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.3" - "@babel/types" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" -"@babel/traverse@^7.0.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4": - version "7.8.4" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.4.tgz#f0845822365f9d5b0e312ed3959d3f827f869e3c" - integrity sha512-NGLJPZwnVEyBPLI+bl9y9aSnxMhsKz42so7ApAv9D+b4vAFPpY013FTS9LdKxcABoIYFU52HcYga1pPlx454mg== +"@babel/traverse@^7.0.0", "@babel/traverse@^7.8.3", "@babel/traverse@^7.8.4", "@babel/traverse@^7.8.6": + version "7.8.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.8.6.tgz#acfe0c64e1cd991b3e32eae813a6eb564954b5ff" + integrity sha512-2B8l0db/DPi8iinITKuo7cbPznLCEk0kCxDoB9/N6gGNg/gxOXiR/IcymAFPiBwk5w6TtQ27w4wpElgp9btR9A== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.8.4" + "@babel/generator" "^7.8.6" "@babel/helper-function-name" "^7.8.3" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.8.4" - "@babel/types" "^7.8.3" + "@babel/parser" "^7.8.6" + "@babel/types" "^7.8.6" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" - integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== +"@babel/types@^7.0.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.8.7": + version "7.8.7" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.7.tgz#1fc9729e1acbb2337d5b6977a63979b4819f5d1d" + integrity sha512-k2TreEHxFA4CjGkL+GYjRyx35W0Mr7DP5+9q6WMkyKXB+904bYmG40syjMFV0oLlhhFCwWl0vA0DyzTDkwAiJw== dependencies: esutils "^2.0.2" lodash "^4.17.13" @@ -768,9 +770,9 @@ chalk "^3.0.0" "@react-native-community/async-storage@^1.5.1": - version "1.8.0" - resolved "https://registry.yarnpkg.com/@react-native-community/async-storage/-/async-storage-1.8.0.tgz#5f23ad486daa284398c71f2cc94d15fb7be40bb8" - integrity sha512-R8hYm9h7MqoTa/opzBID6hhL5rseNoMJK1wG/B/Diob+JzEv7b1GMpHjsAZX2pU2o82LU73XbPJOPzfvkGFaUA== + version "1.8.1" + resolved "https://registry.yarnpkg.com/@react-native-community/async-storage/-/async-storage-1.8.1.tgz#c93e69dcf948667b207e409b8039b7edf199159b" + integrity sha512-MA1fTp4SB7OOtDmNAwds6jIpiwwty1NIoFboWjEWkoyWW35zIuxlhHxD4joSy21aWEzUVwvv6JJ2hSsP/HTb7A== "@react-native-community/cli-debugger-ui@^3.0.0": version "3.0.0" @@ -818,9 +820,9 @@ integrity sha512-ng6Tm537E/M42GjE4TRUxQyL8sRfClcL7bQWblOCoxPZzJ2J3bdALsjeG3vDnVCIfI/R0AeFalN9KjMt0+Z/Zg== "@react-native-community/cli@^3.0.0": - version "3.2.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-3.2.0.tgz#f4b04b94bf96810c4a7f57379a69ebd11fd9c933" - integrity sha512-k8GmNQH/EbIIVd4VlVbFP99IRNhovWV6hhnJ3y2+FfZq18H/U6yV/t1bpI3A3QqPuAyWxk/1jBdXvP6BY/7kbw== + version "3.2.1" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-3.2.1.tgz#2a466801eb6080a1f73358c5d740c53c24ed8c6f" + integrity sha512-bZ/bfZ+9r1gQSxp6t7+00DcpC6vmbVYSvzUCFM/yo5k8bhsDdcy8aocscIaXXVGG+v9Edri/Q7hH9ks7L18/Rg== dependencies: "@hapi/joi" "^15.0.3" "@react-native-community/cli-debugger-ui" "^3.0.0" @@ -881,9 +883,9 @@ prettier "1.16.4" "@react-native-community/masked-view@^0.1.5": - version "0.1.6" - resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.6.tgz#c7f2ac187c1f25aa8c30d11baa8f4398eca3bb84" - integrity sha512-PpMoeXwPUoldCRKDuSi+zK5rT+sJTW6ri6RdGPkSKRzU77Q1d9IaR0O5IKvBj0XSdL3p+dcOa05gk35aGDffBQ== + version "0.1.7" + resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.7.tgz#a65ce0702f55cb67fd777995de6fc7b3e5781903" + integrity sha512-9KbP7LTLFz9dx1heURJbO6nuVMdSjDez8znlrUzaB1nUwKVsTTwlKRuHxGUYIIkReLWrJQeCv9tidy+84z2eCw== "@react-navigation/core@^3.6.1": version "3.6.1" @@ -1033,6 +1035,11 @@ lodash.unescape "4.0.1" semver "5.5.0" +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -1053,15 +1060,15 @@ accepts@~1.3.5, accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn-jsx@^5.1.0: +acorn-jsx@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== acorn@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.0.tgz#949d36f2c292535da602283586c2477c57eb2d6c" - integrity sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ== + version "7.1.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" + integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== ajv@^6.10.0, ajv@^6.10.2, ajv@^6.5.5: version "6.12.0" @@ -1100,11 +1107,11 @@ ansi-escapes@^3.0.0: integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== ansi-escapes@^4.2.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.0.tgz#a4ce2b33d6b214b7950d8595c212f12ac9cc569d" - integrity sha512-EiYhwo0v255HUL6eDyuLrXEkTi7WwVCLAw+SeOQ7M7qdun1z1pum4DEm/nuqIVbPvi9RPPc9k9LbyBv6H0DwVg== + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== dependencies: - type-fest "^0.8.1" + type-fest "^0.11.0" ansi-fragments@^0.2.1: version "0.2.1" @@ -1187,6 +1194,19 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2178,9 +2198,9 @@ camelcase@^5.0.0, camelcase@^5.3.1: integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== caniuse-lite@^1.0.30000844: - version "1.0.30001030" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001030.tgz#78076c4c6d67d3e41d6eb9399853fb27fe6e44ee" - integrity sha512-QGK0W4Ft/Ac+zTjEiRJfwDNATvS3fodDczBXrH42784kcfqcDKpEPfN08N0HQjrAp8He/Jw8QiSS9QRn7XAbUw== + version "1.0.30001032" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001032.tgz#b8d224914e2cd7f507085583d4e38144c652bce4" + integrity sha512-8joOm7BwcpEN4BfVHtfh0hBXSAPVYk+eUIcNntGtMkUWy/6AKRCDZINCLe3kB1vHhT2vBxBF85Hh9VlPXi/qjA== capture-exit@^2.0.0: version "2.0.0" @@ -2237,6 +2257,11 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== +chownr@^1.1.1: + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== + ci-info@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" @@ -2462,6 +2487,11 @@ connect@^3.6.5: parseurl "~1.3.3" utils-merge "1.0.1" +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -2586,7 +2616,7 @@ debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6. dependencies: ms "2.0.0" -debug@^3.1.0: +debug@^3.1.0, debug@^3.2.6: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -2671,6 +2701,11 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + denodeify@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" @@ -2686,6 +2721,11 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + didyoumean@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.1.tgz#e92edfdada6537d484d73c0172fd1eba0c4976ff" @@ -2754,9 +2794,9 @@ electron-download@^3.0.1: sumchecker "^1.2.0" electron-to-chromium@^1.3.47: - version "1.3.361" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.361.tgz#a820bf52da171c0024314745462cfe0dc944373e" - integrity sha512-OzSVjWpsRhJyr9PSAXkeloSe6e9viU2ToGt1wXlXFsGcxuI9vlsnalL+V/AM59Z2pEo3wRxIddtOGsT7Y6x/sQ== + version "1.3.370" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.370.tgz#420fba483d30ba3f7965b30ecf850fdb5f08a0bc" + integrity sha512-399cXDE9C7qoVF2CUgCA/MLflfvxbo1F0kB/pkB94426freL/JgZ0HNaloomsOfnE+VC/qgTFZqzmivSdaNfPQ== electron@^1.8.7: version "1.8.8" @@ -3100,12 +3140,12 @@ eslint@^6.5.1: v8-compile-cache "^2.0.3" espree@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/espree/-/espree-6.1.2.tgz#6c272650932b4f91c3714e5e7b5f5e2ecf47262d" - integrity sha512-2iUPuuPP+yW1PZaMSDM9eyVf8D5P0Hi8h83YtZ5bPc/zHYjII5khoixIUTMO794NOY8F/ThF1Bo8ncZILarUTA== + version "6.2.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-6.2.0.tgz#349fef01a202bbab047748300deb37fa44da79d7" + integrity sha512-Xs8airJ7RQolnDIbLtRutmfvSsAe0xqMMAantCN/GMoqf81TFbeI1T7Jpd56qYu1uuh32dOG5W/X9uO+ghPXzA== dependencies: acorn "^7.1.0" - acorn-jsx "^5.1.0" + acorn-jsx "^5.2.0" eslint-visitor-keys "^1.1.0" esprima@^4.0.0: @@ -3513,9 +3553,9 @@ flow-babel-webpack-plugin@^1.1.1: lodash.merge "^4.6.0" "flow-bin@>=0.44.2 <1": - version "0.119.1" - resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.119.1.tgz#b6d763b386ec9f1085848ca7df98909d80a16bd0" - integrity sha512-mX6qjJVi7aLqR9sDf8QIHt8yYEWQbkMLw7qFoC7sM/AbJwvqFm3pATPN96thsaL9o1rrshvxJpSgoj1PJSC3KA== + version "0.120.1" + resolved "https://registry.yarnpkg.com/flow-bin/-/flow-bin-0.120.1.tgz#ab051d6df71829b70a26a2c90bb81f9d43797cae" + integrity sha512-KgE+d+rKzdXzhweYVJty1QIOOZTTbtnXZf+4SLnmArLvmdfeLreQOZpeLbtq5h79m7HhDzX/HkUkoyu/fmSC2A== for-in@^1.0.2: version "1.0.2" @@ -3577,6 +3617,13 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3605,6 +3652,20 @@ fuse.js@3.4.5: resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.4.5.tgz#8954fb43f9729bd5dbcb8c08f251db552595a7a6" integrity sha512-s9PGTaQIkT69HaeoTVjwGsLfb8V8ScJLx5XGFcKHg0MqLUH/UZ4EKOtqtXX9k7AFqCGxD1aJmYb8Q5VYDibVRQ== +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3786,6 +3847,11 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3847,9 +3913,9 @@ home-path@^1.0.1: integrity sha512-tM1pVa+u3ZqQwIkXcWfhUlY3HWS3TsnKsfi2OHHvnhkX52s9etyktPyy1rQotkr0euWimChDq+QkQuDe8ngUlQ== hosted-git-info@^2.1.4: - version "2.8.6" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.6.tgz#3a6e6d0324c5371fc8c7ba7175e1e5d14578724d" - integrity sha512-Kp6rShEsCHhF5dD3EWKdkgVA8ix90oSUJ0VY4g9goxxa0+f4lx63muTftn0mlJ/+8IESGWyKnP//V2D7S4ZbIQ== + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== http-errors@~1.7.2: version "1.7.3" @@ -3880,13 +3946,20 @@ husky@^0.14.3: normalize-path "^1.0.0" strip-indent "^2.0.0" -iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" +ignore-walk@^3.0.1: + version "3.0.3" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" + integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== + dependencies: + minimatch "^3.0.4" + ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -3979,22 +4052,22 @@ inquirer@^3.0.6: through "^2.3.6" inquirer@^7.0.0: - version "7.0.4" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.4.tgz#99af5bde47153abca23f5c7fc30db247f39da703" - integrity sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ== + version "7.0.6" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.0.6.tgz#ee4ff0ea7ecda5324656fe665878790f66df7d0c" + integrity sha512-7SVO4h+QIdMq6XcqIqrNte3gS5MzCCKZdsq9DO4PJziBFNYzP3PGFbDjgadDb//MCahzgjCxvQ/O2wa7kx9o4w== dependencies: ansi-escapes "^4.2.1" - chalk "^2.4.2" + chalk "^3.0.0" cli-cursor "^3.1.0" cli-width "^2.0.0" external-editor "^3.0.3" figures "^3.0.0" lodash "^4.17.15" mute-stream "0.0.8" - run-async "^2.2.0" + run-async "^2.4.0" rxjs "^6.5.3" string-width "^4.1.0" - strip-ansi "^5.1.0" + strip-ansi "^6.0.0" through "^2.3.6" internal-slot@^1.0.2: @@ -5047,10 +5120,10 @@ metro-minify-uglify@^0.56.4: dependencies: uglify-es "^3.1.9" -metro-react-native-babel-preset@^0.56.4: - version "0.56.4" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.4.tgz#dcedc64b7ff5c0734839458e70eb0ebef6d063a8" - integrity sha512-CzbBDM9Rh6w8s1fq+ZqihAh7DDqUAcfo9pPww25+N/eJ7UK436Q7JdfxwdIPpBwLFn6o6MyYn+uwL9OEWBJarA== +metro-react-native-babel-preset@0.56.3: + version "0.56.3" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.3.tgz#5a1097c2f94e8ee0797a8ba2ab8f86d096f4c093" + integrity sha512-tGPzX2ZwI8vQ8SiNVBPUIgKqmaRNVB6rtJtHCBQZAYRiMbxh0NHCUoFfKBej6U5qVgxiYYHyN8oB23evG4/Oow== dependencies: "@babel/plugin-proposal-class-properties" "^7.0.0" "@babel/plugin-proposal-export-default-from" "^7.0.0" @@ -5088,10 +5161,10 @@ metro-react-native-babel-preset@^0.56.4: "@babel/template" "^7.0.0" react-refresh "^0.4.0" -metro-react-native-babel-preset@^0.58.0: - version "0.58.0" - resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.58.0.tgz#18f48d33fe124280ffabc000ab8b42c488d762a2" - integrity sha512-MRriNW+fF6jxABsgPphocUY6mIhmCm8idcrQZ58fT3Iti2vCdtkaK32TyCGUNUptzhUe2/cbE57j4aC+eaodAA== +metro-react-native-babel-preset@^0.56.4: + version "0.56.4" + resolved "https://registry.yarnpkg.com/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.56.4.tgz#dcedc64b7ff5c0734839458e70eb0ebef6d063a8" + integrity sha512-CzbBDM9Rh6w8s1fq+ZqihAh7DDqUAcfo9pPww25+N/eJ7UK436Q7JdfxwdIPpBwLFn6o6MyYn+uwL9OEWBJarA== dependencies: "@babel/plugin-proposal-class-properties" "^7.0.0" "@babel/plugin-proposal-export-default-from" "^7.0.0" @@ -5124,7 +5197,7 @@ metro-react-native-babel-preset@^0.58.0: "@babel/plugin-transform-spread" "^7.0.0" "@babel/plugin-transform-sticky-regex" "^7.0.0" "@babel/plugin-transform-template-literals" "^7.0.0" - "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-typescript" "^7.0.0" "@babel/plugin-transform-unicode-regex" "^7.0.0" "@babel/template" "^7.0.0" react-refresh "^0.4.0" @@ -5310,6 +5383,21 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + mitt@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.1.3.tgz#528c506238a05dce11cd914a741ea2cc332da9b8" @@ -5323,7 +5411,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.1, mkdirp@^0.5.1: +mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -5405,6 +5493,15 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= +needle@^2.2.1: + version "2.3.3" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" + integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -5456,6 +5553,30 @@ node-notifier@^5.2.1: shellwords "^0.1.1" which "^1.3.0" +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4.4.2" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -5478,6 +5599,27 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" +npm-bundled@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-packlist@^1.1.6: + version "1.4.8" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" + integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + npm-normalize-package-bin "^1.0.1" + npm-path@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" @@ -5501,6 +5643,16 @@ npm-which@^3.0.1: npm-path "^2.0.2" which "^1.2.10" +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + nugget@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0" @@ -5686,6 +5838,11 @@ ora@^3.4.0: strip-ansi "^5.2.0" wcwidth "^1.0.1" +os-homedir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" @@ -5709,6 +5866,14 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -6039,7 +6204,7 @@ pretty-format@^25.1.0: ansi-styles "^4.0.0" react-is "^16.12.0" -private@^0.1.6: +private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" integrity sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg== @@ -6121,9 +6286,9 @@ query-string@6.8.1: strict-uri-encode "^2.0.0" query-string@^6.11.0: - version "6.11.0" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.11.0.tgz#dc27a05733d1be66f16d0f83dfa957270f45f66d" - integrity sha512-jS+me8X3OEGFTsF6kF+vUUMFG/d3WUCvD7bHhfZP5784nOq1pjj8yau/u86nfOncmcN6ZkSWKWkKAvv/MGxzLA== + version "6.11.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.11.1.tgz#ab021f275d463ce1b61e88f0ce6988b3e8fe7c2c" + integrity sha512-1ZvJOUl8ifkkBxu2ByVM/8GijMIPx+cef7u3yroO3Ogm4DOdZcF5dcrWTIlSHe3Pg/mtlt6/eFjObDfJureZZA== dependencies: decode-uri-component "^0.2.0" split-on-first "^1.0.0" @@ -6134,7 +6299,7 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -rc@^1.0.1, rc@^1.1.2, rc@^1.1.6: +rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.2.7: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -6170,9 +6335,9 @@ react-devtools@^3.6.3: update-notifier "^2.1.0" react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.8.6: - version "16.12.0" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" - integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== + version "16.13.0" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527" + integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA== react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4: version "3.0.4" @@ -6180,9 +6345,9 @@ react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4: integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== react-native-camera@^3.15.0: - version "3.18.0" - resolved "https://registry.yarnpkg.com/react-native-camera/-/react-native-camera-3.18.0.tgz#aa046a86ea8a691f25fd579b8abcbda1503e13fa" - integrity sha512-rLjLKJDEnI0E0nN7ZfK3GKEP37cYURh6QV2DCI1BRs9FWcETwDcgVYtQSfFEibWcGazPtsAqVDTg5LUYMFPjCA== + version "3.19.0" + resolved "https://registry.yarnpkg.com/react-native-camera/-/react-native-camera-3.19.0.tgz#32c43908d3ba398c89d21437a9dba2ebb17f3896" + integrity sha512-ef3ccKUu5nYRvc2fXlnRDsrBPBygkXoMvk0c/mrgfLYgr4X0G/8Qg7t+MOAisQ0V6RastHVygpjgAW+dxcZnyA== dependencies: prop-types "^15.6.2" @@ -6277,9 +6442,9 @@ react-native-safe-area-view@^0.14.6, react-native-safe-area-view@^0.14.8: hoist-non-react-statics "^2.3.1" react-native-screens@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-2.0.0.tgz#ac9db593351474790f8daa5d85b5ea337b20cfb1" - integrity sha512-T1xxYajGuiaOXjqKWKfjw9LKwoGTn69WrYZcg0jB2ZlPE6o6QqlJWtR1ytqu/4fg8pHdsk5S1iPY06mqTylrYA== + version "2.2.0" + resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-2.2.0.tgz#cc4cdf17426fdda97ad93a5e812a1899390f1978" + integrity sha512-a0VzxOWot7F9B/GQyDSssBRd3jUJazFnTQS61IiyReWB6aHlFhf3Xz10jBRoURXy1EMCDCHgenmTVTkKHpKyqQ== dependencies: debounce "^1.2.0" @@ -6396,9 +6561,9 @@ react-navigation-stack@^1.10.3: prop-types "^15.7.2" react-navigation-tabs@^2.7.0: - version "2.8.1" - resolved "https://registry.yarnpkg.com/react-navigation-tabs/-/react-navigation-tabs-2.8.1.tgz#1c8202945e7f7e3fe9e6cbfcd9e203027658703d" - integrity sha512-hF9rotTe/wjJRj0HCIltYm38renbp18kUBi9VG3wF6/RR9pI8dcXNPdkpL7J3wQXyq+Zri3ltHbmEKtexnWWug== + version "2.8.2" + resolved "https://registry.yarnpkg.com/react-navigation-tabs/-/react-navigation-tabs-2.8.2.tgz#b49534a77a6b15fd7f681a33007e3fff7faf3f84" + integrity sha512-eLoLh2DetaXdrKkb4wR8e6+npi0E7UGn6iHmDKHdV5M6SFdsgz5CaEXW/tg+pgvGDb/8iG6syTUV1KrUtFCZ4Q== dependencies: hoist-non-react-statics "^3.3.2" react-lifecycles-compat "^3.0.4" @@ -6406,9 +6571,9 @@ react-navigation-tabs@^2.7.0: react-native-tab-view "^2.11.0" react-navigation@^4.0.10: - version "4.2.1" - resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-4.2.1.tgz#45565e0c9e3e9266b13df27762b59281f3b0135d" - integrity sha512-/SMeEyBkgIA+cNQ/oZJdK5UvboR1c9W/8J1E3ZNh9VWCRFHGImlURphcxvCzRWI7sClTuC5/xnHeT+UU6K7wrg== + version "4.2.2" + resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-4.2.2.tgz#8183f47c1b0c7c2350e970aa652c0fee4160ef9e" + integrity sha512-/CdQsDkUEJWyKKK68txvFUJDO79+MYFX6DYTVbQ23YtSw/GD5J5pQ/E08IJy8PJNYgnWP/OhiOYg2UpNoh96RQ== dependencies: "@react-navigation/core" "^3.6.1" "@react-navigation/native" "^3.7.3" @@ -6494,7 +6659,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.1, readable-stream@^2.2.2, readable-stream@~2.3.6: +readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -6593,6 +6758,11 @@ regenerator-runtime@^0.13.2: resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz#7cf6a77d8f5c6f60eb73c5fc1955b2ceb01e6bf5" integrity sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw== +regenerator-runtime@^0.13.4: + version "0.13.4" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.4.tgz#e96bf612a3362d12bb69f7e8f74ffeab25c7ac91" + integrity sha512-plpwicqEzfEyTQohIKktWigcLzmNStMGwbOUbykx51/29Z3JOGYldaaNGK7ngNXV+UcoqvIMmloZ48Sr74sd+g== + regenerator-transform@^0.10.0: version "0.10.1" resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" @@ -6602,12 +6772,13 @@ regenerator-transform@^0.10.0: babel-types "^6.19.0" private "^0.1.6" -regenerator-transform@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.1.tgz#3b2fce4e1ab7732c08f665dfdb314749c7ddd2fb" - integrity sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ== +regenerator-transform@^0.14.2: + version "0.14.2" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.14.2.tgz#949d9d87468ff88d5a7e4734ebb994a892de1ff2" + integrity sha512-V4+lGplCM/ikqi5/mkkpJ06e9Bujq1NFmNLvsCs56zg3ZbzrnUzAtizZ24TXxtRX/W2jcdScwQCnbL0CICTFkQ== dependencies: - private "^0.1.6" + "@babel/runtime" "^7.8.4" + private "^0.1.8" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -6808,7 +6979,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.2.8, rimraf@^2.5.4: +rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -6846,7 +7017,7 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== -run-async@^2.2.0: +run-async@^2.2.0, run-async@^2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.0.tgz#e59054a5b86876cfae07f431d18cbaddc594f1e8" integrity sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg== @@ -6916,7 +7087,7 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@^1.2.1: +sax@^1.2.1, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -6995,7 +7166,7 @@ serve-static@^1.13.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -7305,7 +7476,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -7506,6 +7677,19 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" +tar@^4.4.2: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + temp@0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" @@ -7633,9 +7817,9 @@ trim-newlines@^1.0.0: integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= tslib@^1.8.1, tslib@^1.9.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.0.tgz#f1f3528301621a53220d58373ae510ff747a66bc" - integrity sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg== + version "1.11.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.1.tgz#eb15d128827fbee2841549e171f45ed338ac7e35" + integrity sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA== tsutils@^3.7.0: version "3.17.1" @@ -7663,6 +7847,11 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + type-fest@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" @@ -7894,6 +8083,13 @@ which@^1.2.10, which@^1.2.9, which@^1.3.0: dependencies: isexe "^2.0.0" +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + widest-line@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" @@ -8045,6 +8241,11 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yallist@^3.0.0, yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" -- 2.43.4 From 0042b4ce438837ef24ef27e67005b65b772fd74a Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Fri, 6 Mar 2020 19:02:22 +0100 Subject: [PATCH 07/10] update lite mode handling --- package.json | 2 +- src/page/splash/index.js | 2 +- src/page/splash/view.js | 69 +++++++++---- yarn.lock | 210 ++------------------------------------- 4 files changed, 62 insertions(+), 221 deletions(-) diff --git a/package.json b/package.json index 0c3162f..a677410 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "@expo/vector-icons": "^8.1.0", "gfycat-style-urls": "^1.0.3", "lbry-redux": "lbryio/lbry-redux#9c48cce570ee8e057068c86cb6507e1b441841ee", - "lbryinc": "lbryio/lbryinc#0dc8829a319a708f45a855765f70a193ccb72676", + "lbryinc": "lbryio/lbryinc#1fc104c2d29d1d3975234c3606e848eaa28e1b6e", "lodash": ">=4.17.11", "merge": ">=1.2.1", "moment": "^2.22.1", diff --git a/src/page/splash/index.js b/src/page/splash/index.js index ebc5c89..bfa8aaf 100644 --- a/src/page/splash/index.js +++ b/src/page/splash/index.js @@ -2,6 +2,7 @@ import { connect } from 'react-redux'; import { SETTINGS, doBalanceSubscribe, doUpdateBlockHeight, doPopulateSharedUserState, doToast } from 'lbry-redux'; import { doAuthenticate, + doInstallNew, doInstallNewWithParams, doBlackListedOutpointsSubscribe, doFilteredOutpointsSubscribe, @@ -18,7 +19,6 @@ import { import { doSetClientSetting } from 'redux/actions/settings'; import { selectLastRouteInStack } from 'redux/selectors/drawer'; import SplashScreen from './view'; -import { doInstallNew } from 'lbryinc/src/redux/actions/user'; const select = state => ({ authIsPending: selectAuthenticationIsPending(state), diff --git a/src/page/splash/view.js b/src/page/splash/view.js index 834a580..ded3599 100644 --- a/src/page/splash/view.js +++ b/src/page/splash/view.js @@ -24,8 +24,10 @@ class SplashScreen extends React.PureComponent { state = { accountUnlockFailed: false, + appVersion: null, daemonReady: false, details: __('Starting up'), + firebaseToken: null, message: __('Connecting'), isRunning: false, isLagging: false, @@ -38,33 +40,46 @@ class SplashScreen extends React.PureComponent { liteModeParams: {}, }; - initLiteMode = () => {}; + initLiteMode = () => { + NativeModules.UtilityModule.getLbrynetDirectory().then(path => { + NativeModules.UtilityModule.getPlatform().then(platform => { + RNFS.readFile(`${path}/install_id`, 'utf8') + .then(installIdContent => { + // node_id is actually optional (won't be present if dht is disabled) + // RNFS.readFile(`${path}/node_id`, 'utf8').then(nodeIdContent => { + // TODO: Load proper lbrynetVersion value + this.setState( + { + liteModeParams: { + installationId: installIdContent, + nodeId: null, + lbrynetVersion: '0.62.0', + platform, + }, + }, + () => this.updateStatus(), + ); + // }).catch((err) => { console.log(err); console.log('node_id not found.'); this.lbryConnect() }); + }) + .catch(() => this.lbryConnect()); + }); + }); + }; updateStatus() { - const { authenticate, installNewWithParams } = this.props; - const { liteMode, liteModeParams } = this.state; - const { installationId, nodeId, lbrynetVersion, platform } = liteModeParams; + const { authenticate } = this.props; + const { liteMode } = this.state; if (liteMode) { // authenticate immediately NativeModules.VersionInfo.getAppVersion().then(appVersion => { - this.setState({ shouldAuthenticate: true }); + this.setState({ appVersion, shouldAuthenticate: true }); NativeModules.Firebase.getMessagingToken() .then(firebaseToken => { - authenticate(appVersion, Platform.OS, firebaseToken, false); - installNewWithParams( - appVersion, - installationId, - nodeId, - lbrynetVersion, - Platform.OS, - platform, - firebaseToken, - ); + this.setState({ firebaseToken }, () => authenticate(appVersion, Platform.OS, firebaseToken, false)); }) .catch(() => { authenticate(appVersion, Platform.OS, null, false); - installNewWithParams(appVersion, installationId, nodeId, lbrynetVersion, Platform.OS, platform, null); }); }); } else { @@ -105,14 +120,28 @@ class SplashScreen extends React.PureComponent { }; componentWillReceiveProps(nextProps) { - const { emailToVerify, getSync, setEmailToVerify, verifyUserEmail, verifyUserEmailFailure } = this.props; - const { daemonReady, shouldAuthenticate, liteMode } = this.state; + const { getSync, installNewWithParams } = this.props; + const { daemonReady, shouldAuthenticate, liteMode, liteModeParams, appVersion, firebaseToken } = this.state; const { user } = nextProps; if (liteMode && user && user.id) { this.navigateToLiteMode(); } else if (daemonReady && shouldAuthenticate && user && user.id) { this.setState({ shouldAuthenticate: false }, () => { + // call install new after successful authentication + if (liteMode) { + const { installationId, nodeId, lbrynetVersion, platform } = liteModeParams; + installNewWithParams( + appVersion, + installationId, + nodeId, + lbrynetVersion, + Platform.OS, + platform, + firebaseToken, + ); + } + // user is authenticated, navigate to the main view if (user.has_verified_email) { NativeModules.UtilityModule.getSecureValue(Constants.KEY_WALLET_PASSWORD).then(walletPassword => { @@ -311,13 +340,13 @@ class SplashScreen extends React.PureComponent { this.props.fetchRewardedContent(); Linking.getInitialURL().then(url => { + let liteMode; if (url) { - const liteMode = url.indexOf('liteMode=1') > -1; + liteMode = url.indexOf('liteMode=1') > -1; this.setState({ launchUrl: url, liteMode }); } NativeModules.UtilityModule.getNotificationLaunchTarget().then(target => { - let liteMode; if (target) { liteMode = target.indexOf('liteMode=1') > -1; this.setState({ launchUrl: target, liteMode }); diff --git a/yarn.lock b/yarn.lock index 6b43314..6651987 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1035,11 +1035,6 @@ lodash.unescape "4.0.1" semver "5.5.0" -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - abort-controller@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" @@ -1194,19 +1189,6 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -2257,11 +2239,6 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -chownr@^1.1.1: - version "1.1.4" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" - integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== - ci-info@^1.5.0: version "1.6.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-1.6.0.tgz#2ca20dbb9ceb32d4524a683303313f0304b1e497" @@ -2487,11 +2464,6 @@ connect@^3.6.5: parseurl "~1.3.3" utils-merge "1.0.1" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - contains-path@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" @@ -2616,7 +2588,7 @@ debug@2.6.9, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6. dependencies: ms "2.0.0" -debug@^3.1.0, debug@^3.2.6: +debug@^3.1.0: version "3.2.6" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== @@ -2701,11 +2673,6 @@ delayed-stream@~1.0.0: resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - denodeify@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/denodeify/-/denodeify-1.2.1.tgz#3a36287f5034e699e7577901052c2e6c94251631" @@ -2721,11 +2688,6 @@ destroy@~1.0.4: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" integrity sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA= -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - didyoumean@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/didyoumean/-/didyoumean-1.2.1.tgz#e92edfdada6537d484d73c0172fd1eba0c4976ff" @@ -3617,13 +3579,6 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -3652,20 +3607,6 @@ fuse.js@3.4.5: resolved "https://registry.yarnpkg.com/fuse.js/-/fuse.js-3.4.5.tgz#8954fb43f9729bd5dbcb8c08f251db552595a7a6" integrity sha512-s9PGTaQIkT69HaeoTVjwGsLfb8V8ScJLx5XGFcKHg0MqLUH/UZ4EKOtqtXX9k7AFqCGxD1aJmYb8Q5VYDibVRQ== -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - gensync@^1.0.0-beta.1: version "1.0.0-beta.1" resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" @@ -3847,11 +3788,6 @@ has-symbols@^1.0.0, has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -3946,20 +3882,13 @@ husky@^0.14.3: normalize-path "^1.0.0" strip-indent "^2.0.0" -iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: +iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" -ignore-walk@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.3.tgz#017e2447184bfeade7c238e4aefdd1e8f95b1e37" - integrity sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw== - dependencies: - minimatch "^3.0.4" - ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -4670,9 +4599,9 @@ lbry-redux@lbryio/lbry-redux#9c48cce570ee8e057068c86cb6507e1b441841ee: reselect "^3.0.0" uuid "^3.3.2" -lbryinc@lbryio/lbryinc#0dc8829a319a708f45a855765f70a193ccb72676: +lbryinc@lbryio/lbryinc#1fc104c2d29d1d3975234c3606e848eaa28e1b6e: version "0.0.1" - resolved "https://codeload.github.com/lbryio/lbryinc/tar.gz/0dc8829a319a708f45a855765f70a193ccb72676" + resolved "https://codeload.github.com/lbryio/lbryinc/tar.gz/1fc104c2d29d1d3975234c3606e848eaa28e1b6e" dependencies: reselect "^3.0.0" @@ -5383,21 +5312,6 @@ minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - mitt@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/mitt/-/mitt-1.1.3.tgz#528c506238a05dce11cd914a741ea2cc332da9b8" @@ -5411,7 +5325,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@0.5.1, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -5493,15 +5407,6 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -needle@^2.2.1: - version "2.3.3" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.3.3.tgz#a041ad1d04a871b0ebb666f40baaf1fb47867117" - integrity sha512-EkY0GeSq87rWp1hoq/sH/wnTWgFVhYlnIkbJ0YJFfRgEFlz2RraCjBpFQ+vrEgEdp0ThfyHADmkChEhcb7PKyw== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -5553,30 +5458,6 @@ node-notifier@^5.2.1: shellwords "^0.1.1" which "^1.3.0" -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -5599,27 +5480,6 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -npm-packlist@^1.1.6: - version "1.4.8" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.8.tgz#56ee6cc135b9f98ad3d51c1c95da22bbb9b2ef3e" - integrity sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A== - dependencies: - ignore-walk "^3.0.1" - npm-bundled "^1.0.1" - npm-normalize-package-bin "^1.0.1" - npm-path@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64" @@ -5643,16 +5503,6 @@ npm-which@^3.0.1: npm-path "^2.0.2" which "^1.2.10" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - nugget@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/nugget/-/nugget-2.0.1.tgz#201095a487e1ad36081b3432fa3cada4f8d071b0" @@ -5838,11 +5688,6 @@ ora@^3.4.0: strip-ansi "^5.2.0" wcwidth "^1.0.1" -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - os-locale@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" @@ -5866,14 +5711,6 @@ os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - p-defer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-defer/-/p-defer-1.0.0.tgz#9f6eb182f6c9aa8cd743004a7d4f96b196b0fb0c" @@ -6299,7 +6136,7 @@ range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -rc@^1.0.1, rc@^1.1.2, rc@^1.1.6, rc@^1.2.7: +rc@^1.0.1, rc@^1.1.2, rc@^1.1.6: version "1.2.8" resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== @@ -6659,7 +6496,7 @@ read-pkg@^2.0.0: normalize-package-data "^2.3.2" path-type "^2.0.0" -readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.2.2, readable-stream@~2.3.6: +readable-stream@^2.0.1, readable-stream@^2.2.2, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -6979,7 +6816,7 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -rimraf@^2.2.8, rimraf@^2.5.4, rimraf@^2.6.1: +rimraf@^2.2.8, rimraf@^2.5.4: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -7087,7 +6924,7 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -sax@^1.2.1, sax@^1.2.4: +sax@^1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== @@ -7166,7 +7003,7 @@ serve-static@^1.13.1: parseurl "~1.3.3" send "0.17.1" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -7476,7 +7313,7 @@ string-width@^1.0.1: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: +string-width@^2.0.0, string-width@^2.1.0, string-width@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== @@ -7677,19 +7514,6 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - temp@0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" @@ -8083,13 +7907,6 @@ which@^1.2.10, which@^1.2.9, which@^1.3.0: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - widest-line@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-2.0.1.tgz#7438764730ec7ef4381ce4df82fb98a53142a3fc" @@ -8241,11 +8058,6 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yargs-parser@^11.1.1: version "11.1.1" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-11.1.1.tgz#879a0865973bca9f6bab5cbdf3b1c67ec7d3bcf4" -- 2.43.4 From 729484880233dd9981fc7fe8e41d472d239676f1 Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Fri, 6 Mar 2020 19:08:19 +0100 Subject: [PATCH 08/10] show firebase token on About page --- android | 2 +- src/page/about/view.js | 25 ++++++++++++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/android b/android index 93c87a2..1a5c8b7 160000 --- a/android +++ b/android @@ -1 +1 @@ -Subproject commit 93c87a226bf095201762ea4f47dae3b164150ae1 +Subproject commit 1a5c8b7ba7d4f21c9258361aae216d3c6a3cb20d diff --git a/src/page/about/view.js b/src/page/about/view.js index 6616869..ce00c80 100644 --- a/src/page/about/view.js +++ b/src/page/about/view.js @@ -10,6 +10,7 @@ import aboutStyle from 'styles/about'; class AboutPage extends React.PureComponent { state = { appVersion: null, + firebaseToken: null, lbryId: null, versionInfo: null, }; @@ -45,11 +46,12 @@ class AboutPage extends React.PureComponent { setPlayerVisible(); NativeModules.Firebase.setCurrentScreen('About').then(result => { - if (NativeModules.VersionInfo) { - NativeModules.VersionInfo.getAppVersion().then(version => { - this.setState({ appVersion: version }); - }); - } + NativeModules.VersionInfo.getAppVersion().then(version => { + this.setState({ appVersion: version }); + }); + NativeModules.Firebase.getMessagingToken().then(firebaseToken => { + this.setState({ firebaseToken }); + }); Lbry.version().then(info => { this.setState({ versionInfo: info, @@ -77,7 +79,7 @@ class AboutPage extends React.PureComponent { {__('Content Freedom')} {__( - 'LBRY is a free, open, and community-run digital marketplace. It is a decentralized peer-to-peer content distribution platform for creators to upload and share content, and earn LBRY credits for their effort. Users will be able to find a wide selection of videos, music, ebooks and other digital content they are interested in.' + 'LBRY is a free, open, and community-run digital marketplace. It is a decentralized peer-to-peer content distribution platform for creators to upload and share content, and earn LBRY credits for their effort. Users will be able to find a wide selection of videos, music, ebooks and other digital content they are interested in.', )} @@ -88,7 +90,7 @@ class AboutPage extends React.PureComponent { {__('Get Social')} {__( - 'You can interact with the LBRY team and members of the community on Discord, Facebook, Instagram, Twitter or Reddit.' + 'You can interact with the LBRY team and members of the community on Discord, Facebook, Instagram, Twitter or Reddit.', )} @@ -164,6 +166,15 @@ class AboutPage extends React.PureComponent { + + + {__('Firebase Token')} + + {this.state.firebaseToken ? this.state.firebaseToken : loading} + + + + {__('Logs')} -- 2.43.4 From 40e2080c525cfb11a97d8d4152b37e26d6bfbc4a Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Mon, 9 Mar 2020 13:51:53 +0100 Subject: [PATCH 09/10] handle additional params for notifiication cold start --- package.json | 2 +- src/constants.js | 1 + src/page/liteFile/view.js | 194 +++++++++++++++++++---------------- src/page/splash/view.js | 5 +- src/redux/reducers/drawer.js | 9 +- src/utils/helper.js | 4 + yarn.lock | 4 +- 7 files changed, 122 insertions(+), 97 deletions(-) diff --git a/package.json b/package.json index a677410..6c4f879 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "base-64": "^0.1.0", "@expo/vector-icons": "^8.1.0", "gfycat-style-urls": "^1.0.3", - "lbry-redux": "lbryio/lbry-redux#9c48cce570ee8e057068c86cb6507e1b441841ee", + "lbry-redux": "lbryio/lbry-redux#f36b91496b3852e3d032b6d360b14d5fafbc07a9", "lbryinc": "lbryio/lbryinc#1fc104c2d29d1d3975234c3606e848eaa28e1b6e", "lodash": ">=4.17.11", "merge": ">=1.2.1", diff --git a/src/constants.js b/src/constants.js index 37aa7fb..bf019b5 100644 --- a/src/constants.js +++ b/src/constants.js @@ -93,6 +93,7 @@ const Constants = { DRAWER_ROUTE_CHANNEL_CREATOR: 'ChannelCreator', DRAWER_ROUTE_CHANNEL_CREATOR_FORM: 'ChannnelCreatorForm', DRAWER_ROUTE_INVITES: 'Invites', + DRAWER_ROUTE_LITE_FILE: 'LiteFile', FULL_ROUTE_NAME_DISCOVER: 'DiscoverStack', FULL_ROUTE_NAME_WALLET: 'WalletStack', diff --git a/src/page/liteFile/view.js b/src/page/liteFile/view.js index 8c60814..bf20c5c 100644 --- a/src/page/liteFile/view.js +++ b/src/page/liteFile/view.js @@ -1,5 +1,5 @@ import React from 'react'; -import { Lbry, formatCredits, normalizeURI, parseURI } from 'lbry-redux'; +import { Lbry, formatCredits, normalizeURI, parseURI, parseQueryParams } from 'lbry-redux'; import { Lbryio } from 'lbryinc'; import { ActivityIndicator, @@ -24,11 +24,10 @@ import Link from 'component/link'; import MediaPlayer from 'component/mediaPlayer'; import RelatedContent from 'component/relatedContent'; import filePageStyle from 'styles/filePage'; -import { formatLbryUrlForWeb, navigateToUri } from 'utils/helper'; -import uriBarStyle from 'styles/uriBar'; +import { decode, formatLbryUrlForWeb, navigateToUri } from 'utils/helper'; import Icon from 'react-native-vector-icons/FontAwesome5'; -import ProgressCircle from 'react-native-progress-circle'; -import Constants from "constants"; +import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api +import uriBarStyle from 'styles/uriBar'; // This page will only be used for playing audio / video content from a remote stream URL class LiteFilePage extends React.PureComponent { @@ -39,6 +38,9 @@ class LiteFilePage extends React.PureComponent { player = null; state = { + channelName: null, + channelUrl: null, + contentTitle: null, fullscreenMode: false, playerHeight: null, isLandscape: false, @@ -102,15 +104,33 @@ class LiteFilePage extends React.PureComponent { NativeModules.UtilityModule.shareUrl(shareUrl); }; - render() { - const { navigation, rewardedContentClaimIds, title } = this.props; - const { viewCount } = this.state; + componentDidUpdate() { + const { navigation } = this.props; const { uri } = navigation.state.params; + if (!this.state.contentTitle) { + const params = parseQueryParams(uri); + const { channelUrl, contentTitle } = params; + const channelName = channelUrl ? parseURI(decode(channelUrl)).claimName : null; + + this.setState({ + title: decode(contentTitle), + channelUrl, + channelName, + showRecommended: true, + }); + } + } + + render() { + const { navigation, rewardedContentClaimIds } = this.props; + const { channelName, channelUrl, title, viewCount } = this.state; + const { uri } = navigation.state.params; const { claimName, claimId } = parseURI(uri); const isRewardContent = rewardedContentClaimIds.includes(claimId); - const channelName = null; - const channelUri = null; + + const playerBgStyle = [filePageStyle.playerBackground, filePageStyle.containedPlayerBackground]; + const fsPlayerBgStyle = [filePageStyle.playerBackground, filePageStyle.fullscreenPlayerBackground]; const playerStyle = [ filePageStyle.player, @@ -123,12 +143,27 @@ class LiteFilePage extends React.PureComponent { return ( - {!this.state.fullscreenMode && } + {!this.state.fullscreenMode && } + + + { + this.playerBackground = ref; + }} + onLayout={evt => { + if (!this.state.playerBgHeight) { + this.setState({ playerBgHeight: evt.nativeEvent.layout.height }); + } + }} + /> + + {this.state.fullscreenMode && } { this.player = ref; @@ -144,89 +179,74 @@ class LiteFilePage extends React.PureComponent { } }} /> - - { - this.scrollView = ref; - }} - > - this.setState({ showDescription: !this.state.showDescription })} + { + this.scrollView = ref; + }} > - - - - {title} - - {isRewardContent && } - - - {viewCount === 1 && __('%view% view', { view: viewCount })} - {viewCount > 1 && __('%view% views', { view: viewCount })} - - - - - - this.handleSharePress(uri)}> - - {__('Share')} - - - this.setState({ showTipView: true })} + this.setState({ showDescription: !this.state.showDescription })} > - - {__('Tip')} - - - - - - {channelName && ( - { - navigateToUri( - navigation, - normalizeURI(channelUri), - null, - false, - null, - false, - ); - }} - /> - )} - {!channelName && ( - - {__('Anonymous')} + + + + {title} + + {isRewardContent && } + + + {viewCount === 1 && __('%view% view', { view: viewCount })} + {viewCount > 1 && __('%view% views', { view: viewCount })} - )} + + + + + this.handleSharePress(uri)}> + + {__('Share')} + + + this.setState({ showTipView: true })}> + + {__('Tip')} + - - + + + {channelName && ( + { + navigateToUri(navigation, normalizeURI(channelUrl), null, false, null, false); + }} + /> + )} + {!channelName && ( + + {__('Anonymous')} + + )} + + - {this.state.showRecommended && ( - - )} - + + + {this.state.showRecommended && ( + + )} + + ); } diff --git a/src/page/splash/view.js b/src/page/splash/view.js index ded3599..e5f9d28 100644 --- a/src/page/splash/view.js +++ b/src/page/splash/view.js @@ -160,12 +160,13 @@ class SplashScreen extends React.PureComponent { navigateToLiteMode = () => { const { navigation } = this.props; + const { launchUrl } = this.state; const resetAction = StackActions.reset({ index: 0, actions: [ NavigationActions.navigate({ - routeName: 'LiteFile', - params: { uri: this.state.launchUrl.replace(/liteMode=1/gi, '') }, + routeName: Constants.DRAWER_ROUTE_LITE_FILE, + params: { uri: launchUrl }, }), ], }); diff --git a/src/redux/reducers/drawer.js b/src/redux/reducers/drawer.js index 2525ece..6b5a8c5 100644 --- a/src/redux/reducers/drawer.js +++ b/src/redux/reducers/drawer.js @@ -45,15 +45,14 @@ reducers[Constants.ACTION_PUSH_DRAWER_STACK] = (state, action) => { if (routeName === Constants.DRAWER_ROUTE_SUBSCRIPTIONS && newStack.length === 1) { canPushStack = false; } + if (routeName === Constants.DRAWER_ROUTE_LITE_FILE) { + canPushStack = false; + } let lastRouteInStack; if (canPushStack) { newStack.push({ route: routeName, params }); - - // save the route (if it's not lite mode) - if (routeName.toLowerCase() !== 'litefile') { - lastRouteInStack = { route: routeName, params }; - } + lastRouteInStack = { route: routeName, params }; } return { diff --git a/src/utils/helper.js b/src/utils/helper.js index 38daa46..756826c 100644 --- a/src/utils/helper.js +++ b/src/utils/helper.js @@ -432,3 +432,7 @@ export function fetchReferralCode(successCallback, errorCallback) { } }); } + +export function decode(value) { + return decodeURIComponent(value).replace(/\+/g, ' '); +} diff --git a/yarn.lock b/yarn.lock index 6651987..c61e10c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4591,9 +4591,9 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" -lbry-redux@lbryio/lbry-redux#9c48cce570ee8e057068c86cb6507e1b441841ee: +lbry-redux@lbryio/lbry-redux#f36b91496b3852e3d032b6d360b14d5fafbc07a9: version "0.0.1" - resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/9c48cce570ee8e057068c86cb6507e1b441841ee" + resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/f36b91496b3852e3d032b6d360b14d5fafbc07a9" dependencies: proxy-polyfill "0.1.6" reselect "^3.0.0" -- 2.43.4 From 6116bd38091653899777e1030f381dff3f44ea5a Mon Sep 17 00:00:00 2001 From: Akinwale Ariwodola Date: Tue, 10 Mar 2020 22:06:29 +0100 Subject: [PATCH 10/10] handle opening urls in lite mode --- android | 2 +- package.json | 2 +- src/component/claimResultItem/view.js | 8 +++- src/component/relatedContent/index.js | 13 ++++--- src/component/relatedContent/view.js | 3 +- src/component/uriBar/view.js | 14 ++++--- src/page/liteFile/view.js | 56 +++++++++++++++++++++------ src/page/splash/view.js | 11 ++++-- yarn.lock | 4 +- 9 files changed, 81 insertions(+), 32 deletions(-) diff --git a/android b/android index 1a5c8b7..b7b6c05 160000 --- a/android +++ b/android @@ -1 +1 @@ -Subproject commit 1a5c8b7ba7d4f21c9258361aae216d3c6a3cb20d +Subproject commit b7b6c05bd3a61c1cec09a08f1b5c413a68597026 diff --git a/package.json b/package.json index 6c4f879..570c0e9 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "base-64": "^0.1.0", "@expo/vector-icons": "^8.1.0", "gfycat-style-urls": "^1.0.3", - "lbry-redux": "lbryio/lbry-redux#f36b91496b3852e3d032b6d360b14d5fafbc07a9", + "lbry-redux": "lbryio/lbry-redux#f6e99498d2bc5b3f07e1e2b6f668a1a48de35047", "lbryinc": "lbryio/lbryinc#1fc104c2d29d1d3975234c3606e848eaa28e1b6e", "lodash": ">=4.17.11", "merge": ">=1.2.1", diff --git a/src/component/claimResultItem/view.js b/src/component/claimResultItem/view.js index 576f323..c34a1fb 100644 --- a/src/component/claimResultItem/view.js +++ b/src/component/claimResultItem/view.js @@ -39,10 +39,14 @@ class ClaimResultItem extends React.PureComponent { } onPressHandler = () => { - const { autoplay, navigation, result, setPlayerVisible } = this.props; + const { autoplay, navigation, result, urlOpenHandler, setPlayerVisible } = this.props; const { claimId, name } = result; const url = normalizeURI(`${name}#${claimId}`); - navigateToUri(navigation, url, { autoplay }, false, url, setPlayerVisible); + if (urlOpenHandler) { + urlOpenHandler(url); + } else { + navigateToUri(navigation, url, { autoplay }, false, url, setPlayerVisible); + } }; render() { diff --git a/src/component/relatedContent/index.js b/src/component/relatedContent/index.js index bdd266f..f2fd0ac 100644 --- a/src/component/relatedContent/index.js +++ b/src/component/relatedContent/index.js @@ -15,7 +15,13 @@ const RESULT_SIZE = 16; const select = (state, props) => ({ claim: makeSelectClaimForUri(props.uri)(state), isSearching: selectIsSearching(state), - recommendedContent: makeSelectResolvedRecommendedContentForUri(props.uri, RESULT_SIZE)(state), + recommendedContent: makeSelectResolvedRecommendedContentForUri( + props.uri, + RESULT_SIZE, + props.claimId, + props.claimName, + props.title, + )(state), resolvingUris: selectResolvingUris(state), showNsfwContent: selectShowNsfw(state), }); @@ -26,7 +32,4 @@ const perform = dispatch => ({ dispatch(doResolvedSearch(query, RESULT_SIZE, undefined, true, { related_to: claimId }, nsfw)), }); -export default connect( - select, - perform, -)(RelatedContent); +export default connect(select, perform)(RelatedContent); diff --git a/src/component/relatedContent/view.js b/src/component/relatedContent/view.js index d98241c..1b20f9c 100644 --- a/src/component/relatedContent/view.js +++ b/src/component/relatedContent/view.js @@ -22,7 +22,7 @@ export default class RelatedContent extends React.PureComponent { } render() { - const { isSearching, recommendedContent, navigation, uri, fullUri } = this.props; + const { isSearching, recommendedContent, navigation, urlOpenHandler, uri, fullUri } = this.props; return ( @@ -33,6 +33,7 @@ export default class RelatedContent extends React.PureComponent { { const { navigation } = this.props; if (!navigation.openDrawer) { - Alert.alert(__('Switch to full mode'), - 'This will reload the app in full mode. Do you wish to continue?', + Alert.alert( + __('Stop watching?'), + 'The LBRY service is still loading stuff in the background. Would you like to continue?', [ { text: __('No') }, { @@ -196,16 +197,19 @@ class UriBar extends React.PureComponent { onPress: () => { const resetAction = StackActions.reset({ index: 0, - actions: [NavigationActions.navigate({ routeName: 'Splash' })], + actions: [ + NavigationActions.navigate({ routeName: 'Splash', params: { resetUrl: 'lbry://?subscriptions' } }), + ], }); navigation.dispatch(resetAction); }, }, - ]); + ], + ); } else { navigation.openDrawer(); } - } + }; render() { const { diff --git a/src/page/liteFile/view.js b/src/page/liteFile/view.js index bf20c5c..82cf610 100644 --- a/src/page/liteFile/view.js +++ b/src/page/liteFile/view.js @@ -28,6 +28,7 @@ import { decode, formatLbryUrlForWeb, navigateToUri } from 'utils/helper'; import Icon from 'react-native-vector-icons/FontAwesome5'; import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api import uriBarStyle from 'styles/uriBar'; +import { NavigationActions, StackActions } from 'react-navigation'; // This page will only be used for playing audio / video content from a remote stream URL class LiteFilePage extends React.PureComponent { @@ -40,10 +41,11 @@ class LiteFilePage extends React.PureComponent { state = { channelName: null, channelUrl: null, - contentTitle: null, + title: null, fullscreenMode: false, playerHeight: null, isLandscape: false, + sdkReady: false, // TODO: progressively enable features (e.g. tip) when sdk is ready showRecommended: false, viewCount: 0, }; @@ -104,11 +106,32 @@ class LiteFilePage extends React.PureComponent { NativeModules.UtilityModule.shareUrl(shareUrl); }; + handleOpenUrl = url => { + const { navigation } = this.props; + Alert.alert( + __('Stop watching?'), + 'The LBRY service is still loading stuff in the background. Would you like to continue?', + [ + { text: __('No') }, + { + text: __('Yes'), + onPress: () => { + const resetAction = StackActions.reset({ + index: 0, + actions: [NavigationActions.navigate({ routeName: 'Splash', params: { resetUrl: url } })], + }); + navigation.dispatch(resetAction); + }, + }, + ], + ); + }; + componentDidUpdate() { const { navigation } = this.props; const { uri } = navigation.state.params; - if (!this.state.contentTitle) { + if (!this.state.title) { const params = parseQueryParams(uri); const { channelUrl, contentTitle } = params; const channelName = channelUrl ? parseURI(decode(channelUrl)).claimName : null; @@ -124,7 +147,7 @@ class LiteFilePage extends React.PureComponent { render() { const { navigation, rewardedContentClaimIds } = this.props; - const { channelName, channelUrl, title, viewCount } = this.state; + const { channelName, channelUrl, title, sdkReady, viewCount } = this.state; const { uri } = navigation.state.params; const { claimName, claimId } = parseURI(uri); const isRewardContent = rewardedContentClaimIds.includes(claimId); @@ -212,10 +235,15 @@ class LiteFilePage extends React.PureComponent { {__('Share')} - this.setState({ showTipView: true })}> - - {__('Tip')} - + {sdkReady && ( + this.setState({ showTipView: true })} + > + + {__('Tip')} + + )} @@ -227,9 +255,7 @@ class LiteFilePage extends React.PureComponent { text={channelName} numberOfLines={1} ellipsizeMode={'tail'} - onPress={() => { - navigateToUri(navigation, normalizeURI(channelUrl), null, false, null, false); - }} + onPress={() => this.handleOpenUrl(channelUrl)} /> )} {!channelName && ( @@ -243,7 +269,15 @@ class LiteFilePage extends React.PureComponent { {this.state.showRecommended && ( - + )} diff --git a/src/page/splash/view.js b/src/page/splash/view.js index e5f9d28..98b2601 100644 --- a/src/page/splash/view.js +++ b/src/page/splash/view.js @@ -338,19 +338,22 @@ class SplashScreen extends React.PureComponent { componentDidMount() { NativeModules.Firebase.track('app_launch', null); NativeModules.Firebase.setCurrentScreen('Splash'); + const { navigation } = this.props; + const { resetUrl } = navigation.state.params; + const isResetUrlSet = !!resetUrl; this.props.fetchRewardedContent(); Linking.getInitialURL().then(url => { let liteMode; if (url) { - liteMode = url.indexOf('liteMode=1') > -1; - this.setState({ launchUrl: url, liteMode }); + liteMode = !isResetUrlSet && url.indexOf('liteMode=1') > -1; + this.setState({ launchUrl: resetUrl || url, liteMode }); } NativeModules.UtilityModule.getNotificationLaunchTarget().then(target => { if (target) { - liteMode = target.indexOf('liteMode=1') > -1; - this.setState({ launchUrl: target, liteMode }); + liteMode = !isResetUrlSet && target.indexOf('liteMode=1') > -1; + this.setState({ launchUrl: resetUrl || target, liteMode }); } // Only connect after checking initial launch url / notification launch target diff --git a/yarn.lock b/yarn.lock index c61e10c..0cc4999 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4591,9 +4591,9 @@ latest-version@^3.0.0: dependencies: package-json "^4.0.0" -lbry-redux@lbryio/lbry-redux#f36b91496b3852e3d032b6d360b14d5fafbc07a9: +lbry-redux@lbryio/lbry-redux#f6e99498d2bc5b3f07e1e2b6f668a1a48de35047: version "0.0.1" - resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/f36b91496b3852e3d032b6d360b14d5fafbc07a9" + resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/f6e99498d2bc5b3f07e1e2b6f668a1a48de35047" dependencies: proxy-polyfill "0.1.6" reselect "^3.0.0" -- 2.43.4