From fbd9131b91b3db7d901bff2194dce6b7be3c86eb Mon Sep 17 00:00:00 2001
From: zeppi <jessopb@gmail.com>
Date: Tue, 28 Jun 2022 09:36:47 -0400
Subject: [PATCH] remove invite components

---
 ui/component/fileDescription/index.js |   2 -
 ui/component/fileDescription/view.jsx |   1 -
 ui/component/fileValues/index.js      |   2 -
 ui/component/fileValues/view.jsx      |   1 -
 ui/component/inviteList/index.js      |  14 --
 ui/component/inviteList/view.jsx      |  99 ------------
 ui/component/inviteNew/index.js       |  29 ----
 ui/component/inviteNew/view.jsx       | 154 ------------------
 ui/component/invited/index.js         |  30 ----
 ui/component/invited/view.jsx         | 225 --------------------------
 ui/component/settingAccount/view.jsx  |   2 -
 ui/redux/selectors/user.js            |   2 -
 12 files changed, 561 deletions(-)
 delete mode 100644 ui/component/inviteList/index.js
 delete mode 100644 ui/component/inviteList/view.jsx
 delete mode 100644 ui/component/inviteNew/index.js
 delete mode 100644 ui/component/inviteNew/view.jsx
 delete mode 100644 ui/component/invited/index.js
 delete mode 100644 ui/component/invited/view.jsx

diff --git a/ui/component/fileDescription/index.js b/ui/component/fileDescription/index.js
index d8a119c37..5d8cff218 100644
--- a/ui/component/fileDescription/index.js
+++ b/ui/component/fileDescription/index.js
@@ -7,7 +7,6 @@ import {
 } from 'redux/selectors/claims';
 import { makeSelectPendingAmountByUri } from 'redux/selectors/wallet';
 import { doOpenModal } from 'redux/actions/app';
