Remove the desktop Welcome Page

This commit is contained in:
infinite-persistence 2022-03-29 14:45:59 +08:00 committed by Thomas Zarebczan
parent 2fb0e00bc0
commit b40160a939
9 changed files with 2 additions and 246 deletions

View file

@ -687,17 +687,6 @@
"Find new channels to follow": "Find new channels to follow",
"%SITE_NAME% is more fun if you're following channels": "%SITE_NAME% is more fun if you're following channels",
"Saved zip archive to %outputPath%": "Saved zip archive to %outputPath%",
"Welcome": "Welcome",
"LBRY takes privacy and choice seriously. Just a few questions before you enter the land of content freedom.": "LBRY takes privacy and choice seriously. Just a few questions before you enter the land of content freedom.",
"Can this app send information about your usage to inform publishers and improve the software?": "Can this app send information about your usage to inform publishers and improve the software?",
"Yes, including with third-party analytics platforms": "Yes, including with third-party analytics platforms",
"Sending information to third parties (e.g. Google Analytics or Mixpanel) allows us to use detailed analytical reports to improve all aspects of LBRY.": "Sending information to third parties (e.g. Google Analytics or Mixpanel) allows us to use detailed analytical reports to improve all aspects of LBRY.",
"Yes, but only with Odysee, Inc.": "Yes, but only with Odysee, Inc.",
"Sharing information with Odysee, Inc. allows us to report to publishers how their content is doing, as well as track basic usage and performance. This is the minimum required to earn rewards from Odysee, Inc.": "Sharing information with Odysee, Inc. allows us to report to publishers how their content is doing, as well as track basic usage and performance. This is the minimum required to earn rewards from Odysee, Inc.",
"No information will be sent directly to Odysee, Inc. or third-parties about your usage. Note that as peer-to-peer software, your IP address and potentially other system information can be sent to other users, though this information is not stored permanently.": "No information will be sent directly to Odysee, Inc. or third-parties about your usage. Note that as peer-to-peer software, your IP address and potentially other system information can be sent to other users, though this information is not stored permanently.",
"Let's go": "Let's go",
"Do you agree to the %terms%?": "Do you agree to the %terms%?",
"While we respect the desire for maximally private usage, please note that choosing this option hurts the ability for creators to understand how their content is performing.": "While we respect the desire for maximally private usage, please note that choosing this option hurts the ability for creators to understand how their content is performing.",
"FINAL WARNING: This action is permanent and cannot be undone.": "FINAL WARNING: This action is permanent and cannot be undone.",
"This action is permanent and cannot be undone": "This action is permanent and cannot be undone",
"Email %help_link% or join our %chat_link% if you encounter any trouble verifying.": "Email %help_link% or join our %chat_link% if you encounter any trouble verifying.",
@ -733,7 +722,6 @@
"Are you sure? Type %name% to confirm that you wish to remove the channel.": "Are you sure? Type %name% to confirm that you wish to remove the channel.",
"This will permanently remove your channel. Content published under this channel will be orphaned.": "This will permanently remove your channel. Content published under this channel will be orphaned.",
"Are you sure you'd like to remove \"%title%\"?": "Are you sure you'd like to remove \"%title%\"?",
"You are signed into odysee.com which automatically shares data with LBRY inc. %signout_button%.": "You are signed into odysee.com which automatically shares data with LBRY inc. %signout_button%.",
"%SITE_NAME% works better if you find and follow a couple creators you like. You can also block channels you never want to see.": "%SITE_NAME% works better if you find and follow a couple creators you like. You can also block channels you never want to see.",
"Nice! You are currently following %followingCount% creator": "Nice! You are currently following %followingCount% creator",
"Nice! You are currently following %followingCount% creators": "Nice! You are currently following %followingCount% creators",
@ -1046,10 +1034,6 @@
"Buy/Swap Credits": "Buy/Swap Credits",
"Earn Rewards": "Earn Rewards",
"This file may have been streamed, moved or deleted": "This file may have been streamed, moved or deleted",
"LBRY takes privacy and choice seriously. Just a few questions before you enter the land of content freedom. ": "LBRY takes privacy and choice seriously. Just a few questions before you enter the land of content freedom. ",
"Sending information to third parties (e.g. Google Analytics or Mixpanel) allows us to use detailed\n analytical reports to improve all aspects of LBRY.": "Sending information to third parties (e.g. Google Analytics or Mixpanel) allows us to use detailed\n analytical reports to improve all aspects of LBRY.",
"Sharing information with LBRY, Inc. allows us to report to publishers how their content is doing, as\n well as track basic usage and performance. This is the minimum required to earn rewards from LBRY, Inc.": "Sharing information with LBRY, Inc. allows us to report to publishers how their content is doing, as\n well as track basic usage and performance. This is the minimum required to earn rewards from LBRY, Inc.",
"No information will be sent directly to LBRY, Inc. or third-parties about your usage. Note that as\n peer-to-peer software, your IP address and potentially other system information can be sent to other\n users, though this information is not stored permanently.": "No information will be sent directly to LBRY, Inc. or third-parties about your usage. Note that as\n peer-to-peer software, your IP address and potentially other system information can be sent to other\n users, though this information is not stored permanently.",
"%view_count% Views": "%view_count% Views",
"Tap to unmute": "Tap to unmute",
"Retry": "Retry",

