feat: setup Danger #1289
34 changed files with 306 additions and 154 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -3,3 +3,4 @@
|
|||
/static/daemon/lbrynet*
|
||||
/static/locales
|
||||
yarn-error.log
|
||||
/build/daemon*
|
||||
|
|
|
@ -27,6 +27,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/).
|
|||
* Fix Description box on Publish (dark theme) ([#1356](https://github.com/lbryio/lbry-app/issues/#1356))
|
||||
|
||||
|
||||
## [0.21.3] - 2018-04-23
|
||||
|
||||
|
||||
### Added
|
||||
* Block blacklisted content ([#1361](https://github.com/lbryio/lbry-app/pull/1361))
|
||||
|
||||
|
||||
## [0.21.2] - 2018-03-22
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "LBRY",
|
||||
"version": "0.21.2",
|
||||
"version": "0.21.3",
|
||||
"description": "A browser for the LBRY network, a digital marketplace controlled by its users.",
|
||||
"keywords": [
|
||||
"lbry"
|
||||
|
@ -32,7 +32,8 @@
|
|||
"postrewrite": "yarnhook",
|
||||
"postinstall": "electron-builder install-app-deps && node build/downloadDaemon.js",
|
||||
"lint": "eslint 'src/**/*.{js,jsx}' --fix",
|
||||
"format": "prettier 'src/**/*.{js,jsx,scss,json}' --write"
|
||||
"format": "prettier 'src/**/*.{js,jsx,scss,json}' --write",
|
||||
"clean": "rm -r node_modules && yarn cache clean lbry-redux && yarn"
|
||||
},
|
||||
"dependencies": {
|
||||
"bluebird": "^3.5.1",
|
||||
|
|
|
@ -12,17 +12,18 @@ type Props = {
|
|||
label: ?string,
|
||||
errorMessage: ?string,
|
||||
reward: Reward,
|
||||
button: ?boolean,
|
||||
clearError: Reward => void,
|
||||
claimReward: Reward => void,
|
||||
};
|
||||
|
||||
const RewardLink = (props: Props) => {
|
||||
const { reward, claimReward, clearError, errorMessage, label, isPending } = props;
|
||||
const { reward, claimReward, clearError, errorMessage, label, isPending, button } = props;
|
||||
|
||||
return !reward ? null : (
|
||||
<div className="reward-link">
|
||||
<Button
|
||||
button="link"
|
||||
button={button ? 'primary' : 'link'}
|
||||
disabled={isPending}
|
||||
label={isPending ? __('Claiming...') : label || `${__('Get')} ${reward.reward_amount} LBC`}
|
||||
onClick={() => {
|
||||
|
|
|
@ -36,7 +36,7 @@ const RewardTile = (props: Props) => {
|
|||
<Icon icon={icons.CHECK} /> {__('Reward claimed.')}
|
||||
</span>
|
||||
) : (
|
||||
<RewardLink reward_type={reward.reward_type} />
|
||||
<RewardLink button reward_type={reward.reward_type} />
|
||||
))}
|
||||
</div>
|
||||
</section>
|
||||
|
|
|
@ -2,7 +2,6 @@
|
|||
import * as React from 'react';
|
||||
import Button from 'component/button';
|
||||
import classnames from 'classnames';
|
||||
import { CSSTransitionGroup } from 'react-transition-group';
|
||||
import * as icons from 'constants/icons';
|
||||
import * as NOTIFICATION_TYPES from 'constants/notification_types';
|
||||
|
||||
|
@ -20,11 +19,13 @@ type Props = {
|
|||
forward: any => void,
|
||||
isBackDisabled: boolean,
|
||||
isForwardDisabled: boolean,
|
||||
isHome: boolean,
|
||||
navLinks: {
|
||||
primary: Array<SideBarLink>,
|
||||
secondary: Array<SideBarLink>,
|
||||
},
|
||||
notifications: {
|
||||
type: string,
|
||||
},
|
||||
};
|
||||
|
||||
const SideBar = (props: Props) => {
|
||||
|
@ -100,33 +101,30 @@ const SideBar = (props: Props) => {
|
|||
>
|
||||
<Button navigate={path} label={label} icon={icon} />
|
||||
|
||||
{
|
||||
// The sublinks should be animated on open close
|
||||
// Removing it because the current implementation with CSSTransitionGroup
|
||||
// was really slow and looked pretty bad. Possible fix is upgrading to v2
|
||||
// Not sure if that has better performance
|
||||
}
|
||||
{!!subLinks.length &&
|
||||
active && (
|
||||
<CSSTransitionGroup
|
||||
transitionAppear
|
||||
transitionLeave
|
||||
transitionAppearTimeout={300}
|
||||
transitionEnterTimeout={300}
|
||||
transitionLeaveTimeout={300}
|
||||
transitionName="nav__sub"
|
||||
>
|
||||
<ul key="0" className="nav__sub-links">
|
||||
{subLinks.map(({ label: subLabel, path: subPath, active: subLinkActive }) => (
|
||||
<li
|
||||
key={subPath}
|
||||
className={classnames('nav__link nav__link--sub', {
|
||||
'nav__link--active': subLinkActive,
|
||||
})}
|
||||
>
|
||||
{subPath ? (
|
||||
<Button navigate={subPath} label={subLabel} />
|
||||
) : (
|
||||
<span>{subLabel}</span>
|
||||
)}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
</CSSTransitionGroup>
|
||||
<ul key="0" className="nav__sub-links">
|
||||
{subLinks.map(({ label: subLabel, path: subPath, active: subLinkActive }) => (
|
||||
<li
|
||||
key={subPath}
|
||||
className={classnames('nav__link nav__link--sub', {
|
||||
'nav__link--active': subLinkActive,
|
||||
})}
|
||||
>
|
||||
{subPath ? (
|
||||
<Button navigate={subPath} label={subLabel} />
|
||||
) : (
|
||||
<span>{subLabel}</span>
|
||||
)}
|
||||
</li>
|
||||
))}
|
||||
</ul>
|
||||
)}
|
||||
</li>
|
||||
))}
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
import { connect } from 'react-redux';
|
||||
import { selectCurrentModal, selectDaemonVersionMatched } from 'redux/selectors/app';
|
||||
import { selectDaemonVersionMatched } from 'redux/selectors/app';
|
||||
import { selectNotification } from 'lbry-redux';
|
||||
import { doCheckDaemonVersion } from 'redux/actions/app';
|
||||
import SplashScreen from './view';
|
||||
|
||||
const select = state => ({
|
||||
modal: selectCurrentModal(state),
|
||||
notification: selectNotification(state),
|
||||
daemonVersionMatched: selectDaemonVersionMatched(state),
|
||||
});
|
||||
|
||||
|
|
|
@ -8,7 +8,9 @@ import * as modals from 'constants/modal_types';
|
|||
|
||||
type Props = {
|
||||
checkDaemonVersion: () => Promise<any>,
|
||||
modal: string,
|
||||
notification: ?{
|
||||
id: string,
|
||||
},
|
||||
};
|
||||
|
||||
type State = {
|
||||
|
@ -100,9 +102,11 @@ export class SplashScreen extends React.PureComponent<Props, State> {
|
|||
}
|
||||
|
||||
render() {
|
||||
const { modal } = this.props;
|
||||
const { notification } = this.props;
|
||||
const { message, details, isLagging, isRunning } = this.state;
|
||||
|
||||
const notificationId = notification && notification.id;
|
||||
|
||||
return (
|
||||
<React.Fragment>
|
||||
<LoadScreen message={message} details={details} isWarning={isLagging} />
|
||||
|
@ -111,9 +115,9 @@ export class SplashScreen extends React.PureComponent<Props, State> {
|
|||
in the modals won't work. */}
|
||||
{isRunning && (
|
||||
<React.Fragment>
|
||||
{modal === modals.INCOMPATIBLE_DAEMON && <ModalIncompatibleDaemon />}
|
||||
{modal === modals.UPGRADE && <ModalUpgrade />}
|
||||
{modal === modals.DOWNLOADING && <ModalDownloading />}
|
||||
{notificationId === modals.INCOMPATIBLE_DAEMON && <ModalIncompatibleDaemon />}
|
||||
{notificationId === modals.UPGRADE && <ModalUpgrade />}
|
||||
{notificationId === modals.DOWNLOADING && <ModalDownloading />}
|
||||
</React.Fragment>
|
||||
)}
|
||||
</React.Fragment>
|
||||
|
|
|
@ -7,6 +7,7 @@ import Button from 'component/button';
|
|||
import { buildURI } from 'lbry-redux';
|
||||
import * as txnTypes from 'constants/transaction_types';
|
||||
import type { Transaction } from '../view';
|
||||
import * as ICONS from 'constants/icons';
|
||||
|
||||
type Props = {
|
||||
transaction: Transaction,
|
||||
|
@ -32,9 +33,9 @@ class TransactionListItem extends React.PureComponent<Props> {
|
|||
|
||||
getLink(type: string) {
|
||||
if (type === txnTypes.TIP) {
|
||||
return <Button button="link" onClick={this.abandonClaim} label={__('Unlock Tip')} />;
|
||||
return <Button icon={ICONS.UNLOCK} onClick={this.abandonClaim} title={__('Unlock Tip')} />;
|
||||
}
|
||||
return <Button button="link" onClick={this.abandonClaim} label={__('Abandon Claim')} />;
|
||||
return <Button icon={ICONS.TRASH} onClick={this.abandonClaim} title={__('Abandon Claim')} />;
|
||||
}
|
||||
|
||||
capitalize(string: string) {
|
||||
|
|
|
@ -100,8 +100,9 @@ class TransactionList extends React.PureComponent<Props, State> {
|
|||
postfix={
|
||||
<Button
|
||||
button="link"
|
||||
icon={icons.HELP}
|
||||
href="https://lbry.io/faq/transaction-types"
|
||||
label={__('Help')}
|
||||
title={__('Help')}
|
||||
/>
|
||||
}
|
||||
>
|
||||
|
|
|
@ -8,7 +8,6 @@ import {
|
|||
selectIdentityVerifyErrorMessage,
|
||||
} from 'redux/selectors/user';
|
||||
import UserVerify from './view';
|
||||
import { selectCurrentModal } from 'redux/selectors/app';
|
||||
import { doNotify } from 'lbry-redux';
|
||||
import { PHONE_COLLECTION } from 'constants/modal_types';
|
||||
|
||||
|
@ -19,7 +18,6 @@ const select = (state, props) => {
|
|||
isPending: selectIdentityVerifyIsPending(state),
|
||||
errorMessage: selectIdentityVerifyErrorMessage(state),
|
||||
reward: selectReward(state, { reward_type: rewards.TYPE_NEW_USER }),
|
||||
modal: selectCurrentModal(state),
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -23,3 +23,4 @@ export const HOME = 'Home';
|
|||
export const PHONE = 'Phone';
|
||||
export const CHECK = 'CheckCircle';
|
||||
export const HEART = 'Heart';
|
||||
export const UNLOCK = 'Unlock';
|
||||
|
|
|
@ -8,7 +8,7 @@ import React from 'react';
|
|||
import ReactDOM from 'react-dom';
|
||||
import { Provider } from 'react-redux';
|
||||
import { doConditionalAuthNavigate, doDaemonReady, doAutoUpdate } from 'redux/actions/app';
|
||||
import { doNotify } from 'lbry-redux';
|
||||
import { doNotify, doBlackListedOutpointsSubscribe } from 'lbry-redux';
|
||||
import { doNavigate } from 'redux/actions/navigation';
|
||||
import { doDownloadLanguages, doUpdateIsNightAsync } from 'redux/actions/settings';
|
||||
import { doUserEmailVerify } from 'redux/actions/user';
|
||||
|
@ -117,8 +117,10 @@ const init = () => {
|
|||
app.store.dispatch(doAutoUpdate());
|
||||
});
|
||||
}
|
||||
|
||||
app.store.dispatch(doUpdateIsNightAsync());
|
||||
app.store.dispatch(doDownloadLanguages());
|
||||
app.store.dispatch(doBlackListedOutpointsSubscribe());
|
||||
|
||||
function onDaemonReady() {
|
||||
window.sessionStorage.setItem('loaded', 'y'); // once we've made it here once per session, we don't need to show splash again
|
||||
|
|
|
@ -129,7 +129,7 @@ export class ExpandableModal extends React.PureComponent<ModalProps, State> {
|
|||
onClick={this.props.onConfirmed}
|
||||
/>
|
||||
<Button
|
||||
button="alt"
|
||||
button="link"
|
||||
label={!this.state.expanded ? this.props.expandButtonLabel : this.props.hideButtonLabel}
|
||||
className="modal__button"
|
||||
onClick={() => {
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import { connect } from 'react-redux';
|
||||
import * as settings from 'constants/settings';
|
||||
import { selectCurrentModal, selectModalProps, selectModalsAllowed } from 'redux/selectors/app';
|
||||
import {
|
||||
doNotify,
|
||||
selectCostForCurrentPageUri,
|
||||
|
@ -17,8 +16,6 @@ import ModalRouter from './view';
|
|||
const select = state => ({
|
||||
balance: selectBalance(state),
|
||||
showPageCost: selectCostForCurrentPageUri(state),
|
||||
modal: selectCurrentModal(state),
|
||||
modalProps: selectModalProps(state),
|
||||
page: selectCurrentPage(state),
|
||||
isVerificationCandidate: selectUserIsVerificationCandidate(state),
|
||||
isCreditIntroAcknowledged: makeSelectClientSetting(settings.CREDIT_REQUIRED_ACKNOWLEDGED)(state),
|
||||
|
@ -27,7 +24,6 @@ const select = state => ({
|
|||
),
|
||||
isWelcomeAcknowledged: makeSelectClientSetting(settings.NEW_USER_ACKNOWLEDGED)(state),
|
||||
user: selectUser(state),
|
||||
modalsAllowed: selectModalsAllowed(state),
|
||||
notification: selectNotification(state),
|
||||
notificationProps: selectNotificationProps(state),
|
||||
});
|
||||
|
|
|
@ -107,6 +107,11 @@ class ModalRouter extends React.PureComponent {
|
|||
if (!notification) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (notification.error) {
|
||||
return <ModalError {...notification} {...notificationProps} />;
|
||||
}
|
||||
|
||||
switch (notification.id) {
|
||||
case modals.UPGRADE:
|
||||
return <ModalUpgrade {...notificationProps} />;
|
||||
|
|
|
@ -67,7 +67,7 @@ class ChannelPage extends React.PureComponent<Props> {
|
|||
} else {
|
||||
contentList =
|
||||
claimsInChannel && claimsInChannel.length ? (
|
||||
<FileList hideFilter fileInfos={claimsInChannel} />
|
||||
<FileList sortByHeight hideFilter fileInfos={claimsInChannel} />
|
||||
) : (
|
||||
<span className="empty">{__('No content found.')}</span>
|
||||
);
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
import { connect } from 'react-redux';
|
||||
import { selectMyClaimsWithoutChannels } from 'lbry-redux';
|
||||
import { selectPendingPublishesLessEdits } from 'redux/selectors/publish';
|
||||
import { selectPendingPublishes } from 'redux/selectors/publish';
|
||||
import { doNavigate } from 'redux/actions/navigation';
|
||||
import { doCheckPendingPublishes } from 'redux/actions/publish';
|
||||
import FileListPublished from './view';
|
||||
|
||||
const select = state => ({
|
||||
claims: selectMyClaimsWithoutChannels(state),
|
||||
pendingPublishes: selectPendingPublishesLessEdits(state),
|
||||
pendingPublishes: selectPendingPublishes(state),
|
||||
});
|
||||
|
||||
const perform = dispatch => ({
|
||||
|
|
|
@ -1,10 +1,16 @@
|
|||
import { connect } from 'react-redux';
|
||||
import { doResolveUri, makeSelectClaimForUri, makeSelectIsUriResolving } from 'lbry-redux';
|
||||
import {
|
||||
doResolveUri,
|
||||
makeSelectClaimForUri,
|
||||
makeSelectIsUriResolving,
|
||||
selectBlackListedOutpoints,
|
||||
} from 'lbry-redux';
|
||||
import ShowPage from './view';
|
||||
|
||||
const select = (state, props) => ({
|
||||
claim: makeSelectClaimForUri(props.uri)(state),
|
||||
isResolvingUri: makeSelectIsUriResolving(props.uri)(state),
|
||||
blackListedOutpoints: selectBlackListedOutpoints(state),
|
||||
});
|
||||
|
||||
const perform = dispatch => ({
|
||||
|
|
|
@ -4,12 +4,21 @@ import BusyIndicator from 'component/common/busy-indicator';
|
|||
import ChannelPage from 'page/channel';
|
||||
import FilePage from 'page/file';
|
||||
import Page from 'component/page';
|
||||
import Button from 'component/button';
|
||||
|
||||
type Props = {
|
||||
isResolvingUri: boolean,
|
||||
resolveUri: string => void,
|
||||
uri: string,
|
||||
claim: { name: string },
|
||||
claim: {
|
||||
name: string,
|
||||
txid: string,
|
||||
nout: number,
|
||||
},
|
||||
blackListedOutpoints: Array<{
|
||||
txid: string,
|
||||
nout: number,
|
||||
}>,
|
||||
};
|
||||
|
||||
class ShowPage extends React.PureComponent<Props> {
|
||||
|
@ -28,7 +37,7 @@ class ShowPage extends React.PureComponent<Props> {
|
|||
}
|
||||
|
||||
render() {
|
||||
const { claim, isResolvingUri, uri } = this.props;
|
||||
const { claim, isResolvingUri, uri, blackListedOutpoints } = this.props;
|
||||
|
||||
let innerContent = '';
|
||||
|
||||
|
@ -50,7 +59,37 @@ class ShowPage extends React.PureComponent<Props> {
|
|||
} else if (claim && claim.name.length && claim.name[0] === '@') {
|
||||
innerContent = <ChannelPage uri={uri} />;
|
||||
} else if (claim) {
|
||||
innerContent = <FilePage uri={uri} />;
|
||||
let isClaimBlackListed = false;
|
||||
|
||||
for (let i = 0; i < blackListedOutpoints.length; i += 1) {
|
||||
const outpoint = blackListedOutpoints[i];
|
||||
if (outpoint.txid === claim.txid && outpoint.nout === claim.nout) {
|
||||
isClaimBlackListed = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (isClaimBlackListed) {
|
||||
innerContent = (
|
||||
<Page>
|
||||
<section className="card card--section">
|
||||
<div className="card__title">{uri}</div>
|
||||
<div className="card__content">
|
||||
<p>
|
||||
{__(
|
||||
'In response to a complaint we received under the US Digital Millennium Copyright Act, we have blocked access to this content from our applications.'
|
||||
)}
|
||||
</p>
|
||||
</div>
|
||||
<div className="card__actions">
|
||||
<Button button="link" href="https://lbry.io/faq/dmca" label={__('Read More')} />
|
||||
</div>
|
||||
</section>
|
||||
</Page>
|
||||
);
|
||||
} else {
|
||||
innerContent = <FilePage uri={uri} />;
|
||||
}
|
||||
}
|
||||
|
||||
return innerContent;
|
||||
|
|
|
@ -3,7 +3,14 @@ import isDev from 'electron-is-dev';
|
|||
import path from 'path';
|
||||
import * as MODALS from 'constants/modal_types';
|
||||
import { ipcRenderer, remote } from 'electron';
|
||||
import { ACTIONS, Lbry, doBalanceSubscribe, doFetchFileInfosAndPublishedClaims } from 'lbry-redux';
|
||||
import {
|
||||
ACTIONS,
|
||||
Lbry,
|
||||
doBalanceSubscribe,
|
||||
doFetchFileInfosAndPublishedClaims,
|
||||
doNotify,
|
||||
selectNotification,
|
||||
} from 'lbry-redux';
|
||||
import Native from 'native';
|
||||
import { doFetchRewardedContent } from 'redux/actions/content';
|
||||
import { doFetchDaemonSettings } from 'redux/actions/settings';
|
||||
|
@ -12,7 +19,6 @@ import { doAuthenticate } from 'redux/actions/user';
|
|||
import { doPause } from 'redux/actions/media';
|
||||
import { doCheckSubscriptions } from 'redux/actions/subscriptions';
|
||||
import {
|
||||
selectCurrentModal,
|
||||
selectIsUpgradeSkipped,
|
||||
selectUpdateUrl,
|
||||
selectUpgradeDownloadItem,
|
||||
|
@ -83,12 +89,11 @@ export function doDownloadUpgrade() {
|
|||
dispatch({
|
||||
type: ACTIONS.UPGRADE_DOWNLOAD_STARTED,
|
||||
});
|
||||
dispatch({
|
||||
type: ACTIONS.CREATE_NOTIFICATION,
|
||||
data: {
|
||||
modal: MODALS.DOWNLOADING,
|
||||
},
|
||||
});
|
||||
dispatch(
|
||||
doNotify({
|
||||
id: MODALS.DOWNLOADING,
|
||||
})
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -110,17 +115,19 @@ export function doDownloadUpgradeRequested() {
|
|||
// electron-updater behavior
|
||||
if (autoUpdateDeclined) {
|
||||
// The user declined an update before, so show the "confirm" dialog
|
||||
dispatch({
|
||||
type: ACTIONS.CREATE_NOTIFICATION,
|
||||
data: { modal: MODALS.AUTO_UPDATE_CONFIRM },
|
||||
});
|
||||
dispatch(
|
||||
doNotify({
|
||||
id: MODALS.AUTO_UPDATE_CONFIRM,
|
||||
})
|
||||
);
|
||||
} else {
|
||||
// The user was never shown the original update dialog (e.g. because they were
|
||||
// watching a video). So show the inital "update downloaded" dialog.
|
||||
dispatch({
|
||||
type: ACTIONS.CREATE_NOTIFICATION,
|
||||
data: { modal: MODALS.AUTO_UPDATE_DOWNLOADED },
|
||||
});
|
||||
dispatch(
|
||||
doNotify({
|
||||
id: MODALS.AUTO_UPDATE_DOWNLOADED,
|
||||
})
|
||||
);
|
||||
}
|
||||
} else {
|
||||
// Old behavior for Linux
|
||||
|
@ -135,10 +142,11 @@ export function doAutoUpdate() {
|
|||
type: ACTIONS.AUTO_UPDATE_DOWNLOADED,
|
||||
});
|
||||
|
||||
dispatch({
|
||||
type: ACTIONS.CREATE_NOTIFICATION,
|
||||
data: { modal: MODALS.AUTO_UPDATE_DOWNLOADED },
|
||||
});
|
||||
dispatch(
|
||||
doNotify({
|
||||
id: MODALS.AUTO_UPDATE_DOWNLOADED,
|
||||
})
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -203,15 +211,14 @@ export function doCheckUpgradeAvailable() {
|
|||
|
||||
if (
|
||||
upgradeAvailable &&
|
||||
!selectCurrentModal(state) &&
|
||||
!selectNotification(state) &&
|
||||
(!selectIsUpgradeSkipped(state) || remoteVersion !== selectRemoteVersion(state))
|
||||
) {
|
||||
dispatch({
|
||||
type: ACTIONS.CREATE_NOTIFICATION,
|
||||
data: {
|
||||
modal: MODALS.UPGRADE,
|
||||
},
|
||||
});
|
||||
dispatch(
|
||||
doNotify({
|
||||
id: MODALS.UPGRADE,
|
||||
})
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -256,13 +263,12 @@ export function doCheckDaemonVersion() {
|
|||
|
||||
export function doAlertError(errorList) {
|
||||
return dispatch => {
|
||||
dispatch({
|
||||
type: ACTIONS.CREATE_NOTIFICATION,
|
||||
data: {
|
||||
modal: MODALS.ERROR,
|
||||
modalProps: { error: errorList },
|
||||
},
|
||||
});
|
||||
dispatch(
|
||||
doNotify({
|
||||
id: MODALS.ERROR,
|
||||
error: errorList,
|
||||
})
|
||||
);
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -328,7 +334,9 @@ export function doChangeVolume(volume) {
|
|||
export function doConditionalAuthNavigate(newSession) {
|
||||
return (dispatch, getState) => {
|
||||
const state = getState();
|
||||
if (newSession || selectCurrentModal(state) !== 'email_collection') {
|
||||
const notification = selectNotification(state);
|
||||
|
||||
if (newSession || (notification && notification.id !== 'email_collection')) {
|
||||
dispatch(doAuthNavigate());
|
||||
}
|
||||
};
|
||||
|
|
|
@ -150,7 +150,7 @@ export const doPublish = (params: PublishParams) => (dispatch: Dispatch, getStat
|
|||
|
||||
const failure = error => {
|
||||
dispatch({ type: ACTIONS.PUBLISH_FAIL });
|
||||
dispatch(doNotify({ id: MODALS.ERROR }, { error: error.message }));
|
||||
dispatch(doNotify({ id: MODALS.ERROR, error: error.message }));
|
||||
};
|
||||
|
||||
return Lbry.publish(publishPayload).then(success, failure);
|
||||
|
|
|
@ -136,8 +136,12 @@ export default handleActions(
|
|||
[ACTIONS.PUBLISH_SUCCESS]: (state: PublishState, action): PublishState => {
|
||||
const { pendingPublish } = action.data;
|
||||
|
||||
// If it's an edit, don't create a pending publish
|
||||
// It will take some more work to know when an edit is confirmed
|
||||
const newPendingPublishes = state.pendingPublishes.slice();
|
||||
newPendingPublishes.push(pendingPublish);
|
||||
if (!pendingPublish.isEdit) {
|
||||
newPendingPublishes.push(pendingPublish);
|
||||
}
|
||||
|
||||
return {
|
||||
...state,
|
||||
|
|
|
@ -41,8 +41,6 @@ export const selectUpgradeFilename = createSelector(
|
|||
}
|
||||
);
|
||||
|
||||
export const selectCurrentModal = createSelector(selectState, state => state.modal);
|
||||
|
||||
export const selectDownloadProgress = createSelector(selectState, state => state.downloadProgress);
|
||||
|
||||
export const selectDownloadComplete = createSelector(
|
||||
|
@ -66,10 +64,6 @@ export const selectAutoUpdateDeclined = createSelector(
|
|||
state => state.autoUpdateDeclined
|
||||
);
|
||||
|
||||
export const selectModalsAllowed = createSelector(selectState, state => state.modalsAllowed);
|
||||
|
||||
export const selectModalProps = createSelector(selectState, state => state.modalProps);
|
||||
|
||||
export const selectDaemonVersionMatched = createSelector(
|
||||
selectState,
|
||||
state => state.daemonVersionMatched
|
||||
|
|
|
@ -8,11 +8,6 @@ export const selectPendingPublishes = createSelector(
|
|||
state => state.pendingPublishes.map(pendingClaim => ({ ...pendingClaim, pending: true })) || []
|
||||
);
|
||||
|
||||
export const selectPendingPublishesLessEdits = createSelector(
|
||||
selectPendingPublishes,
|
||||
pendingPublishes => pendingPublishes.filter(pendingPublish => !pendingPublish.isEdit)
|
||||
);
|
||||
|
||||
export const selectPublishFormValues = createSelector(selectState, state => {
|
||||
const { pendingPublish, ...formValues } = state;
|
||||
return formValues;
|
||||
|
@ -27,6 +22,6 @@ export const selectPendingPublish = uri =>
|
|||
}
|
||||
|
||||
return pendingPublishes.filter(
|
||||
publish => publish.name === claimName || publish.name === contentName
|
||||
publish => (publish.name === claimName || publish.name === contentName) && !publish.isEdit
|
||||
)[0];
|
||||
});
|
||||
|
|
|
@ -160,6 +160,7 @@ p {
|
|||
'nav header'
|
||||
'nav content';
|
||||
background-color: var(--color-bg);
|
||||
height: 100vh;
|
||||
|
||||
@media only screen and (min-width: $medium-breakpoint) {
|
||||
grid-template-columns: var(--side-nav-width-m) auto;
|
||||
|
@ -246,7 +247,7 @@ p {
|
|||
|
||||
/* Custom text selection */
|
||||
*::selection {
|
||||
background: var(--text-selection-bg);
|
||||
background: var(--color-primary-light);
|
||||
color: var(--text-selection-color);
|
||||
}
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ $large-breakpoint: 1760px;
|
|||
--color-green: #399483;
|
||||
--color-green-light: #effbe4;
|
||||
--color-green-blue: #2ec1a8;
|
||||
--color-purple: #8165b0;
|
||||
|
||||
/* Colors */
|
||||
--color-divider: #e3e3e3;
|
||||
|
@ -57,7 +58,7 @@ $large-breakpoint: 1760px;
|
|||
--text-help-color: var(--color-help);
|
||||
--text-max-width: 660px;
|
||||
--text-link-padding: 4px;
|
||||
--text-selection-bg: rgba(saturate(lighten(#155b4a, 20%), 20%), 1); // temp color
|
||||
--text-selection-bg: var(--color-purple);
|
||||
--text-selection-color: #fff;
|
||||
|
||||
/* Form */
|
||||
|
@ -111,7 +112,7 @@ $large-breakpoint: 1760px;
|
|||
--header-bg: var(--color-white);
|
||||
--header-color: var(--color-text);
|
||||
--header-active-color: rgba(0, 0, 0, 0.85);
|
||||
--header-height: $spacing-width * 3;
|
||||
--header-height: 75px;
|
||||
--header-button-bg: transparent;
|
||||
--header-button-hover-bg: rgba(100, 100, 100, 0.15);
|
||||
--header-primary-color: var(--color-primary);
|
||||
|
@ -139,7 +140,6 @@ $large-breakpoint: 1760px;
|
|||
--card-bg: var(--color-white);
|
||||
--card-text-color: var(--color-grey-dark);
|
||||
--card-radius: 2px;
|
||||
--card-margin: $spacing-vertical * 2/3;
|
||||
--card-wallet-color: var(--text-color-inverse);
|
||||
--success-msg-color: var(--color-green);
|
||||
--success-msg-border: var(--color-green-blue);
|
||||
|
|
|
@ -169,15 +169,11 @@ button:disabled {
|
|||
|
||||
.btn.btn--header-balance {
|
||||
font-family: 'metropolis-medium';
|
||||
font-size: 13px;
|
||||
font-size: 14px;
|
||||
color: var(--header-primary-color);
|
||||
|
||||
@media only screen and (min-width: $medium-breakpoint) {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: $large-breakpoint) {
|
||||
font-size: 21px;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.btn__label--balance {
|
||||
|
|
|
@ -177,7 +177,7 @@
|
|||
}
|
||||
|
||||
.card__content {
|
||||
margin-top: var(--card-margin);
|
||||
margin-top: $spacing-vertical * 2/3;
|
||||
}
|
||||
|
||||
.card__subtext-title {
|
||||
|
@ -198,7 +198,7 @@
|
|||
}
|
||||
|
||||
.card__actions {
|
||||
margin-top: var(--card-margin);
|
||||
margin-top: $spacing-vertical * 2/3;
|
||||
display: flex;
|
||||
|
||||
&:not(.card__actions--vertical) .btn:nth-child(n + 2) {
|
||||
|
|
|
@ -86,7 +86,12 @@
|
|||
}
|
||||
|
||||
.modal__button {
|
||||
margin: 0px 6px;
|
||||
margin: 0px $spacing-vertical * 1/3;
|
||||
|
||||
&.btn--link {
|
||||
// So the text isn't bigger than the text inside the button
|
||||
font-size: 0.8em;
|
||||
}
|
||||
}
|
||||
|
||||
.error-modal-overlay {
|
||||
|
@ -119,7 +124,7 @@
|
|||
list-style: none;
|
||||
max-height: 400px;
|
||||
max-width: var(--modal-width);
|
||||
overflow-y: hidden;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
.error-modal__content p {
|
||||
|
|
|
@ -82,10 +82,10 @@ table.table--help {
|
|||
|
||||
table.table--transactions {
|
||||
td:nth-of-type(1) {
|
||||
width: 17.5%;
|
||||
width: 25%;
|
||||
}
|
||||
td:nth-of-type(2) {
|
||||
width: 27.5%;
|
||||
width: 20%;
|
||||
}
|
||||
td:nth-of-type(3) {
|
||||
width: 22.5%;
|
||||
|
|
|
@ -9,6 +9,7 @@ import {
|
|||
searchReducer,
|
||||
walletReducer,
|
||||
notificationsReducer,
|
||||
blacklistReducer,
|
||||
} from 'lbry-redux';
|
||||
import navigationReducer from 'redux/reducers/navigation';
|
||||
import rewardsReducer from 'redux/reducers/rewards';
|
||||
|
@ -71,6 +72,7 @@ const reducers = combineReducers({
|
|||
media: mediaReducer,
|
||||
publish: publishReducer,
|
||||
notifications: notificationsReducer,
|
||||
blacklist: blacklistReducer,
|
||||
});
|
||||
|
||||
const bulkThunk = createBulkThunkMiddleware();
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
--header-active-color: rgba(0, 0, 0, 0.85);
|
||||
--header-button-bg: transparent;
|
||||
--header-button-hover-bg: rgba(100, 100, 100, 0.15);
|
||||
--header-primary-color: #8165B0;
|
||||
--header-primary-color: var(--color-purple);
|
||||
|
||||
/* Header */
|
||||
--header-color: #CCC;
|
||||
|
|
147
yarn.lock
147
yarn.lock
|
@ -144,14 +144,28 @@
|
|||
node-fetch "^2.1.1"
|
||||
url-template "^2.0.8"
|
||||
|
||||
"@segment/top-domain@^3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@segment/top-domain/-/top-domain-3.0.0.tgz#02e5a5a4fd42a9f6cf886b05e82f104012a3c3a7"
|
||||
dependencies:
|
||||
component-cookie "^1.1.2"
|
||||
component-url "^0.2.1"
|
||||
|
||||
"@types/node@^8.0.24":
|
||||
version "8.10.9"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.9.tgz#b507a74a7d3eddc74a17dc35fd40d8f45dde0d6c"
|
||||
version "8.10.10"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.10.tgz#fec07bc2ad549d9e6d2f7aa0fb0be3491b83163a"
|
||||
|
||||
"@types/webpack-env@^1.13.5":
|
||||
version "1.13.6"
|
||||
resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.13.6.tgz#128d1685a7c34d31ed17010fc87d6a12c1de6976"
|
||||
|
||||
JSONStream@^1.3.1:
|
||||
version "1.3.2"
|
||||
resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.2.tgz#c102371b6ec3a7cf3b847ca00c20bb0fce4c6dea"
|
||||
dependencies:
|
||||
jsonparse "^1.2.0"
|
||||
through ">=2.2.7 <3"
|
||||
|
||||
abab@^1.0.0, abab@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/abab/-/abab-1.0.4.tgz#5faad9c2c07f60dd76770f71cf025b62a63cfd4e"
|
||||
|
@ -259,6 +273,16 @@ amdefine@>=0.0.4:
|
|||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5"
|
||||
|
||||
amplitude-js@^4.0.0:
|
||||
version "4.2.1"
|
||||
resolved "https://registry.yarnpkg.com/amplitude-js/-/amplitude-js-4.2.1.tgz#539f5aaf312c1a56fec3946370e8dfa7ed185de1"
|
||||
dependencies:
|
||||
"@segment/top-domain" "^3.0.0"
|
||||
blueimp-md5 "^2.10.0"
|
||||
json3 "^3.3.2"
|
||||
lodash "^4.17.4"
|
||||
ua-parser-js "github:amplitude/ua-parser-js#ed538f1"
|
||||
|
||||
ansi-align@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-2.0.0.tgz#c36aeccba563b89ceb556f3690f0b1d9e3547f7f"
|
||||
|
@ -513,8 +537,8 @@ autoprefixer@^6.3.1:
|
|||
postcss-value-parser "^3.2.3"
|
||||
|
||||
aws-sdk@^2.224.1:
|
||||
version "2.227.1"
|
||||
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.227.1.tgz#e0051fa680f29cd83d66f4b751aafbc6beebe9ab"
|
||||
version "2.228.1"
|
||||
resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.228.1.tgz#57b3cc29671cbc80a36d45bbeada8ad269079f2d"
|
||||
dependencies:
|
||||
buffer "4.9.1"
|
||||
events "1.1.1"
|
||||
|
@ -1351,6 +1375,10 @@ bluebird@~3.4.1:
|
|||
version "3.4.7"
|
||||
resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3"
|
||||
|
||||
blueimp-md5@^2.10.0:
|
||||
version "2.10.0"
|
||||
resolved "https://registry.yarnpkg.com/blueimp-md5/-/blueimp-md5-2.10.0.tgz#02f0843921f90dca14f5b8920a38593201d6964d"
|
||||
|
||||
bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0:
|
||||
version "4.11.8"
|
||||
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f"
|
||||
|
@ -2047,7 +2075,7 @@ combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5:
|
|||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
commander@2.15.x, commander@^2.11.0, commander@^2.13.0, commander@^2.14.1, commander@^2.5.0, commander@^2.9.0, commander@~2.15.0:
|
||||
commander@2.15.x, commander@^2.11.0, commander@^2.12.2, commander@^2.13.0, commander@^2.14.1, commander@^2.5.0, commander@^2.9.0, commander@~2.15.0:
|
||||
version "2.15.1"
|
||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
|
||||
|
||||
|
@ -2100,10 +2128,20 @@ compare-version@^0.1.2:
|
|||
version "0.1.2"
|
||||
resolved "https://registry.yarnpkg.com/compare-version/-/compare-version-0.1.2.tgz#0162ec2d9351f5ddd59a9202cba935366a725080"
|
||||
|
||||
component-cookie@^1.1.2:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/component-cookie/-/component-cookie-1.1.3.tgz#053e14a3bd7748154f55724fd39a60c01994ebed"
|
||||
dependencies:
|
||||
debug "*"
|
||||
|
||||
component-emitter@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6"
|
||||
|
||||
component-url@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/component-url/-/component-url-0.2.1.tgz#4e4f4799c43ead9fd3ce91b5a305d220208fee47"
|
||||
|
||||
compressible@~2.0.13:
|
||||
version "2.0.13"
|
||||
resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.13.tgz#0d1020ab924b2fdb4d6279875c7d6daba6baa7a9"
|
||||
|
@ -2530,15 +2568,15 @@ date-now@^0.1.4:
|
|||
version "0.1.4"
|
||||
resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b"
|
||||
|
||||
debug@2.6.9, debug@^2.1.2, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
|
||||
version "2.6.9"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||
debug@*, debug@3.1.0, debug@^3.0.0, debug@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
debug@3.1.0, debug@^3.0.0, debug@^3.1.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
|
||||
debug@2.6.9, debug@^2.1.2, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9:
|
||||
version "2.6.9"
|
||||
resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
|
||||
dependencies:
|
||||
ms "2.0.0"
|
||||
|
||||
|
@ -3010,7 +3048,7 @@ electron-devtools-installer@^2.2.3:
|
|||
rimraf "^2.5.2"
|
||||
semver "^5.3.0"
|
||||
|
||||
electron-dl@^1.11.0:
|
||||
electron-dl@^1.11.0, electron-dl@^1.6.0:
|
||||
version "1.11.0"
|
||||
resolved "https://registry.yarnpkg.com/electron-dl/-/electron-dl-1.11.0.tgz#112851f3857bb1a556b5c736af06040bd40df850"
|
||||
dependencies:
|
||||
|
@ -3821,6 +3859,10 @@ extsprintf@^1.2.0:
|
|||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
|
||||
|
||||
eyes@^0.1.8:
|
||||
version "0.1.8"
|
||||
resolved "https://registry.yarnpkg.com/eyes/-/eyes-0.1.8.tgz#62cf120234c683785d902348a800ef3e0cc20bc0"
|
||||
|
||||
fast-deep-equal@^1.0.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz#c053477817c86b51daa853c81e059b733d023614"
|
||||
|
@ -4133,7 +4175,7 @@ fresh@0.5.2:
|
|||
version "0.5.2"
|
||||
resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
|
||||
|
||||
from2@^2.1.0:
|
||||
from2@^2.1.0, from2@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af"
|
||||
dependencies:
|
||||
|
@ -4760,8 +4802,8 @@ http-errors@~1.6.2:
|
|||
statuses ">= 1.4.0 < 2"
|
||||
|
||||
http-parser-js@>=0.4.0:
|
||||
version "0.4.11"
|
||||
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.11.tgz#5b720849c650903c27e521633d94696ee95f3529"
|
||||
version "0.4.12"
|
||||
resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.12.tgz#b9cfbf4a2cf26f0fc34b10ca1489a27771e3474f"
|
||||
|
||||
http-proxy-agent@^2.1.0:
|
||||
version "2.1.0"
|
||||
|
@ -4967,6 +5009,10 @@ inquirer@^3.0.6:
|
|||
strip-ansi "^4.0.0"
|
||||
through "^2.3.6"
|
||||
|
||||
install@^0.10.2:
|
||||
version "0.10.4"
|
||||
resolved "https://registry.yarnpkg.com/install/-/install-0.10.4.tgz#9cb09115768b93a582d1450a6ba3f275975b49aa"
|
||||
|
||||
internal-ip@1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/internal-ip/-/internal-ip-1.2.0.tgz#ae9fbf93b984878785d50a8de1b356956058cf5c"
|
||||
|
@ -5377,6 +5423,17 @@ isurl@^1.0.0-alpha5:
|
|||
has-to-string-tag-x "^1.2.0"
|
||||
is-object "^1.0.1"
|
||||
|
||||
jayson@^2.0.2:
|
||||
version "2.0.5"
|
||||
resolved "https://registry.yarnpkg.com/jayson/-/jayson-2.0.5.tgz#46df3f0bceb0b5b708bf7c8806c34c81938d3f21"
|
||||
dependencies:
|
||||
JSONStream "^1.3.1"
|
||||
commander "^2.12.2"
|
||||
es6-promisify "^5.0.0"
|
||||
eyes "^0.1.8"
|
||||
json-stringify-safe "^5.0.1"
|
||||
lodash "^4.17.4"
|
||||
|
||||
jest-config@^22.4.3:
|
||||
version "22.4.3"
|
||||
resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-22.4.3.tgz#0e9d57db267839ea31309119b41dc2fa31b76403"
|
||||
|
@ -5600,6 +5657,10 @@ jsesc@~0.5.0:
|
|||
version "0.5.0"
|
||||
resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d"
|
||||
|
||||
jshashes@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.yarnpkg.com/jshashes/-/jshashes-1.0.7.tgz#bed8c97a0e9632fd0513916f55f76dd5486be59f"
|
||||
|
||||
jsome@^2.3.25:
|
||||
version "2.5.0"
|
||||
resolved "https://registry.yarnpkg.com/jsome/-/jsome-2.5.0.tgz#5e417eef4341ffeb83ee8bfa9265b36d56fe49ed"
|
||||
|
@ -5658,6 +5719,10 @@ jsonfile@^4.0.0:
|
|||
optionalDependencies:
|
||||
graceful-fs "^4.1.6"
|
||||
|
||||
jsonparse@^1.2.0:
|
||||
version "1.3.1"
|
||||
resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
|
||||
|
||||
jsonpointer@^4.0.0, jsonpointer@^4.0.1:
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/jsonpointer/-/jsonpointer-4.0.1.tgz#4fd92cb34e0e9db3c89c8622ecf51f9b978c6cb9"
|
||||
|
@ -5740,7 +5805,7 @@ lazy-val@^1.0.3:
|
|||
|
||||
lbry-redux@lbryio/lbry-redux:
|
||||
version "0.0.1"
|
||||
resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/06cfc1c88cc4cc6dafd97647cd7529e0571256da"
|
||||
resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/5a6a7701969aef177934ce76aeb3233c746c8b49"
|
||||
dependencies:
|
||||
amplitude-js "^4.0.0"
|
||||
bluebird "^3.5.1"
|
||||
|
@ -5925,8 +5990,8 @@ locate-path@^2.0.0:
|
|||
path-exists "^3.0.0"
|
||||
|
||||
lodash-es@^4.17.4, lodash-es@^4.17.5, lodash-es@^4.2.1:
|
||||
version "4.17.8"
|
||||
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.8.tgz#6fa8c8c5d337481df0bdf1c0d899d42473121e45"
|
||||
version "4.17.10"
|
||||
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.10.tgz#62cd7104cdf5dd87f235a837f0ede0e8e5117e05"
|
||||
|
||||
lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0:
|
||||
version "4.2.0"
|
||||
|
@ -6057,8 +6122,8 @@ lodash.unset@^4.5.2:
|
|||
resolved "https://registry.yarnpkg.com/lodash.unset/-/lodash.unset-4.5.2.tgz#370d1d3e85b72a7e1b0cdf2d272121306f23e4ed"
|
||||
|
||||
lodash@^4.0.0, lodash@^4.1.0, lodash@^4.13.1, lodash@^4.14.0, lodash@^4.15.0, lodash@^4.17.2, lodash@^4.17.3, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.2.0, lodash@^4.2.1, lodash@^4.3.0, lodash@~4.17.4:
|
||||
version "4.17.5"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511"
|
||||
version "4.17.10"
|
||||
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.10.tgz#1b7793cf7259ea38fb3661d4d38b3260af8ae4e7"
|
||||
|
||||
log-symbols@^1.0.2:
|
||||
version "1.0.2"
|
||||
|
@ -6377,8 +6442,8 @@ mixin-object@^2.0.1:
|
|||
is-extendable "^0.1.1"
|
||||
|
||||
mixpanel-browser@^2.17.1:
|
||||
version "2.20.0"
|
||||
resolved "https://registry.yarnpkg.com/mixpanel-browser/-/mixpanel-browser-2.20.0.tgz#07cc666b3c7c95ac35b302a0fbc787b71921e595"
|
||||
version "2.21.0"
|
||||
resolved "https://registry.yarnpkg.com/mixpanel-browser/-/mixpanel-browser-2.21.0.tgz#930b540ad7eab400b97a1ff19e533c4f104f1b19"
|
||||
|
||||
mkdirp@0.5.0:
|
||||
version "0.5.0"
|
||||
|
@ -6515,8 +6580,8 @@ no-case@^2.2.0:
|
|||
lower-case "^1.1.1"
|
||||
|
||||
node-abi@^2.2.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.3.0.tgz#f3d554d6ac72a9ee16f0f4dc9548db7c08de4986"
|
||||
version "2.4.0"
|
||||
resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.4.0.tgz#3c27515cb842f5bbc132a31254f9f1e1c55c7b83"
|
||||
dependencies:
|
||||
semver "^5.4.1"
|
||||
|
||||
|
@ -7792,7 +7857,7 @@ react@^0.14.2:
|
|||
envify "^3.0.0"
|
||||
fbjs "^0.6.1"
|
||||
|
||||
react@^16.3.0:
|
||||
react@^16.2.0, react@^16.3.0:
|
||||
version "16.3.2"
|
||||
resolved "https://registry.yarnpkg.com/react/-/react-16.3.2.tgz#fdc8420398533a1e58872f59091b272ce2f91ea9"
|
||||
dependencies:
|
||||
|
@ -7939,6 +8004,10 @@ reduce-function-call@^1.0.1:
|
|||
dependencies:
|
||||
balanced-match "^0.4.2"
|
||||
|
||||
redux-action-buffer@^1.1.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/redux-action-buffer/-/redux-action-buffer-1.2.0.tgz#2ec0a1d899cc9f6f44ccdeb431ee52ad41dd9755"
|
||||
|
||||
redux-logger@^3.0.1:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/redux-logger/-/redux-logger-3.0.6.tgz#f7555966f3098f3c88604c449cf0baf5778274bf"
|
||||
|
@ -7952,6 +8021,17 @@ redux-persist-transform-compress@^4.2.0:
|
|||
json-stringify-safe "^5.0.1"
|
||||
lz-string "^1.4.4"
|
||||
|
||||
redux-persist-transform-filter@0.0.10:
|
||||
version "0.0.10"
|
||||
resolved "https://registry.yarnpkg.com/redux-persist-transform-filter/-/redux-persist-transform-filter-0.0.10.tgz#9a3b106ce8939d2cbbf5212c747ed177fff14280"
|
||||
dependencies:
|
||||
lodash.forin "^4.4.0"
|
||||
lodash.get "^4.4.2"
|
||||
lodash.isempty "^4.4.0"
|
||||
lodash.pickby "^4.6.0"
|
||||
lodash.set "^4.3.2"
|
||||
lodash.unset "^4.5.2"
|
||||
|
||||
redux-persist-transform-filter@0.0.16:
|
||||
version "0.0.16"
|
||||
resolved "https://registry.yarnpkg.com/redux-persist-transform-filter/-/redux-persist-transform-filter-0.0.16.tgz#0c21dc166774c12fb3f090f7a2f5ea90f7ba0cea"
|
||||
|
@ -8521,8 +8601,8 @@ simple-concat@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6"
|
||||
|
||||
simple-get@^2.7.0:
|
||||
version "2.7.0"
|
||||
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.7.0.tgz#ad37f926d08129237ff08c4f2edfd6f10e0380b5"
|
||||
version "2.8.1"
|
||||
resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d"
|
||||
dependencies:
|
||||
decompress-response "^3.3.0"
|
||||
once "^1.3.1"
|
||||
|
@ -8646,9 +8726,10 @@ source-map-support@^0.4.15:
|
|||
source-map "^0.5.6"
|
||||
|
||||
source-map-support@^0.5.0, source-map-support@^0.5.3, source-map-support@^0.5.4:
|
||||
version "0.5.4"
|
||||
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.4.tgz#54456efa89caa9270af7cd624cc2f123e51fbae8"
|
||||
version "0.5.5"
|
||||
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.5.tgz#0d4af9e00493e855402e8ec36ebed2d266fceb90"
|
||||
dependencies:
|
||||
buffer-from "^1.0.0"
|
||||
source-map "^0.6.0"
|
||||
|
||||
source-map-url@^0.4.0:
|
||||
|
@ -9112,7 +9193,7 @@ through2@~0.2.3:
|
|||
readable-stream "~1.1.9"
|
||||
xtend "~2.1.1"
|
||||
|
||||
through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.6:
|
||||
"through@>=2.2.7 <3", through@^2.3.6, through@^2.3.8, through@~2.3.4, through@~2.3.6:
|
||||
version "2.3.8"
|
||||
resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
|
||||
|
||||
|
@ -9269,6 +9350,10 @@ ua-parser-js@^0.7.9:
|
|||
version "0.7.17"
|
||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.17.tgz#e9ec5f9498b9ec910e7ae3ac626a805c4d09ecac"
|
||||
|
||||
"ua-parser-js@github:amplitude/ua-parser-js#ed538f1":
|
||||
version "0.7.10"
|
||||
resolved "https://codeload.github.com/amplitude/ua-parser-js/tar.gz/ed538f16f5c6ecd8357da989b617d4f156dcf35d"
|
||||
|
||||
uglify-es@^3.3.4:
|
||||
version "3.3.9"
|
||||
resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677"
|
||||
|
@ -9586,7 +9671,7 @@ vm-browserify@0.0.4:
|
|||
dependencies:
|
||||
indexof "0.0.1"
|
||||
|
||||
"vm2@github:patriksimek/vm2#custom_files":
|
||||
vm2@patriksimek/vm2#custom_files:
|
||||
version "3.5.0"
|
||||
resolved "https://codeload.github.com/patriksimek/vm2/tar.gz/7e82f90ac705fc44fad044147cb0df09b4c79a57"
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue