diff --git a/app/src/component/AppNavigator.js b/app/src/component/AppNavigator.js index e3185c0e..bac1441a 100644 --- a/app/src/component/AppNavigator.js +++ b/app/src/component/AppNavigator.js @@ -11,6 +11,7 @@ import SettingsPage from 'page/settings'; import SplashScreen from 'page/splash'; import SubscriptionsPage from 'page/subscriptions'; import TransactionHistoryPage from 'page/transactionHistory'; +import VerificationScreen from 'page/verification'; import WalletPage from 'page/wallet'; import SearchInput from 'component/searchInput'; import { @@ -212,10 +213,19 @@ const mainStackNavigator = new createStackNavigator({ }, Main: { screen: drawer + }, + Verification: { + screen: VerificationScreen, + navigationOptions: { + drawerLockMode: 'locked-closed' + } } }, { headerMode: 'none' }); + + + export const AppNavigator = mainStackNavigator; export const reactNavigationMiddleware = createReactNavigationReduxMiddleware( state => state.nav, diff --git a/app/src/component/dateTime/index.js b/app/src/component/dateTime/index.js index 3e1ad14a..fd771c83 100644 --- a/app/src/component/dateTime/index.js +++ b/app/src/component/dateTime/index.js @@ -1,9 +1,9 @@ import { connect } from 'react-redux'; -import { doFetchBlock, makeSelectBlockDate } from 'lbry-redux'; +import { makeSelectDateForUri } from 'lbry-redux'; import DateTime from './view'; const select = (state, props) => ({ - date: !props.date && props.block ? makeSelectBlockDate(props.block)(state) : props.date, + date: props.date || makeSelectDateForUri(props.uri)(state), }); const perform = dispatch => ({ diff --git a/app/src/component/fileItem/view.js b/app/src/component/fileItem/view.js index c4b60f9b..28085740 100644 --- a/app/src/component/fileItem/view.js +++ b/app/src/component/fileItem/view.js @@ -90,7 +90,7 @@ class FileItem extends React.PureComponent { { navigateToUri(navigation, normalizeURI(fullChannelUri)); }} />} - + } {obscureNsfw && navigation.navigate({ routeName: 'Settings', key: 'settingsPage' })} />} diff --git a/app/src/component/fileListItem/view.js b/app/src/component/fileListItem/view.js index 65f2c3eb..953a0b56 100644 --- a/app/src/component/fileListItem/view.js +++ b/app/src/component/fileListItem/view.js @@ -107,7 +107,7 @@ class FileListItem extends React.PureComponent { {fileInfo && {this.getStorageForFileInfo(fileInfo)}} - + {fileInfo && diff --git a/app/src/component/floatingWalletBalance/index.js b/app/src/component/floatingWalletBalance/index.js index 11cc3fb5..8282e503 100644 --- a/app/src/component/floatingWalletBalance/index.js +++ b/app/src/component/floatingWalletBalance/index.js @@ -1,11 +1,14 @@ import { connect } from 'react-redux'; -import { selectTotalBalance } from 'lbry-redux'; +import { makeSelectClientSetting } from 'redux/selectors/settings'; +import { selectBalance } from 'lbry-redux'; import { selectUnclaimedRewardValue } from 'lbryinc'; +import Constants from 'constants'; import FloatingWalletBalance from './view'; const select = state => ({ - balance: selectTotalBalance(state), + balance: selectBalance(state), unclaimedRewardAmount: selectUnclaimedRewardValue(state), + rewardsNotInterested: makeSelectClientSetting(Constants.SETTING_REWARDS_NOT_INTERESTED)(state), }); export default connect(select, null)(FloatingWalletBalance); diff --git a/app/src/component/floatingWalletBalance/view.js b/app/src/component/floatingWalletBalance/view.js index cb20b441..49a1e185 100644 --- a/app/src/component/floatingWalletBalance/view.js +++ b/app/src/component/floatingWalletBalance/view.js @@ -14,11 +14,11 @@ type Props = { class FloatingWalletBalance extends React.PureComponent { render() { - const { balance, navigation, unclaimedRewardAmount } = this.props; + const { balance, navigation, rewardsNotInterested, unclaimedRewardAmount } = this.props; return ( - {unclaimedRewardAmount > 0 && + {(!rewardsNotInterested && unclaimedRewardAmount > 0) && navigation && navigation.navigate({ routeName: 'Rewards' })} > diff --git a/app/src/component/rewardCard/view.js b/app/src/component/rewardCard/view.js index 4d96b099..10c14e00 100644 --- a/app/src/component/rewardCard/view.js +++ b/app/src/component/rewardCard/view.js @@ -72,16 +72,7 @@ class RewardCard extends React.PureComponent { } }}> - {!isPending && { - if (!claimed) { - this.onClaimPress(); - } - }}> - - } - {isPending && } + {reward.reward_title} @@ -92,6 +83,16 @@ class RewardCard extends React.PureComponent { error={'The transaction URL could not be opened'} />} + {!isPending && { + if (!claimed) { + this.onClaimPress(); + } + }}> + + } + {isPending && } {reward.reward_amount} LBC diff --git a/app/src/component/rewardEnrolment/index.js b/app/src/component/rewardEnrolment/index.js new file mode 100644 index 00000000..6a345c99 --- /dev/null +++ b/app/src/component/rewardEnrolment/index.js @@ -0,0 +1,19 @@ +import { connect } from 'react-redux'; +import { doToast } from 'lbry-redux'; +import { doSetClientSetting } from 'redux/actions/settings'; +import { doRewardList, selectUnclaimedRewardValue, selectFetchingRewards, selectUser } from 'lbryinc'; +import RewardEnrolment from './view'; + +const select = state => ({ + unclaimedRewardAmount: selectUnclaimedRewardValue(state), + fetching: selectFetchingRewards(state), + user: selectUser(state) +}); + +const perform = dispatch => ({ + fetchRewards: () => dispatch(doRewardList()), + notify: data => dispatch(doToast(data)), + setClientSetting: (key, value) => dispatch(doSetClientSetting(key, value)), +}); + +export default connect(select, perform)(RewardEnrolment); diff --git a/app/src/component/rewardEnrolment/view.js b/app/src/component/rewardEnrolment/view.js new file mode 100644 index 00000000..d04133d8 --- /dev/null +++ b/app/src/component/rewardEnrolment/view.js @@ -0,0 +1,53 @@ +import React from 'react'; +import { NativeModules, Text, TouchableOpacity, View } from 'react-native'; +import AsyncStorage from '@react-native-community/async-storage'; +import Button from 'component/button'; +import Constants from 'constants'; +import Link from 'component/link'; +import Colors from 'styles/colors'; +import Icon from 'react-native-vector-icons/FontAwesome5'; +import rewardStyle from 'styles/reward'; + +class RewardEnrolment extends React.Component { + componentDidMount() { + this.props.fetchRewards(); + } + + onNotInterestedPressed = () => { + const { navigation, setClientSetting } = this.props; + setClientSetting(Constants.SETTING_REWARDS_NOT_INTERESTED, true); + navigation.navigate({ routeName: 'DiscoverStack' }); + } + + onEnrollPressed = () => { + const { navigation } = this.props; + navigation.navigate({ routeName: 'Verification' }) + } + + render() { + const { fetching, navigation, unclaimedRewardAmount, user } = this.props; + + return ( + + + + + {unclaimedRewardAmount} unclaimed credits + + + + + LBRY credits allow you to purchase content, publish content, and influence the network. You can start earning credits by watching videos on LBRY. + + + + +