View file

@ -1,24 +0,0 @@
import { connect } from 'react-redux';
import { doSetDaemonSetting } from 'redux/actions/settings';
import { doSetWelcomeVersion, doToggle3PAnalytics, doSignOut } from 'redux/actions/app';
import * as DAEMON_SETTINGS from 'constants/daemon_settings';
import { WELCOME_VERSION } from 'config.js';
import { selectUserVerifiedEmail } from 'redux/selectors/user';
import { doAuthenticate } from 'redux/actions/user';
import { version as appVersion } from 'package.json';
import PrivacyAgreement from './view';
const select = (state) => ({
authenticated: selectUserVerifiedEmail(state),
});
const perform = (dispatch) => ({
setWelcomeVersion: (version) => dispatch(doSetWelcomeVersion(version || WELCOME_VERSION)),
setShareDataInternal: (share) => dispatch(doSetDaemonSetting(DAEMON_SETTINGS.SHARE_USAGE_DATA, share)),
setShareDataThirdParty: (share) => dispatch(doToggle3PAnalytics(share)),
signOut: () => dispatch(doSignOut()),
authenticateIfSharingData: () => dispatch(doAuthenticate(appVersion, true, undefined, undefined)),
});
export default connect(select, perform)(PrivacyAgreement);

View file