-import { selectUser } from 'redux/selectors/user';
 import FileDescription from './view';
 
 const select = (state, props) => {
@@ -17,7 +16,6 @@ const select = (state, props) => {
     claim,
     claimIsMine: selectClaimIsMine(state, claim),
     metadata: makeSelectMetadataForUri(props.uri)(state),
-    user: selectUser(state),
     pendingAmount: makeSelectPendingAmountByUri(props.uri)(state),
     tags: makeSelectTagsForUri(props.uri)(state),
   };
diff --git a/ui/component/fileDescription/view.jsx b/ui/component/fileDescription/view.jsx
index 9d20526c7..ae8abb160 100644
--- a/ui/component/fileDescription/view.jsx
+++ b/ui/component/fileDescription/view.jsx
@@ -15,7 +15,6 @@ type Props = {
   uri: string,
   claim: StreamClaim,
   metadata: StreamMetadata,
-  user: ?any,
   tags: any,
   pendingAmount: number,
   doOpenModal: (id: string, {}) => void,
diff --git a/ui/component/fileValues/index.js b/ui/component/fileValues/index.js
index a3994d7c3..eb633a91f 100644
--- a/ui/component/fileValues/index.js
+++ b/ui/component/fileValues/index.js
@@ -7,7 +7,6 @@ import {
 } from 'redux/selectors/claims';
 import { makeSelectPendingAmountByUri } from 'redux/selectors/wallet';
 import { makeSelectFileInfoForUri } from 'redux/selectors/file_info';
-import { selectUser } from 'redux/selectors/user';
 import { doOpenModal } from 'redux/actions/app';
 
 import FileValues from './view';
@@ -20,7 +19,6 @@ const select = (state, props) => {
     contentType: makeSelectContentTypeForUri(props.uri)(state),
     fileInfo: makeSelectFileInfoForUri(props.uri)(state),
     metadata: makeSelectMetadataForUri(props.uri)(state),
-    user: selectUser(state),
     pendingAmount: makeSelectPendingAmountByUri(props.uri)(state),
     claimIsMine: selectClaimIsMine(state, claim),
   };
diff --git a/ui/component/fileValues/view.jsx b/ui/component/fileValues/view.jsx
index f425fc169..f230b5b80 100644
--- a/ui/component/fileValues/view.jsx
+++ b/ui/component/fileValues/view.jsx
@@ -15,7 +15,6 @@ type Props = {
   metadata: StreamMetadata,
   openFolder: (string) => void,
   contentType: string,
-  user: ?any,
   pendingAmount: string,
   openModal: (id: string, { uri: string }) => void,
   claimIsMine: boolean,
diff --git a/ui/component/inviteList/index.js b/ui/component/inviteList/index.js
deleted file mode 100644
index 253a8c266..000000000
--- a/ui/component/inviteList/index.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import { connect } from 'react-redux';
-import { selectReferralReward } from 'redux/selectors/rewards';
-import { selectUserInvitees, selectUserInviteStatusIsPending } from 'redux/selectors/user';
-import InviteList from './view';
-
-const select = state => ({
-  invitees: selectUserInvitees(state),
-  isPending: selectUserInviteStatusIsPending(state),
-  referralReward: selectReferralReward(state),
-});
-
-const perform = () => ({});
-
-export default connect(select, perform)(InviteList);
diff --git a/ui/component/inviteList/view.jsx b/ui/component/inviteList/view.jsx
deleted file mode 100644
index fecfa3599..000000000
--- a/ui/component/inviteList/view.jsx
+++ /dev/null
@@ -1,99 +0,0 @@
-// @flow
-import React from 'react';
-import RewardLink from 'component/rewardLink';
-import Icon from 'component/common/icon';
-import * as ICONS from 'constants/icons';
-import Card from 'component/common/card';
-import LbcMessage from 'component/common/lbc-message';
-
-type Props = {
-  invitees: ?Array<{
-    email: string,
-    invite_accepted: boolean,
-    invite_reward_claimed: boolean,
-    invite_reward_claimable: boolean,
-  }>,
-  referralReward: ?Reward,
-};
-
-class InviteList extends React.PureComponent<Props> {
-  render() {
-    const { invitees, referralReward } = this.props;
-
-    if (!invitees || !invitees.length) {
-      return null;
-    }
-
-    let rewardAmount = 0;
-    let rewardHelp = __(
-      "Woah, you have a lot of friends! You've claimed the maximum amount of invite rewards. Email %email% if you'd like to be whitelisted for more invites.",
-      { email: 'hello@lbry.com' }
-    );
-
-    if (referralReward) {
-      rewardAmount = referralReward.reward_amount;
-      rewardHelp = referralReward.reward_description;
-    }
-    const showClaimable = invitees.some(invite => invite.invite_reward_claimable && !invite.invite_reward_claimed);
-
-    return (
-      <Card
-        title={<div className="table__header-text">{__('Invite History')}</div>}
-        subtitle={
-          <div className="table__header-text">
-            <LbcMessage>{rewardHelp}</LbcMessage>
-          </div>
-        }
-        titleActions={
-          referralReward &&
-          showClaimable && (
-            <div className="card__actions--inline">
-              <RewardLink
-                button
-                label={__(`Claim Your %reward_amount% Credit Invite Reward`, { reward_amount: rewardAmount })}
-                claim_code={referralReward.claim_code}
-              />
-            </div>
-          )
-        }
-        isBodyList
-        body={
-          <div className="table__wrapper">
-            <table className="table section">
-              <thead>
-                <tr>
-                  <th>{__('Invitee Email')}</th>
-                  <th>{__('Invite Status')}</th>
-                  <th>{__('Reward')}</th>
-                </tr>
-              </thead>
-              <tbody>
-                {invitees.map(invitee => (
-                  <tr key={invitee.email}>
-                    <td>{invitee.email}</td>
-                    <td>
-                      <span>{invitee.invite_accepted ? __('Accepted') : __('Not Accepted')}</span>
-                    </td>
-                    <td>
-                      {invitee.invite_reward_claimed && (
-                        <React.Fragment>
-                          <span>{__('Claimed')}</span>
-                          <Icon icon={ICONS.COMPLETE} />
-                        </React.Fragment>
-                      )}
-
-                      {!invitee.invite_reward_claimed &&
-                        (invitee.invite_reward_claimable ? <span>{__('Claimable')}</span> : __('Unclaimable'))}
-                    </td>
-                  </tr>
-                ))}
-              </tbody>
-            </table>
-          </div>
-        }
-      />
-    );
-  }
-}
-
-export default InviteList;
diff --git a/ui/component/inviteNew/index.js b/ui/component/inviteNew/index.js
deleted file mode 100644
index c7cbc0ada..000000000
--- a/ui/component/inviteNew/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import { connect } from 'react-redux';
-import {
-  selectUserInvitesRemaining,
-  selectUserInviteNewIsPending,
-  selectUserInviteNewErrorMessage,
-  selectUserInviteReferralLink,
-  selectUserInviteReferralCode,
-} from 'redux/selectors/user';
-// import { doUserInviteNew } from 'redux/actions/user';
-import { selectMyChannelClaims, selectFetchingMyChannels } from 'redux/selectors/claims';
-import { doFetchChannelListMine } from 'redux/actions/claims';
-import InviteNew from './view';
-
-const select = (state) => ({
-  errorMessage: selectUserInviteNewErrorMessage(state),
-  invitesRemaining: selectUserInvitesRemaining(state),
-  referralLink: selectUserInviteReferralLink(state),
-  referralCode: selectUserInviteReferralCode(state),
-  isPending: selectUserInviteNewIsPending(state),
-  channels: selectMyChannelClaims(state),
-  fetchingChannels: selectFetchingMyChannels(state),
-});
-
-const perform = (dispatch) => ({
-  // inviteNew: (email) => dispatch(doUserInviteNew(email)),
-  fetchChannelListMine: () => dispatch(doFetchChannelListMine()),
-});
-
-export default connect(select, perform)(InviteNew);
diff --git a/ui/component/inviteNew/view.jsx b/ui/component/inviteNew/view.jsx
deleted file mode 100644
index 00944d830..000000000
--- a/ui/component/inviteNew/view.jsx
+++ /dev/null
@@ -1,154 +0,0 @@
-// @flow
-import { URL, SITE_NAME } from 'config';
-import React, { useEffect, useState } from 'react';
-import Button from 'component/button';
-import { Form, FormField } from 'component/common/form';
-import CopyableText from 'component/copyableText';
-import Card from 'component/common/card';
-import analytics from 'analytics';
-import I18nMessage from 'component/i18nMessage';
-import LbcSymbol from 'component/common/lbc-symbol';
-
-type Props = {
-  errorMessage: ?string,
-  inviteNew: (string) => void,
-  isPending: boolean,
-  referralLink: string,
-  referralCode: string,
-  channels: ?Array<ChannelClaim>,
-};
-
-function InviteNew(props: Props) {
-  const { inviteNew, errorMessage, isPending, referralCode = '', channels } = props;
-
-  // Email
-  const [email, setEmail] = useState('');
-  function handleSubmit() {
-    inviteNew(email);
-  }
-
-  function handleEmailChanged(event: any) {
-    setEmail(event.target.value);
-  }
-
-  // Referral link
-  const [referralSource, setReferralSource] = useState(referralCode);
-
-  const handleReferralChange = React.useCallback(
-    (code) => {
-      setReferralSource(code);
-      // TODO: keep track of this in an array?
-      const matchingChannel = channels && channels.find((ch) => ch.name === code);
-      if (matchingChannel) {
-        analytics.apiLogPublish(matchingChannel);
-      }
-    },
-    [setReferralSource]
-  );
-
-  const topChannel =
-    channels &&
-    channels.reduce((top, channel) => {
-      const topClaimCount = (top && top.meta && top.meta.claims_in_channel) || 0;
-      const currentClaimCount = (channel && channel.meta && channel.meta.claims_in_channel) || 0;
-      return topClaimCount >= currentClaimCount ? top : channel;
-    });
-  const referralString =
-    channels && channels.length && referralSource !== referralCode
-      ? lookupUrlByClaimName(referralSource, channels)
-      : referralSource;
-
-  const referral = `${URL}/$/invite/${referralString.replace('#', ':')}`;
-
-  useEffect(() => {
-    // set default channel
-    if (topChannel) {
-      handleReferralChange(topChannel.name);
-    }
-  }, [topChannel, handleReferralChange]);
-
-  function lookupUrlByClaimName(name, channels) {
-    const claim = channels.find((channel) => channel.name === name);
-    return claim && claim.canonical_url ? claim.canonical_url.replace('lbry://', '') : name;
-  }
-
-  return (
-    <div className={'columns'}>
-      <div className="column">
-        <Card
-          title={__('Invites')}
-          subtitle={
-            <I18nMessage tokens={{ SITE_NAME, lbc: <LbcSymbol /> }}>
-              Earn %lbc% for inviting subscribers, followers, fans, friends, etc. to join and follow you on %SITE_NAME%.
-              You can use invites just like affiliate links.
-            </I18nMessage>
-          }
-          actions={
-            <React.Fragment>
-              <CopyableText label={__('Your invite link')} copyable={referral} />
-              {channels && channels.length > 0 && (
-                <FormField
-                  type="select"
-                  label={__('Customize link')}
-                  value={referralSource}
-                  onChange={(e) => handleReferralChange(e.target.value)}
-                >
-                  {channels.map((channel) => (
-                    <option key={channel.claim_id} value={channel.name}>
-                      {channel.name}
-                    </option>
-                  ))}
-                  <option value={referralCode}>{referralCode}</option>
-                </FormField>
-              )}
-            </React.Fragment>
-          }
-        />
-      </div>
-      <div className="column">
-        <Card
-          title={__('Invite by email')}
-          subtitle={
-            <I18nMessage tokens={{ SITE_NAME, lbc: <LbcSymbol /> }}>
-              Invite someone you know by email and earn %lbc% when they join %SITE_NAME%.
-            </I18nMessage>
-          }
-          actions={
-            <React.Fragment>
-              <Form onSubmit={handleSubmit}>
-                <FormField
-                  type="text"
-                  label={__('Email')}
-                  placeholder="youremail@example.org"
-                  name="email"
-                  value={email}
-                  error={errorMessage}
-                  inputButton={
-                    <Button button="secondary" type="submit" label={__('Invite')} disabled={isPending || !email} />
-                  }
-                  onChange={(event) => {
-                    handleEmailChanged(event);
-                  }}
-                />
-                <p className="help">
-                  <I18nMessage
-                    tokens={{
-                      rewards_link: <Button button="link" navigate="/$/rewards" label={__('rewards')} />,
-                      referral_faq_link: (
-                        <Button button="link" label={__('FAQ')} href="https://lbry.com/faq/referrals" />
-                      ),
-                    }}
-                  >
-                    Read our %referral_faq_link% to learn more about rewards.
-                  </I18nMessage>
-                </p>
-              </Form>
-            </React.Fragment>
-          }
-        />
-      </div>
-    </div>
-  );
-}
-
-export default InviteNew;
diff --git a/ui/component/invited/index.js b/ui/component/invited/index.js
deleted file mode 100644
index d91178095..000000000
--- a/ui/component/invited/index.js
+++ /dev/null
@@ -1,30 +0,0 @@
-import { connect } from 'react-redux';
-import { withRouter } from 'react-router';
-import REWARDS from 'rewards';
-import { selectUser, selectSetReferrerPending, selectSetReferrerError } from 'redux/selectors/user';
-import { doClaimRewardType } from 'redux/actions/rewards';
-import { selectUnclaimedRewards } from 'redux/selectors/rewards';
-import { doUserSetReferrer } from 'redux/actions/user';
-import { selectIsSubscribedForUri } from 'redux/selectors/subscriptions';
-import { doChannelSubscribe } from 'redux/actions/subscriptions';
-import Invited from './view';
-
-const select = (state, props) => {
-  return {
-    user: selectUser(state),
-    referrerSetPending: selectSetReferrerPending(state),
-    referrerSetError: selectSetReferrerError(state),
-    rewards: selectUnclaimedRewards(state),
-    isSubscribed: selectIsSubscribedForUri(state, props.fullUri),
-    fullUri: props.fullUri,
-    referrer: props.referrer,
-  };
-};
-
-const perform = (dispatch) => ({
-  claimReward: () => dispatch(doClaimRewardType(REWARDS.TYPE_REFEREE)),
-  setReferrer: (referrer) => dispatch(doUserSetReferrer(referrer)),
-  channelSubscribe: (uri) => dispatch(doChannelSubscribe(uri)),
-});
-
-export default withRouter(connect(select, perform)(Invited));
diff --git a/ui/component/invited/view.jsx b/ui/component/invited/view.jsx
deleted file mode 100644
index 9c757e855..000000000
--- a/ui/component/invited/view.jsx
+++ /dev/null
@@ -1,225 +0,0 @@
-// @flow
-import { SITE_NAME } from 'config';
-import * as PAGES from 'constants/pages';
-import React, { useEffect } from 'react';
-import Button from 'component/button';
-import ClaimPreview from 'component/claimPreview';
-import Card from 'component/common/card';
-import { buildURI, parseURI } from 'util/lbryURI';
-import { ERRORS } from 'lbryinc';
-import REWARDS from 'rewards';
-import { formatLbryUrlForWeb } from 'util/url';
-import ChannelContent from 'component/channelContent';
-import I18nMessage from 'component/i18nMessage';
-
-type Props = {
-  user: any,
-  claimReward: () => void,
-  setReferrer: (string) => void,
-  referrerSetPending: boolean,
-  referrerSetError: string,
-  channelSubscribe: (sub: Subscription) => void,
-  history: { push: (string) => void },
-  rewards: Array<Reward>,
-  referrer: string,
-  fullUri: string,
-  isSubscribed: boolean,
-};
-
-function Invited(props: Props) {
-  const {
-    user,
-    claimReward,
-    setReferrer,
-    referrerSetPending,
-    referrerSetError,
-    channelSubscribe,
-    history,
-    rewards,
-    fullUri,
-    referrer,
-    isSubscribed,
-  } = props;
-
-  const refUri = referrer && 'lbry://' + referrer.replace(':', '#');
-  const {
-    isChannel: referrerIsChannel,
-    claimName: referrerChannelName,
-    channelClaimId: referrerChannelClaimId,
-  } = parseURI(refUri);
-  const channelUri =
-    referrerIsChannel &&
-    formatLbryUrlForWeb(buildURI({ channelName: referrerChannelName, channelClaimId: referrerChannelClaimId }));
-  const rewardsApproved = user && user.is_reward_approved;
-  const hasVerifiedEmail = user && user.has_verified_email;
-  const referredRewardAvailable = rewards && rewards.some((reward) => reward.reward_type === REWARDS.TYPE_REFEREE);
-  const redirect = channelUri || `/`;
-
-  // always follow if it's a channel
-  useEffect(() => {
-    if (fullUri && !isSubscribed && fullUri) {
-      let channelName;
-      try {
-        const { claimName } = parseURI(fullUri);
-        channelName = claimName;
-      } catch (e) {}
-      if (channelName) {
-        channelSubscribe({
-          channelName: channelName,
-          uri: fullUri,
-        });
-      }
-    }
-  }, [fullUri, isSubscribed, channelSubscribe]);
-
-  useEffect(() => {
-    if (!referrerSetPending && hasVerifiedEmail) {
-      claimReward();
-    }
-  }, [referrerSetPending, hasVerifiedEmail, claimReward]);
-
-  useEffect(() => {
-    if (referrer) {
-      setReferrer(referrer.replace(':', '#'));
-    }
-  }, [referrer, setReferrer]);
-
-  function handleDone() {
-    history.push(redirect);
-  }
-
-  if (referrerSetError === ERRORS.ALREADY_CLAIMED) {
-    return (
-      <Card
-        title={__(`Whoa`)}
-        subtitle={
-          referrerIsChannel
-            ? __(`You've already claimed your referrer, but we've followed this channel for you.`)
-            : __(`You've already claimed your referrer.`)
-        }
-        body={
-          referrerIsChannel && (
-            <div className="claim-preview--channel">
-              <ClaimPreview key={refUri} uri={refUri} actions={''} type={'small'} />
-            </div>
-          )
-        }
-        actions={
-          <div className="card__actions">
-            <Button button="primary" label={__('Done!')} onClick={handleDone} />
-          </div>
-        }
-      />
-    );
-  }
-
-  if (referrerSetError && referredRewardAvailable) {
-    return (
-      <Card
-        title={__(`Welcome!`)}
-        subtitle={__(
-          `Something went wrong with your invite link. You can set and claim your invite reward after signing in.`
-        )}
-        actions={
-          <>
-            <p className="error__text">{__('Not a valid invite')}</p>
-            <div className="card__actions">
-              <Button
-                button="primary"
-                label={hasVerifiedEmail ? __('Verify') : __('Create Account')}
-                navigate={`/$/${PAGES.AUTH}?redirect=/$/${PAGES.REWARDS}`}
-              />
-              <Button button="link" label={__('Explore')} onClick={handleDone} />
-            </div>
-          </>
-        }
-      />
-    );
-  }
-
-  if (!rewardsApproved) {
-    const signUpButton = (
-      <Button
-        button="link"
-        label={hasVerifiedEmail ? __(`Finish verification `) : __(`Create an account `)}
-        navigate={`/$/${PAGES.AUTH}?redirect=/$/${PAGES.INVITE}/${referrer}`}
-      />
-    );
-
-    return (
-      <Card
-        title={
-          referrerIsChannel
-            ? __('%channel_name% invites you to the party!', { channel_name: referrerChannelName })
-            : __(`You're invited!`)
-        }
-        subtitle={
-          <p>
-            {referrerIsChannel ? (
-              <I18nMessage
-                tokens={{
-                  channel_name: referrerChannelName,
-                  signup_link: signUpButton,
-                  SITE_NAME,
-                }}
-              >
-                %channel_name% is waiting for you on %SITE_NAME%. Create your account now.
-              </I18nMessage>
-            ) : (
-              <I18nMessage
-                tokens={{
-                  signup_link: signUpButton,
-                }}
-              >
-                Content freedom and a present are waiting for you. %signup_link% to claim it.
-              </I18nMessage>
-            )}
-          </p>
-        }
-        body={
-          referrerIsChannel && (
-            <div className="claim-preview--channel">
-              <div className="section">
-                <ClaimPreview key={refUri} uri={refUri} actions={''} type={'small'} />
-              </div>
-              <div className="section">
-                <ChannelContent uri={fullUri} defaultPageSize={3} defaultInfiniteScroll={false} />
-              </div>
-            </div>
-          )
-        }
-        actions={
-          <div className="section__actions">
-            <Button
-              button="primary"
-              label={hasVerifiedEmail ? __('Finish Account') : __('Create Account')}
-              navigate={`/$/${PAGES.AUTH}?redirect=/$/${PAGES.INVITE}/${referrer}`}
-            />
-            <Button button="link" label={__('Skip')} onClick={handleDone} />
-          </div>
-        }
-      />
-    );
-  }
-
-  return (
-    <Card
-      title={__(`Welcome!`)}
-      subtitle={referrerIsChannel ? __(`We've followed your invitee for you. Check them out!`) : __(`Congrats!`)}
-      body={
-        referrerIsChannel && (
-          <div className="claim-preview--channel">
-            <ClaimPreview key={refUri} uri={refUri} actions={''} type={'small'} />
-          </div>
-        )
-      }
-      actions={
-        <div className="section__actions">
-          <Button button="primary" label={__('Done')} onClick={handleDone} />
-        </div>
-      }
-    />
-  );
-}
-
-export default Invited;
diff --git a/ui/component/settingAccount/view.jsx b/ui/component/settingAccount/view.jsx
index d0d67224e..127da531c 100644
--- a/ui/component/settingAccount/view.jsx
+++ b/ui/component/settingAccount/view.jsx
@@ -53,9 +53,7 @@ export default function SettingAccount(props: Props) {
               </SettingsRow>
             )}
 
-            {/* @if TARGET='app' */}
             <SyncToggle disabled={walletEncrypted && !storedPassword && storedPassword !== ''} />
-            {/* @endif */}
 
             {hasChannels && (
               <SettingsRow title={__('Comments')} subtitle={__('View your past comments.')}>
diff --git a/ui/redux/selectors/user.js b/ui/redux/selectors/user.js
index 65d317ef7..26f6161ef 100644
--- a/ui/redux/selectors/user.js
+++ b/ui/redux/selectors/user.js
@@ -2,8 +2,6 @@ import { createSelector } from 'reselect';
 
 export const selectState = (state) => state.user || {};
 
-export const selectAuthenticationIsPending = createSelector(selectState, (state) => state.authenticationIsPending);
-
 export const selectUserIsPending = createSelector(selectState, (state) => state.userIsPending);
 
 export const selectUser = createSelector(selectState, (state) => state.user);