Compare commits

..

2 commits

Author SHA1 Message Date
Akinwale Ariwodola
ef4db34e72 rephrase text 2020-03-24 15:32:24 +01:00
Akinwale Ariwodola
30b2bee66d display lbry.tv sync custody message 2020-03-23 17:46:25 +01:00
37 changed files with 96 additions and 380 deletions

@ -1 +1 @@
Subproject commit ff30e7f6a4358fd997a9e6d9f75bfe6959eafcb6
Subproject commit cbc4a662e670941b1c82aa6846ac56923c30af2f

View file

@ -304,23 +304,5 @@
"This content cannot be viewed at this time. Please try again in a bit.": "This content cannot be viewed at this time. Please try again in a bit.",
"Download file": "Download file",
"Save %title% (%size%) to your device": "Save %title% (%size%) to your device",
"Save \"%title%\" (%size%) to your device": "Save \"%title%\" (%size%) to your device",
"Find Channels to follow": "Find Channels to follow",
"LBRY works better if you follow at least 5 creators you like. Sign in to show creators you follow if you already have an account.": "LBRY works better if you follow at least 5 creators you like. Sign in to show creators you follow if you already have an account.",
"%remaining% more...": "%remaining% more...",
"Did you know that you can earn free credits worth up to %amount%?": "Did you know that you can earn free credits worth up to %amount%?",
"SHOW ME": "SHOW ME",
"Convert credits to USD on Bittrex": "Convert credits to USD on Bittrex",
"You also have": "You also have",
"in tips": "in tips",
"Earn more tips by uploading cool videos": "Earn more tips by uploading cool videos",
"You staked": "You staked",
"in your publishes": "in your publishes",
"in your supports": "in your supports",
"Your wallet is not currently synced with lbry.tv. You are responsible for backing up your wallet.": "Your wallet is not currently synced with lbry.tv. You are responsible for backing up your wallet.",
"A backup of your wallet is synced with lbry.tv": "A backup of your wallet is synced with lbry.tv",
"What does this mean?": "What does this mean?",
"LBRY credits allow you to publish or purchase content.": "LBRY credits allow you to publish or purchase content.",
"You can obtain free credits worth %amount% after you provide an email address.": "You can obtain free credits worth %amount% after you provide an email address.",
"up to": "up to"
"Save \"%title%\" (%size%) to your device": "Save \"%title%\" (%size%) to your device"
}

View file

@ -16,7 +16,7 @@
"@expo/vector-icons": "^8.1.0",
"gfycat-style-urls": "^1.0.3",
"lbry-redux": "lbryio/lbry-redux#69ffd110dbf3633e5847f61f008751edec033017",
"lbryinc": "lbryio/lbryinc#667024ebb7cb207609273174ca422cee47469270",
"lbryinc": "lbryio/lbryinc#021ac75d9aa2db488cfff8e9be320402f038f955",
"lodash": ">=4.17.11",
"merge": ">=1.2.1",
"moment": "^2.22.1",

View file