@ -1,180 +0,0 @@
// @flow
import React, { useState } from 'react';
import Button from 'component/button';
import I18nMessage from 'component/i18nMessage';
import { FormField } from 'component/common/form-components/form-field';
import { Form } from 'component/common/form-components/form';
import { withRouter } from 'react-router-dom';
// $FlowFixMe cannot resolve ...
import image from 'static/img/unlocklbry.svg';
import { WELCOME_VERSION } from 'config';
const FREE = 'free';
const LIMITED = 'limited';
const NONE = 'none';
type Props = {
setWelcomeVersion: (number) => void,
signOut: () => void,
setShareDataInternal: (boolean) => void,
setShareDataThirdParty: (boolean) => void,
history: { replace: (string) => void },
authenticated: boolean,
authenticateIfSharingData: () => void,
};
function PrivacyAgreement(props: Props) {
const {
setWelcomeVersion,
setShareDataInternal,
setShareDataThirdParty,
history,
authenticated,
signOut,
authenticateIfSharingData,
} = props;
const [share, setShare] = useState(undefined); // preload
const [agree, setAgree] = useState(false); // preload
function handleSubmit() {
if (share === FREE) {
setShareDataInternal(true);
setShareDataThirdParty(true);
} else if (share === LIMITED) {
setShareDataInternal(true);
setShareDataThirdParty(false);
} else {
setShareDataInternal(false);
setShareDataThirdParty(false);
}
if (share === FREE || share === LIMITED) {
authenticateIfSharingData();
}
setWelcomeVersion(WELCOME_VERSION);
history.replace(`/`);
}
return (
<section className="main--contained">
<div className={'columns'}>
<div>
<h1 className="section__title--large">{__('Welcome')}</h1>
<h3 className="section__subtitle">
{__(
`LBRY takes privacy and choice seriously. Just a few questions before you enter the land of content freedom.`
)}
</h3>
</div>
<div>
<img src={image} className="privacy-img" />
</div>
</div>
<hr />
<p className="section__body section__subtitle">
{__('Can this app send information about your usage to inform publishers and improve the software?')}
</p>
<Form onSubmit={handleSubmit} className="section__body">
<fieldset>
<FormField
name={'shareFreely'}
type="radio"
label={
<>
{__('Yes, including with third-party analytics platforms')} <span>😄</span>
</>
}
helper={__(`Sending information to third parties (e.g. Google Analytics or Mixpanel) allows us to use detailed
analytical reports to improve all aspects of LBRY.`)}
checked={share === FREE}
onChange={(e) => setShare(FREE)}
/>
<FormField
name={'shareWithLBRY'}
type="radio"
checked={share === LIMITED}
label={
<>
{__('Yes, but only with Odysee, Inc.')} <span>🙂</span>
</>
}
helper={__(
`Sharing information with Odysee, Inc. allows us to report to publishers how their content is doing, as
well as track basic usage and performance. This is the minimum required to earn rewards from Odysee, Inc.`
)}
onChange={(e) => setShare(LIMITED)}
/>
<FormField
disabled={authenticated}
name={'shareNot'}
type="radio"
checked={share === NONE}
label={
<>
{__('No')} <span>😢</span>
</>
}
helper={__(`No information will be sent directly to Odysee Inc. or third-parties about your usage. Note that as
peer-to-peer software, your IP address and potentially other system information can be sent to other
users, though this information is not stored permanently.`)}
onChange={(e) => setShare(NONE)}
/>
{authenticated && (
<div className="card--inline section--padded">
<p className="help--inline">
<I18nMessage
tokens={{
signout_button: <Button button="link" label={__('Sign Out')} onClick={signOut} />,
}}
>
You are signed into odysee.com which automatically shares data with LBRY inc. %signout_button%.
</I18nMessage>
</p>
</div>
)}
</fieldset>
<div className="section__body">
<p className="section__subtitle">
<I18nMessage
tokens={{
terms: <Button button="link" href="https://odysee.com/$/tos" label={__('Terms of Service')} />,
}}
>
Do you agree to the %terms%?
</I18nMessage>
</p>
<fieldset>
<FormField
name={'agreeButton'}
type="radio"
label={'Yes'}
checked={agree === true}
onChange={(e) => setAgree(e.target.checked)}
/>
<FormField
name={'disagreeButton'}
type="radio"
checked={agree === false}
label={__('No')}
onChange={(e) => setAgree(!e.target.checked)}
/>
</fieldset>
</div>
<div className={'card__actions'}>
<Button button="primary" label={__(`Let's go`)} disabled={!share || !agree} type="submit" />
</div>
{share === NONE && (
<p className="help">
{__(
'While we respect the desire for maximally private usage, please note that choosing this option hurts the ability for creators to understand how their content is performing.'
)}
</p>
)}
</Form>
</section>
);
}
export default withRouter(PrivacyAgreement);

View file

