lbry.tv account copy changes
This commit is contained in:
parent
486f15eba1
commit
da10296132
12 changed files with 84 additions and 43 deletions
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"linters": {
|
"linters": {
|
||||||
"src/**/*.{js,jsx,scss,json}": ["prettier --write", "git add"],
|
"ui/**/*.{js,jsx,scss,json}": ["prettier --write", "git add"],
|
||||||
"src/**/*.{js,jsx}": ["eslint", "flow focus-check --color always", "git add"]
|
"ui/**/*.{js,jsx}": ["eslint", "flow focus-check --color always", "git add"]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,6 +113,7 @@
|
||||||
"eslint-plugin-promise": "^4.0.1",
|
"eslint-plugin-promise": "^4.0.1",
|
||||||
"eslint-plugin-react": "^7.7.0",
|
"eslint-plugin-react": "^7.7.0",
|
||||||
"eslint-plugin-react-hooks": "^1.6.0",
|
"eslint-plugin-react-hooks": "^1.6.0",
|
||||||
|
"eslint-plugin-standard": "^4.0.1",
|
||||||
"file-loader": "^4.2.0",
|
"file-loader": "^4.2.0",
|
||||||
"flow-bin": "^0.97.0",
|
"flow-bin": "^0.97.0",
|
||||||
"flow-typed": "^2.3.0",
|
"flow-typed": "^2.3.0",
|
||||||
|
|
12
ui/component/rewardAuthIntro/index.js
Normal file
12
ui/component/rewardAuthIntro/index.js
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
import { connect } from 'react-redux';
|
||||||
|
import { selectUnclaimedRewardValue } from 'lbryinc';
|
||||||
|
import RewardAuthIntro from './view';
|
||||||
|
|
||||||
|
const select = state => ({
|
||||||
|
totalRewardValue: selectUnclaimedRewardValue(state),
|
||||||
|
});
|
||||||
|
|
||||||
|
export default connect(
|
||||||
|
select,
|
||||||
|
null
|
||||||
|
)(RewardAuthIntro);
|
35
ui/component/rewardAuthIntro/view.jsx
Normal file
35
ui/component/rewardAuthIntro/view.jsx
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
// @flow
|
||||||
|
import React from 'react';
|
||||||
|
import CreditAmount from 'component/common/credit-amount';
|
||||||
|
import Button from 'component/button';
|
||||||
|
import Card from 'component/common/card';
|
||||||
|
import I18nMessage from 'component/i18nMessage';
|
||||||
|
|
||||||
|
type Props = {
|
||||||
|
balance: number,
|
||||||
|
totalRewardValue: number,
|
||||||
|
};
|
||||||
|
|
||||||
|
function RewardAuthIntro(props: Props) {
|
||||||
|
const { totalRewardValue } = props;
|
||||||
|
const totalRewardRounded = Math.floor(totalRewardValue / 10) * 10;
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Card
|
||||||
|
title={__('Sign In to lbry.tv to Earn Rewards')}
|
||||||
|
subtitle={
|
||||||
|
<I18nMessage
|
||||||
|
tokens={{
|
||||||
|
credit_amount: <CreditAmount inheritStyle amount={totalRewardRounded} />,
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
A lbry.tv account allows you to earn more than %credit_amount% in rewards, backup your data, and get content
|
||||||
|
and security updates.
|
||||||
|
</I18nMessage>
|
||||||
|
}
|
||||||
|
actions={<Button button="primary" navigate="/$/rewards" label={__('Unlock Rewards')} />}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default RewardAuthIntro;
|
|
@ -35,10 +35,14 @@ function UserEmail(props: Props) {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Card
|
<Card
|
||||||
title={__('Email')}
|
title={__('lbry.tv Account')}
|
||||||
subtitle={__(
|
subtitle={
|
||||||
'This information is disclosed only to LBRY, Inc. and not to the LBRY network. It is only required to save account information and earn rewards.'
|
isVerified
|
||||||
)}
|
? undefined
|
||||||
|
: __(
|
||||||
|
'Creating a lbry.tv account will allow you to earn rewards, receive content and security updates, and optionally backup your data.'
|
||||||
|
)
|
||||||
|
}
|
||||||
actions={
|
actions={
|
||||||
isVerified ? (
|
isVerified ? (
|
||||||
<FormField
|
<FormField
|
||||||
|
@ -59,7 +63,7 @@ function UserEmail(props: Props) {
|
||||||
value={email || ''}
|
value={email || ''}
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
<Button button="primary" label={__('Add Email')} navigate={`/$/${PAGES.AUTH}`} />
|
<Button button="primary" label={__('Sign In')} navigate={`/$/${PAGES.AUTH}`} />
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
|
|
|
@ -29,8 +29,15 @@ function UserEmailNew(props: Props) {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<h1 className="section__title--large">{__('Sign In to LBRY')}</h1>
|
<h1 className="section__title--large">{__('Sign In to lbry.tv')}</h1>
|
||||||
<p className="section__subtitle">{__('Create a new account or sign in.')}</p>
|
<p className="section__subtitle">
|
||||||
|
{/* @if TARGET='web' */}
|
||||||
|
{__('Create a new account or sign in.')}
|
||||||
|
{/* @endif */}
|
||||||
|
{/* @if TARGET='app' */}
|
||||||
|
{__('An account with lbry.tv allows you to earn rewards and backup your data.')}
|
||||||
|
{/* @endif */}
|
||||||
|
</p>
|
||||||
<Form onSubmit={handleSubmit} className="section__body">
|
<Form onSubmit={handleSubmit} className="section__body">
|
||||||
<FormField
|
<FormField
|
||||||
autoFocus
|
autoFocus
|
||||||
|
@ -49,7 +56,7 @@ function UserEmailNew(props: Props) {
|
||||||
name="sync_checkbox"
|
name="sync_checkbox"
|
||||||
label={
|
label={
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
{__('Sync balance and preferences across devices.')}{' '}
|
{__('Backup your account and wallet data.')}{' '}
|
||||||
<Button button="link" href="https://lbry.com/faq/account-sync" label={__('Learn More')} />
|
<Button button="link" href="https://lbry.com/faq/account-sync" label={__('Learn More')} />
|
||||||
</React.Fragment>
|
</React.Fragment>
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,8 +4,7 @@ import PublishForm from 'component/publishForm';
|
||||||
import Page from 'component/page';
|
import Page from 'component/page';
|
||||||
import Yrbl from 'component/yrbl';
|
import Yrbl from 'component/yrbl';
|
||||||
import LbcSymbol from 'component/common/lbc-symbol';
|
import LbcSymbol from 'component/common/lbc-symbol';
|
||||||
import CreditAmount from 'component/common/credit-amount';
|
import RewardAuthIntro from 'component/rewardAuthIntro';
|
||||||
import Button from 'component/button';
|
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
balance: number,
|
balance: number,
|
||||||
|
@ -13,8 +12,7 @@ type Props = {
|
||||||
};
|
};
|
||||||
|
|
||||||
function PublishPage(props: Props) {
|
function PublishPage(props: Props) {
|
||||||
const { balance, totalRewardValue } = props;
|
const { balance } = props;
|
||||||
const totalRewardRounded = Math.floor(totalRewardValue / 10) * 10;
|
|
||||||
|
|
||||||
function scrollToTop() {
|
function scrollToTop() {
|
||||||
const mainContent = document.querySelector('main');
|
const mainContent = document.querySelector('main');
|
||||||
|
@ -50,17 +48,7 @@ function PublishPage(props: Props) {
|
||||||
</Fragment>
|
</Fragment>
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<section className="card card--section">
|
<RewardAuthIntro />
|
||||||
<h1 className="card__title">{__('LBRY Credits Required')}</h1>
|
|
||||||
<p className="card__subtitle">
|
|
||||||
{__(' There are a variety of ways to get credits, including more than')}{' '}
|
|
||||||
<CreditAmount inheritStyle amount={totalRewardRounded} />{' '}
|
|
||||||
{__('in free rewards for participating in the LBRY beta.')}
|
|
||||||
</p>
|
|
||||||
<div className="card__actions">
|
|
||||||
<Button button="link" navigate="/$/rewards" label={__('Checkout the rewards')} />
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</Fragment>
|
</Fragment>
|
||||||
)}
|
)}
|
||||||
<PublishForm scrollToTop={scrollToTop} disabled={balance === 0} />
|
<PublishForm scrollToTop={scrollToTop} disabled={balance === 0} />
|
||||||
|
|
|
@ -1,14 +1,13 @@
|
||||||
// @flow
|
// @flow
|
||||||
import * as PAGES from 'constants/pages';
|
|
||||||
import React, { PureComponent, Fragment } from 'react';
|
import React, { PureComponent, Fragment } from 'react';
|
||||||
import BusyIndicator from 'component/common/busy-indicator';
|
import BusyIndicator from 'component/common/busy-indicator';
|
||||||
import RewardListClaimed from 'component/rewardListClaimed';
|
import RewardListClaimed from 'component/rewardListClaimed';
|
||||||
import RewardTile from 'component/rewardTile';
|
import RewardTile from 'component/rewardTile';
|
||||||
import Button from 'component/button';
|
import Button from 'component/button';
|
||||||
import Page from 'component/page';
|
import Page from 'component/page';
|
||||||
import Card from 'component/common/card';
|
|
||||||
import classnames from 'classnames';
|
import classnames from 'classnames';
|
||||||
import { rewards as REWARD_TYPES } from 'lbryinc';
|
import { rewards as REWARD_TYPES } from 'lbryinc';
|
||||||
|
import RewardAuthIntro from 'component/rewardAuthIntro';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
doAuth: () => void,
|
doAuth: () => void,
|
||||||
|
@ -38,21 +37,7 @@ class RewardsPage extends PureComponent<Props> {
|
||||||
|
|
||||||
if (user && !user.is_reward_approved && rewardsEnabled) {
|
if (user && !user.is_reward_approved && rewardsEnabled) {
|
||||||
if (!user.primary_email || !user.has_verified_email || !user.is_identity_verified) {
|
if (!user.primary_email || !user.has_verified_email || !user.is_identity_verified) {
|
||||||
return (
|
return <RewardAuthIntro />;
|
||||||
<Card
|
|
||||||
title={__('Sign In To Unlock Rewards')}
|
|
||||||
subtitle={__(
|
|
||||||
'This is optional. You can continue to use this app without rewards, but LBC may be needed for some tasks.'
|
|
||||||
)}
|
|
||||||
actions={
|
|
||||||
<Button
|
|
||||||
navigate={`/$/${PAGES.AUTH}?redirect=/$/${PAGES.REWARDS}`}
|
|
||||||
button="primary"
|
|
||||||
label={__('Unlock Rewards')}
|
|
||||||
/>
|
|
||||||
}
|
|
||||||
/>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<section className="card card--section">
|
<section className="card card--section">
|
||||||
|
|
|
@ -57,6 +57,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.section__subtitle {
|
.section__subtitle {
|
||||||
|
font-size: var(--font-body);
|
||||||
color: $lbry-gray-5;
|
color: $lbry-gray-5;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,9 @@ h6 {
|
||||||
|
|
||||||
p {
|
p {
|
||||||
font-size: var(--font-body);
|
font-size: var(--font-body);
|
||||||
|
&:not(:last-child) {
|
||||||
|
margin-bottom: var(--spacing-small);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ul,
|
ul,
|
||||||
|
|
|
@ -4504,6 +4504,11 @@ eslint-plugin-react@^7.7.0:
|
||||||
prop-types "^15.7.2"
|
prop-types "^15.7.2"
|
||||||
resolve "^1.10.1"
|
resolve "^1.10.1"
|
||||||
|
|
||||||
|
eslint-plugin-standard@^4.0.1:
|
||||||
|
version "4.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/eslint-plugin-standard/-/eslint-plugin-standard-4.0.1.tgz#ff0519f7ffaff114f76d1bd7c3996eef0f6e20b4"
|
||||||
|
integrity sha512-v/KBnfyaOMPmZc/dmc6ozOdWqekGp7bBGq4jLAecEfPGmfKiWS4sA8sC0LqiV9w5qmXAtXVn4M3p1jSyhY85SQ==
|
||||||
|
|
||||||
eslint-scope@3.7.1:
|
eslint-scope@3.7.1:
|
||||||
version "3.7.1"
|
version "3.7.1"
|
||||||
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
|
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8"
|
||||||
|
|
Loading…
Add table
Reference in a new issue