@ -54,9 +54,7 @@ import {
} from 'lbry-redux';
import {
Lbryio,
rewards as REWARD_TYPES,
doBlackListedOutpointsSubscribe,
doClaimRewardType,
doFilteredOutpointsSubscribe,
doGetSync,
doUserCheckEmailVerified,
@ -374,28 +372,6 @@ class AppWithNavigationState extends React.Component {
);
};
checkNewAndroidReward = () => {
const { dispatch, doToast } = this.props;
const claimRewardCallback = err => {
if (err) {
// an error occurred, do not display anything
return;
}
// reward successfully claimed
NativeModules.UtilityModule.setNativeBooleanSetting(Constants.SETTING_NEW_ANDROID_REWARD_CLAIMED, true);
};
NativeModules.UtilityModule.getNativeBooleanSetting(Constants.SETTING_NEW_ANDROID_REWARD_CLAIMED, false).then(
rewardClaimed => {
if (!rewardClaimed) {
dispatch(
doClaimRewardType(REWARD_TYPES.TYPE_NEW_ANDROID, { notifyError: false, callback: claimRewardCallback }),
);
}
},
);
};
handleSdkReady = () => {
const { dispatch } = this.props;
dispatch(doSetSdkReady());
@ -422,8 +398,6 @@ class AppWithNavigationState extends React.Component {
}
});
});
this.checkNewAndroidReward();
};
handleAccountUnlockFailed() {

View file

@ -1,14 +1,12 @@
import { connect } from 'react-redux';
import { doToast, selectBalance, selectMyChannelClaims } from 'lbry-redux';
import { selectUnclaimedRewardValue, selectUser } from 'lbryinc';
import { doToast, selectMyChannelClaims } from 'lbry-redux';
import { selectUser } from 'lbryinc';
import { selectSdkReady } from 'redux/selectors/settings';
import DrawerContent from './view';
const select = state => ({
balance: selectBalance(state),
channels: selectMyChannelClaims(state),
sdkReady: selectSdkReady(state),
unclaimedRewardAmount: selectUnclaimedRewardValue(state),
user: selectUser(state),
});

View file

@ -6,8 +6,6 @@ import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
import Icon from 'react-native-vector-icons/FontAwesome5';
import channelIconStyle from 'styles/channelIcon';
import discoverStyle from 'styles/discover';
import { Lbryio } from 'lbryinc';
import { formatUsd } from 'utils/helper';
const groupedMenuItems = {
'Find content': [
@ -44,18 +42,6 @@ const routesRequiringSdkReady = [
];
class DrawerContent extends React.PureComponent {
state = {
usdExchangeRate: 0,
};
componentDidMount() {
Lbryio.getExchangeRates().then(rates => {
if (!isNaN(rates.LBC_USD)) {
this.setState({ usdExchangeRate: rates.LBC_USD });
}
});
}
getAvatarImageUrl = () => {
const { channels = [] } = this.props;
if (channels) {
@ -96,7 +82,7 @@ class DrawerContent extends React.PureComponent {
};
render() {
const { activeTintColor, balance, navigation, unclaimedRewardAmount, user, onItemPress } = this.props;
const { activeTintColor, navigation, user, onItemPress } = this.props;
const { state } = navigation;
const activeItemKey = state.routes[state.index] ? state.routes[state.index].key : null;
@ -203,15 +189,6 @@ class DrawerContent extends React.PureComponent {
</View>
<Text style={[discoverStyle.menuItem, focused ? discoverStyle.menuItemFocused : null]}>
{__(item.label)}
{item.label === 'Wallet' && this.state.usdExchangeRate > 0 && (
<Text> ({formatUsd(parseFloat(balance) * parseFloat(this.state.usdExchangeRate))})</Text>
)}
{item.label === 'Rewards' && this.state.usdExchangeRate > 0 && (
<Text>
{' '}
({formatUsd(parseFloat(unclaimedRewardAmount) * parseFloat(this.state.usdExchangeRate))})
</Text>
)}
</Text>
</TouchableOpacity>
);

View file

@ -70,9 +70,7 @@ class FileItem extends React.PureComponent {
const outpointsToHide = !blackListedOutpoints
? filteredOutpoints
: blackListedOutpoints.concat(filteredOutpoints);
shouldHide = outpointsToHide.some(
outpoint => outpoint && outpoint.txid === claim.txid && outpoint.nout === claim.nout,
);
shouldHide = outpointsToHide.some(outpoint => outpoint.txid === claim.txid && outpoint.nout === claim.nout);
}
if (shouldHide) {
// don't display blacklisted or filtered outpoints on the Your tags page

View file

@ -2,7 +2,7 @@ import { connect } from 'react-redux';
import { makeSelectClientSetting } from 'redux/selectors/settings';
import { selectBalance } from 'lbry-redux';
import { selectUnclaimedRewardValue } from 'lbryinc';
import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
import Constants from 'constants';
import FloatingWalletBalance from './view';
const select = state => ({
@ -11,4 +11,7 @@ const select = state => ({
rewardsNotInterested: makeSelectClientSetting(Constants.SETTING_REWARDS_NOT_INTERESTED)(state),
});
export default connect(select, null)(FloatingWalletBalance);
export default connect(
select,
null
)(FloatingWalletBalance);

View file

@ -17,7 +17,7 @@ export default class ModalRepostView extends React.PureComponent {
state = {
channelName: null,
creditsInputFocused: false,
depositAmount: '0.01',
depositAmount: '0.1',
repostName: null,
repostStarted: false,
showAdvanced: false,

View file

@ -1,11 +1,9 @@
import { connect } from 'react-redux';
import { doSendTip, doToast, selectBalance } from 'lbry-redux';
import { selectSdkReady } from 'redux/selectors/settings';
import ModalTipView from './view';
const select = state => ({
balance: selectBalance(state),
sdkReady: selectSdkReady(state),
});
const perform = dispatch => ({
@ -14,4 +12,7 @@ const perform = dispatch => ({
dispatch(doSendTip(amount, claimId, isSupport, successCallback, errorCallback)),
});
export default connect(select, perform)(ModalTipView);
export default connect(
select,
perform
)(ModalTipView);

View file

@ -18,18 +18,9 @@ export default class ModalTipView extends React.PureComponent {
};
handleSendTip = () => {
const { claim, balance, notify, onSendTipFailed, onSendTipSuccessful, sdkReady, sendTip } = this.props;
const { claim, balance, notify, onSendTipFailed, onSendTipSuccessful, sendTip } = this.props;
const { tipAmount } = this.state;
if (!sdkReady) {
notify({
message: __(
'The background service is still initializing. You can still explore and watch content during the initialization process.',
),
});
return;
}
if (tipAmount > balance) {
notify({
message: 'Insufficient credits',

View file

@ -1,11 +1,10 @@
// @flow
import React from 'react';
import { ActivityIndicator, Text, TouchableOpacity, View } from 'react-native';
import { formatUsd } from 'utils/helper';
import Colors from 'styles/colors';
import Colors from '../../styles/colors';
import Icon from 'react-native-vector-icons/FontAwesome5';
import Link from 'component/link';
import rewardStyle from 'styles/reward';
import Link from '../link';
import rewardStyle from '../../styles/reward';
type Props = {
canClaim: boolean,
@ -62,7 +61,7 @@ class RewardCard extends React.PureComponent<Props> {
if (reward) {
const claimed = !!reward.transaction_id;
if (!claimed && reward.reward_range && reward.reward_range.includes('-')) {
return reward.reward_range.split('-')[1];
return reward.reward_range.split('-')[0] + '+'; // ex: 5+
} else if (reward.reward_amount > 0) {
return reward.reward_amount;
}
@ -73,7 +72,7 @@ class RewardCard extends React.PureComponent<Props> {
};
render() {
const { canClaim, isPending, onClaimPress, reward, usdExchangeRate } = this.props;
const { canClaim, isPending, onClaimPress, reward } = this.props;
const claimed = !!reward.transaction_id;
return (
@ -118,16 +117,8 @@ class RewardCard extends React.PureComponent<Props> {
)}
</View>
<View style={rewardStyle.rightCol}>
{reward.reward_range && reward.reward_range.indexOf('-') > -1 && (
<Text style={rewardStyle.rightColHeader}>{__('up to')}</Text>
)}
<Text style={rewardStyle.rewardAmount}>{this.getDisplayAmount()}</Text>
<Text style={rewardStyle.rewardCurrency}>LBC</Text>
{usdExchangeRate > 0 && (
<Text style={rewardStyle.rewardUsd}>
&asymp;{formatUsd(parseFloat(this.getDisplayAmount()) * parseFloat(usdExchangeRate))}
</Text>
)}
</View>
</TouchableOpacity>
);

View file

@ -7,7 +7,6 @@ import Link from 'component/link';
import Colors from 'styles/colors';
import Icon from 'react-native-vector-icons/FontAwesome5';
import rewardStyle from 'styles/reward';
import { formatUsd } from '../../utils/helper';
class RewardEnrolment extends React.Component {
componentDidMount() {
@ -30,7 +29,7 @@ class RewardEnrolment extends React.Component {
};
render() {
const { unclaimedRewardAmount, usdExchangeRate } = this.props;
const { fetching, navigation, unclaimedRewardAmount, user } = this.props;
return (
<View style={rewardStyle.enrollContainer}>
@ -44,11 +43,9 @@ class RewardEnrolment extends React.Component {
<View style={rewardStyle.onboarding}>
<Text style={rewardStyle.enrollDescText}>
{__('LBRY credits allow you to publish or purchase content.')}
{__('LBRY credits allow you to purchase content, publish content, and influence the network.')}
{'\n\n'}
{__('You can obtain free credits worth %amount% after you provide an email address.', {
amount: formatUsd(parseFloat(unclaimedRewardAmount) * parseFloat(usdExchangeRate)),
})}
{__('You get credits for free for providing an email address and taking other basic actions.')}
{'\n\n'}
<Link style={rewardStyle.learnMoreLink} text={__('Learn more')} onPress={this.onLearnMorePressed} />.
</Text>

View file

@ -58,7 +58,7 @@ class SuggestedSubscriptionsGrid extends React.PureComponent {
const uris = claimSearchByQuery[claimSearchKey];
if (
lastPageReached[claimSearchKey] ||
(uris.length > 0 && uris.length < suggestedPageSize) || uris.length >= softLimit
((uris.length > 0 && uris.length < suggestedPageSize) || uris.length >= softLimit)
) {
return;
}
@ -81,7 +81,7 @@ class SuggestedSubscriptionsGrid extends React.PureComponent {
}
render() {
const { claimSearchByQuery, inModal, navigation } = this.props;
const { claimSearchByQuery, suggested, inModal, navigation } = this.props;
const options = this.buildClaimSearchOptions();
const claimSearchKey = createNormalizedClaimSearchKey(options);
const claimSearchUris = claimSearchByQuery[claimSearchKey];
@ -92,7 +92,7 @@ class SuggestedSubscriptionsGrid extends React.PureComponent {
maxToRenderPerBatch={48}
removeClippedSubviews
itemDimension={120}
spacing={1}
spacing={2}
items={claimSearchUris}
style={inModal ? subscriptionsStyle.modalScrollContainer : subscriptionsStyle.scrollContainer}
contentContainerStyle={

View file

@ -6,4 +6,7 @@ const select = state => ({
balance: selectBalance(state),
});
export default connect(select, null)(WalletBalance);
export default connect(
select,
null
)(WalletBalance);

View file

@ -1,9 +1,9 @@
// @flow
import React from 'react';
import { Image, Text, View } from 'react-native';
import { formatCredits } from 'lbry-redux';
import { Lbryio } from 'lbryinc';
import { formatUsd } from 'utils/helper';
import { Lbry, formatCredits } from 'lbry-redux';
import Address from 'component/address';
import Button from 'component/button';
import walletStyle from 'styles/wallet';
type Props = {
@ -11,18 +11,6 @@ type Props = {
};
class WalletBalance extends React.PureComponent<Props> {
state = {
usdExchangeRate: 0,
};
componentDidMount() {
Lbryio.getExchangeRates().then(rates => {
if (!isNaN(rates.LBC_USD)) {
this.setState({ usdExchangeRate: rates.LBC_USD });
}
});
}
render() {
const { balance } = this.props;
return (
@ -33,13 +21,6 @@ class WalletBalance extends React.PureComponent<Props> {
<Text style={walletStyle.balance}>
{(balance || balance === 0) && formatCredits(parseFloat(balance), 2) + ' LBC'}
</Text>
<Text style={walletStyle.usdBalance}>
{this.state.usdExchangeRate > 0 && (
<Text>
&asymp;{formatUsd(isNaN(balance) ? 0 : parseFloat(balance) * parseFloat(this.state.usdExchangeRate))}
</Text>
)}
</Text>
</View>
);
}

View file

@ -1,14 +1,14 @@
import { connect } from 'react-redux';
import { selectClaimsBalance, selectSupportsBalance, selectTipsBalance } from 'lbry-redux';
import { makeSelectClientSetting } from 'redux/selectors/settings';
import WalletBalanceExtra from './view';
import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
const select = state => ({
claimsBalance: selectClaimsBalance(state) || 0,
deviceWalletSynced: makeSelectClientSetting(Constants.SETTING_DEVICE_WALLET_SYNCED)(state),
supportsBalance: selectSupportsBalance(state) || 0,
tipsBalance: selectTipsBalance(state) || 0,
});
export default connect(select, null)(WalletBalanceExtra);
export default connect(
select,
null,
)(WalletBalanceExtra);

View file

@ -1,14 +1,13 @@
// @flow
import React from 'react';
import { Text, View } from 'react-native';
import { formatCredits } from 'lbry-redux';
import { Lbryio } from 'lbryinc';
import { formatUsd } from 'utils/helper';
import { Image, Text, View } from 'react-native';
import { Lbry, formatCredits } from 'lbry-redux';
import Address from 'component/address';
import Button from 'component/button';
import Colors from 'styles/colors';
import Icon from 'react-native-vector-icons/FontAwesome5';
import Link from 'component/link';
import walletStyle from 'styles/wallet';
import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
type Props = {
claimsBalance: number,
@ -17,37 +16,25 @@ type Props = {
};
class WalletBalanceExtra extends React.PureComponent<Props> {
state = {
usdExchangeRate: 0,
};
componentDidMount() {
Lbryio.getExchangeRates().then(rates => {
if (!isNaN(rates.LBC_USD)) {
this.setState({ usdExchangeRate: rates.LBC_USD });
}
});
}
render() {
const { claimsBalance, deviceWalletSynced, navigation, supportsBalance, tipsBalance } = this.props;
const { claimsBalance, deviceWalletSynced, supportsBalance, tipsBalance } = this.props;
return (
<View style={walletStyle.balanceExtra}>
<View style={walletStyle.usdInfoCard}>
<Text style={walletStyle.usdInfoText}>
You can convert your credits to USD and withdraw the converted amount using an exchange.{' '}
<Link
style={walletStyle.usdConvertFaqLink}
href={'https://lbry.com/faq/exchanges'}
text={__('Learn more')}
/>
.
<View style={walletStyle.syncDriverCustody}>
<Text style={walletStyle.syncInfoText}>
{deviceWalletSynced
? __('A backup of your wallet is synced with lbry.tv')
: __('Your wallet is not currently synced with lbry.tv. You are responsible for backing up your wallet.')}
</Text>
<Link
style={walletStyle.usdConvertLink}
href={'https://bittrex.com/Account/Register?referralCode=4M1-P30-BON'}
text={__('Convert credits to USD on Bittrex')}
text={__('What does this mean?')}
href={
deviceWalletSynced
? 'https://lbry.com/faq/account-sync'
: 'https://lbry.com/faq/how-to-backup-wallet#android'
}
style={walletStyle.syncInfoLink}
/>
</View>
@ -60,18 +47,7 @@ class WalletBalanceExtra extends React.PureComponent<Props> {
<Text style={walletStyle.walletExtraBalance}>{formatCredits(parseFloat(tipsBalance), 2)}</Text>
<Text style={walletStyle.walletExtraCurrency}>LBC</Text>
</View>
<Text style={walletStyle.usdWalletExtraBalance}>
&asymp;{formatUsd(parseFloat(tipsBalance) * parseFloat(this.state.usdExchangeRate))}
</Text>
<Text style={walletStyle.text}>{__('in tips')}</Text>
<Link
style={walletStyle.earnTipsLink}
onPress={() => {
navigation.navigate({ routeName: Constants.DRAWER_ROUTE_PUBLISH });
}}
text={__('Earn more tips by uploading cool videos')}
/>
</View>
<View style={walletStyle.walletExtraCol}>
@ -90,23 +66,6 @@ class WalletBalanceExtra extends React.PureComponent<Props> {
</View>
</View>
</View>
<View style={walletStyle.syncDriverCustody}>
<Text style={walletStyle.syncInfoText}>
{deviceWalletSynced
? __('A backup of your wallet is synced with lbry.tv')
: __('Your wallet is not currently synced with lbry.tv. You are responsible for backing up your wallet.')}
</Text>
<Link
text={__('What does this mean?')}
href={
deviceWalletSynced
? 'https://lbry.com/faq/account-sync'
: 'https://lbry.com/faq/how-to-backup-wallet#android'
}
style={walletStyle.syncInfoLink}
/>
</View>
</View>
);
}

View file

@ -45,7 +45,6 @@ const Constants = {
SETTING_REWARDS_NOT_INTERESTED: 'rewardsNotInterested',
SETTING_DEVICE_WALLET_SYNCED: 'deviceWalletSynced',
SETTING_DHT_ENABLED: 'dhtEnabled',
SETTING_NEW_ANDROID_REWARD_CLAIMED: 'newAndroidRewardClaimed',
ACTION_SDK_READY: 'SDK_READY',

View file

@ -47,7 +47,7 @@ export default class ChannelCreator extends React.PureComponent {
channelNameUserEdited: false,
newChannelTitle: '',
newChannelName: '',
newChannelBid: 0.01,
newChannelBid: 0.1,
addingChannel: false,
creatingChannel: false,
editChannelUrl: null,
@ -280,7 +280,7 @@ export default class ChannelCreator extends React.PureComponent {
handleCreateCancel = () => {
const { clearChannelFormState } = this.props;
clearChannelFormState(); // explicitly clear state on cancel?
this.setState({ showCreateChannel: false, newChannelName: '', newChannelBid: 0.01 });
this.setState({ showCreateChannel: false, newChannelName: '', newChannelBid: 0.1 });
};
handlePickerValueChange = (itemValue, itemIndex) => {
@ -589,7 +589,7 @@ export default class ChannelCreator extends React.PureComponent {
channelNameUserEdited: false,
newChannelTitle: '',
newChannelName: '',
newChannelBid: 0.01,
newChannelBid: 0.1,
addingChannel: false,
creatingChannel: false,
newChannelNameError: '',

View file

@ -820,16 +820,7 @@ class FilePage extends React.PureComponent {
};
onDownloadPressed = () => {
const { claim, notify, sdkReady, title } = this.props;
if (!sdkReady) {
notify({
message: __(
'The background service is still initializing. You can still explore and watch content during the initialization process.',
),
});
return;
}
const { claim, title } = this.props;
const fileSize = claim && claim.value && claim.value.source ? claim.value.source.size : 0;
Alert.alert(
__('Download file'),
@ -1029,6 +1020,7 @@ class FilePage extends React.PureComponent {
myClaimUris,
navigation,
position,
purchaseUri,
pushDrawerStack,
setPlayerVisible,
thumbnail,

View file

@ -38,19 +38,15 @@ class LiteFilePage extends React.PureComponent {
player = null;
startTime = null;
state = {
channelName: null,
channelUrl: null,
fileViewLogged: false,
title: null,
fullscreenMode: false,
playbackStarted: false,
playerHeight: null,
isLandscape: false,
sdkReady: false, // TODO: progressively enable features (e.g. tip) when sdk is ready
showRecommended: false,
title: null,
viewCount: 0,
};
@ -131,10 +127,6 @@ class LiteFilePage extends React.PureComponent {
);
};
componentDidMount() {
this.startTime = Date.now();
}
componentDidUpdate() {
const { navigation } = this.props;
const { uri } = navigation.state.params;

View file

@ -121,7 +121,7 @@ class PublishPage extends React.PureComponent {
// input data
hasEditedContentAddress: false,
bid: 0.01,
bid: 0.1,
description: null,
title: null,
language: 'en',

View file

@ -194,7 +194,7 @@ class PublishesPage extends React.PureComponent {
});
} else {
// TODO: when shortUrl is available for my claims, navigate to that URL instead
navigateToUri(navigation, claim.permanent_url);
navigateToUri(navigation, item);
}
}
}}

View file

@ -1,5 +1,5 @@
import React from 'react';
import { Lbryio } from 'lbryinc';
import { Lbry } from 'lbry-redux';
import { ActivityIndicator, NativeModules, ScrollView, Text, View } from 'react-native';
import Colors from 'styles/colors';
import Constants from 'constants'; // eslint-disable-line node/no-deprecated-api
@ -17,14 +17,13 @@ const FILTER_CLAIMED = 'claimed';
class RewardsPage extends React.PureComponent {
state = {
currentFilter: FILTER_AVAILABLE,
firstRewardClaimed: false,
isEmailVerified: false,
isIdentityVerified: false,
isRewardApproved: false,
revealVerification: true,
usdExchangeRate: 0,
verifyRequestStarted: false,
revealVerification: true,
firstRewardClaimed: false,
currentFilter: FILTER_AVAILABLE,
};
scrollView = null;
@ -49,12 +48,6 @@ class RewardsPage extends React.PureComponent {
setPlayerVisible();
NativeModules.Firebase.setCurrentScreen('Rewards');
Lbryio.getExchangeRates().then(rates => {
if (!isNaN(rates.LBC_USD)) {
this.setState({ usdExchangeRate: rates.LBC_USD });
}
});
fetchRewards();
this.setState({
@ -165,7 +158,6 @@ class RewardsPage extends React.PureComponent {
canClaim={!isNotEligible}
reward={reward}
reward_type={reward.reward_type}
usdExchangeRate={this.state.usdExchangeRate}
/>
))}
<CustomRewardCard canClaim={!isNotEligible} showVerification={this.showVerification} />
@ -219,9 +211,7 @@ class RewardsPage extends React.PureComponent {
return (
<View style={rewardStyle.container}>
<UriBar navigation={navigation} />
{(!this.state.isEmailVerified || !this.state.isRewardApproved) && (
<RewardEnrolment usdExchangeRate={this.state.usdExchangeRate} navigation={navigation} />
)}
{(!this.state.isEmailVerified || !this.state.isRewardApproved) && <RewardEnrolment navigation={navigation} />}
{this.state.isEmailVerified && this.state.isRewardApproved && (
<ScrollView

View file

@ -2,7 +2,6 @@ import { connect } from 'react-redux';
import { SETTINGS, doUpdateBlockHeight, doPopulateSharedUserState, doToast } from 'lbry-redux';
import {
doAuthenticate,
doClaimRewardType,
doInstallNewWithParams,
doFetchMySubscriptions,
doFetchRewardedContent,

View file

@ -159,7 +159,6 @@ class SplashScreen extends React.PureComponent {
this.getUserSettings();
});
});
this.navigateToMain();
return;
}

View file

@ -12,8 +12,6 @@ import {
selectViewMode,
selectFirstRunCompleted,
selectShowSuggestedSubs,
selectUnclaimedRewardValue,
selectUser,
} from 'lbryinc';
import { doToast, selectFetchingClaimSearch } from 'lbry-redux';
import { doPushDrawerStack, doSetPlayerVisible } from 'redux/actions/drawer';
@ -34,12 +32,9 @@ const select = state => ({
unreadSubscriptions: selectUnreadSubscriptions(state),
viewMode: selectViewMode(state),
firstRunCompleted: selectFirstRunCompleted(state),
rewardsNotInterested: makeSelectClientSetting(Constants.SETTING_REWARDS_NOT_INTERESTED)(state),
showSuggestedSubs: selectShowSuggestedSubs(state),
timeItem: selectTimeItem(state),
sdkReady: selectSdkReady(state),
unclaimedRewardAmount: selectUnclaimedRewardValue(state),
user: selectUser(state),
});
const perform = dispatch => ({

View file

@ -11,7 +11,7 @@ import {
View,
} from 'react-native';
import { buildURI, parseURI } from 'lbry-redux';
import { formatUsd, getOrderBy } from 'utils/helper';
import { getOrderBy } from 'utils/helper';
import AsyncStorage from '@react-native-community/async-storage';
import moment from 'moment';
import Button from 'component/button';
@ -31,21 +31,16 @@ import SuggestedSubscriptions from 'component/suggestedSubscriptions';
import SuggestedSubscriptionsGrid from 'component/suggestedSubscriptionsGrid';
import UriBar from 'component/uriBar';
import SdkLoadingStatus from 'component/sdkLoadingStatus';
import Snackbar from 'react-native-snackbar';
import { Lbryio } from 'lbryinc';
class SubscriptionsPage extends React.PureComponent {
state = {
currentSortByItem: Constants.CLAIM_SEARCH_SORT_BY_ITEMS[1], // should always default to sorting subscriptions by new
filteredChannels: [],
orderBy: ['release_time'],
showRewardsNag: true,
showingSuggestedSubs: false,
showSortPicker: false,
showTimePicker: false,
showModalSuggestedSubs: false,
usdExchangeRate: 0,
userEmailVerified: false,
orderBy: ['release_time'],
filteredChannels: [],
currentSortByItem: Constants.CLAIM_SEARCH_SORT_BY_ITEMS[1], // should always default to sorting subscriptions by new
};
didFocusListener;
@ -62,7 +57,15 @@ class SubscriptionsPage extends React.PureComponent {
}
onComponentFocused = () => {
const { currentRoute, doFetchMySubscriptions, pushDrawerStack, sdkReady, setPlayerVisible, user } = this.props;
const {
currentRoute,
doFetchMySubscriptions,
doFetchRecommendedSubscriptions,
doSetViewMode,
pushDrawerStack,
setPlayerVisible,
subscriptionsViewMode,
} = this.props;
if (currentRoute === Constants.DRAWER_ROUTE_SUBSCRIPTIONS) {
pushDrawerStack();
@ -70,17 +73,6 @@ class SubscriptionsPage extends React.PureComponent {
setPlayerVisible();
NativeModules.Firebase.setCurrentScreen('Subscriptions');
Lbryio.getExchangeRates().then(rates => {
if (!isNaN(rates.LBC_USD)) {
this.setState({ usdExchangeRate: rates.LBC_USD }, () => {
if (sdkReady && parseFloat(this.state.usdExchangeRate) > 0 && user && !user.is_reward_approved) {
this.showRewardsAvailable();
}
});
}
});
this.setState({ userEmailVerified: user && user.has_verified_email });
doFetchMySubscriptions();
};
@ -89,56 +81,15 @@ class SubscriptionsPage extends React.PureComponent {
}
componentWillReceiveProps(nextProps) {
const { currentRoute, user, sdkReady } = nextProps;
const { currentRoute: prevRoute, doFetchMySubscriptions } = this.props;
const { currentRoute } = nextProps;
const { currentRoute: prevRoute } = this.props;
if (Constants.DRAWER_ROUTE_SUBSCRIPTIONS === currentRoute && currentRoute !== prevRoute) {
this.onComponentFocused();
}
if (user && user.has_verified_email && !this.state.userEmailVerified) {
// user just signed in
this.setState({ showingSuggestedSubs: false, userEmailVerified: true }, () => {
doFetchMySubscriptions();
});
}
if (
sdkReady &&
parseFloat(this.state.usdExchangeRate) > 0 &&
this.state.showRewardsNag &&
user &&
!user.is_reward_approved
) {
this.showRewardsAvailable();
}
this.unsubscribeShortChannelUrls();
}
showRewardsAvailable = () => {
const { navigation, unclaimedRewardAmount, rewardsNotInterested } = this.props;
if (rewardsNotInterested) {
this.setState({ showRewardsNag: false });
return;
}
this.setState({ showRewardsNag: false }, () => {
Snackbar.show({
title: __('Did you know that you can earn free credits worth up to %amount%?', {
amount: formatUsd(parseFloat(this.state.usdExchangeRate) * parseFloat(unclaimedRewardAmount)),
}),
duration: Snackbar.LENGTH_LONG,
action: {
title: __('SHOW ME'),
color: Colors.LbryGreen,
onPress: () => {
navigation.navigate({ routeName: Constants.DRAWER_ROUTE_REWARDS });
},
},
});
});
};
handleSortByItemSelected = item => {
this.setState({ currentSortByItem: item, orderBy: getOrderBy(item), showSortPicker: false });
};

View file

@ -94,7 +94,7 @@ class WalletPage extends React.PureComponent {
>
{!rewardsNotInterested && (!balance || balance === 0) && <WalletRewardsDriver navigation={navigation} />}
<WalletBalance />
<WalletBalanceExtra navigation={navigation} />
<WalletBalanceExtra />
<WalletAddress />
<WalletSend />
<TransactionListRecent navigation={navigation} />

View file

@ -445,8 +445,8 @@ const publishStyle = StyleSheet.create({
},
publishesFooter: {
marginTop: 2,
marginLeft: 16,
marginRight: 16,
marginLeft: 8,
marginRight: 8,
},
publishesFooterButton: {
alignSelf: 'flex-start',

View file

@ -147,10 +147,6 @@ const rewardStyle = StyleSheet.create({
width: '18%',
alignItems: 'center',
},
rightColHeader: {
fontFamily: 'Inter-Regular',
fontSize: 12,
},
rewardAmount: {
fontFamily: 'Inter-Regular',
fontSize: 26,
@ -158,7 +154,6 @@ const rewardStyle = StyleSheet.create({
},
rewardCurrency: {
fontFamily: 'Inter-Regular',
fontSize: 12,
},
rewardTitle: {
fontFamily: 'Inter-Regular',
@ -327,12 +322,6 @@ const rewardStyle = StyleSheet.create({
activeFilterLink: {
fontFamily: 'Inter-SemiBold',
},
rewardUsd: {
fontFamily: 'Inter-Regular',
fontSize: 12,
color: Colors.DescriptionGrey,
marginTop: 6,
},
});
export default rewardStyle;

View file

@ -192,6 +192,8 @@ const subscriptionsStyle = StyleSheet.create({
suggestedItem: {
alignItems: 'center',
marginBottom: 16,
marginLeft: 16,
marginRight: 16,
height: 140,
},
suggestedItemThumbnailContainer: {
@ -207,8 +209,8 @@ const subscriptionsStyle = StyleSheet.create({
height: '100%',
},
suggestedItemDetails: {
marginLeft: 8,
marginRight: 8,
marginLeft: 16,
marginRight: 16,
alignItems: 'center',
},
suggestedItemSubscribe: {
@ -227,7 +229,7 @@ const subscriptionsStyle = StyleSheet.create({
suggestedItemTitle: {
fontFamily: 'Inter-Regular',
textAlign: 'center',
fontSize: 13,
fontSize: 14,
marginTop: 4,
marginBottom: 2,
},

View file

@ -23,7 +23,7 @@ const tagStyle = StyleSheet.create({
},
text: {
fontFamily: 'Inter-Regular',
fontSize: 12,
fontSize: 14,
marginRight: 8,
},
tagResultsList: {

View file

@ -137,13 +137,6 @@ const walletStyle = StyleSheet.create({
fontFamily: 'Inter-Bold',
fontSize: 36,
marginLeft: 16,
},
usdBalance: {
color: Colors.White,
fontFamily: 'Inter-Regular',
fontSize: 20,
marginLeft: 16,
marginTop: 2,
marginBottom: 16,
},
balanceFocus: {
@ -409,11 +402,6 @@ const walletStyle = StyleSheet.create({
fontFamily: 'Inter-SemiBold',
fontSize: 28,
},
usdWalletExtraBalance: {
fontFamily: 'Inter-Regular',
fontSize: 16,
color: Colors.DescriptionGrey,
},
balanceRow: {
flexDirection: 'row',
alignItems: 'center',
@ -436,34 +424,6 @@ const walletStyle = StyleSheet.create({
left: 0,
top: 0,
},
usdInfoCard: {
backgroundColor: Colors.White,
padding: 16,
borderBottomColor: Colors.VeryLightGrey,
borderBottomWidth: 1,
},
usdInfoText: {
fontFamily: 'Inter-Regular',
fontSize: 14,
marginBottom: 8,
},
usdConvertLink: {
fontFamily: 'Inter-Regular',
fontSize: 16,
color: Colors.LbryGreen,
},
usdConvertFaqLink: {
fontFamily: 'Inter-Regular',
fontSize: 14,
color: Colors.LbryGreen,
},
earnTipsLink: {
fontFamily: 'Inter-Regular',
fontSize: 14,
color: Colors.LbryGreen,
marginTop: 12,
marginRight: 16,
},
});
export default walletStyle;

View file

@ -436,10 +436,3 @@ export function fetchReferralCode(successCallback, errorCallback) {
export function decode(value) {
return decodeURIComponent(value).replace(/\+/g, ' ');
}
export function formatUsd(value) {
if (isNaN(parseFloat(value))) {
value = 0;
}
return '$' + parseFloat(value).toFixed(2);
}

View file

@ -4599,9 +4599,9 @@ lbry-redux@lbryio/lbry-redux#69ffd110dbf3633e5847f61f008751edec033017:
reselect "^3.0.0"
uuid "^3.3.2"
lbryinc@lbryio/lbryinc#667024ebb7cb207609273174ca422cee47469270:
lbryinc@lbryio/lbryinc#021ac75d9aa2db488cfff8e9be320402f038f955:
version "0.0.1"
resolved "https://codeload.github.com/lbryio/lbryinc/tar.gz/667024ebb7cb207609273174ca422cee47469270"
resolved "https://codeload.github.com/lbryio/lbryinc/tar.gz/021ac75d9aa2db488cfff8e9be320402f038f955"
dependencies:
reselect "^3.0.0"