@ -1,6 +1,6 @@
import { connect } from 'react-redux';
import { selectUserVerifiedEmail } from 'redux/selectors/user';
import { selectHasNavigated, selectScrollStartingPosition, selectWelcomeVersion } from 'redux/selectors/app';
import { selectHasNavigated, selectScrollStartingPosition } from 'redux/selectors/app';
import { selectHomepageData, selectWildWestDisabled } from 'redux/selectors/settings';
import Router from './view';
import { normalizeURI } from 'util/lbryURI';
@ -32,7 +32,6 @@ const select = (state) => {
title: selectTitleForUri(state, uri),
currentScroll: selectScrollStartingPosition(state),
isAuthenticated: selectUserVerifiedEmail(state),
welcomeVersion: selectWelcomeVersion(state),
hasNavigated: selectHasNavigated(state),
hasUnclaimedRefereeReward: selectHasUnclaimedRefereeReward(state),
homepageData: selectHomepageData(state),

View file

@ -8,7 +8,7 @@ import { useIsLargeScreen } from 'effects/use-screensize';
import { lazyImport } from 'util/lazyImport';
import { LINKED_COMMENT_QUERY_PARAM } from 'constants/comment';
import { parseURI, isURIValid } from 'util/lbryURI';
import { SITE_TITLE, WELCOME_VERSION } from 'config';
import { SITE_TITLE } from 'config';
import LoadingBarOneOff from 'component/loadingBarOneOff';
import { GetLinksData } from 'util/buildHomepage';
import * as CS from 'constants/claim_search';
@ -105,7 +105,6 @@ const TagsFollowingManagePage = lazyImport(() =>
const TagsFollowingPage = lazyImport(() => import('page/tagsFollowing' /* webpackChunkName: "tagsFollowing" */));
const TopPage = lazyImport(() => import('page/top' /* webpackChunkName: "top" */));
const UpdatePasswordPage = lazyImport(() => import('page/passwordUpdate' /* webpackChunkName: "passwordUpdate" */));
const Welcome = lazyImport(() => import('page/welcome' /* webpackChunkName: "welcome" */));
const YoutubeSyncPage = lazyImport(() => import('page/youtubeSync' /* webpackChunkName: "youtubeSync" */));
// Tell the browser we are handling scroll restoration
@ -173,7 +172,6 @@ function AppRouter(props: Props) {
history,
uri,
title,
welcomeVersion,
hasNavigated,
setHasNavigated,
hasUnclaimedRefereeReward,
@ -279,9 +277,6 @@ function AppRouter(props: Props) {
return (
<React.Suspense fallback={<LoadingBarOneOff />}>
<Switch>
{/* @if TARGET='app' */}
{welcomeVersion < WELCOME_VERSION && <Route path="/*" component={Welcome} />}
{/* @endif */}
<Redirect
from={`/$/${PAGES.DEPRECATED__CHANNELS_FOLLOWING_MANAGE}`}
to={`/$/${PAGES.CHANNELS_FOLLOWING_DISCOVER}`}
@ -303,7 +298,6 @@ function AppRouter(props: Props) {
<Route path={`/$/${PAGES.AUTH_PASSWORD_SET}`} exact component={PasswordSetPage} />
<Route path={`/$/${PAGES.AUTH}`} exact component={SignUpPage} />
<Route path={`/$/${PAGES.AUTH}/*`} exact component={SignUpPage} />
<Route path={`/$/${PAGES.WELCOME}`} exact component={Welcome} />
<Route path={`/$/${PAGES.HELP}`} exact component={HelpPage} />
{/* @if TARGET='app' */}

View file

@ -66,7 +66,6 @@ export const PAGE_TITLE = {
[PAGES.UPLOADS]: 'Your uploads',
[PAGES.UPLOAD]: 'Upload',
[PAGES.WALLET]: 'Wallet',
[PAGES.WELCOME]: 'Welcome',
[PAGES.YOUTUBE_SYNC]: 'YouTube Sync',
[PAGES.YOUTUBE_TOS]: 'YouTube Sync Terms of Service',
};

View file

@ -70,7 +70,6 @@ exports.WALLET = 'wallet';
exports.CHANNELS = 'channels';
exports.EMBED = 'embed';
exports.TOP = 'top';
exports.WELCOME = 'welcome';
exports.CREATOR_DASHBOARD = 'dashboard';
exports.CHECKOUT = 'checkout';
exports.CODE_2257 = '2257';

View file

@ -1,3 +0,0 @@
import Welcome from './view';
export default Welcome;

View file

@ -1,12 +0,0 @@
// @flow
import React from 'react';
import PrivacyAgreement from 'component/privacyAgreement';
import Page from 'component/page';
export default function Welcome() {
return (
<Page noHeader noSideNavigation>
<PrivacyAgreement />
</Page>
);
}