diff --git a/ui/js/actions/app.js b/ui/js/actions/app.js
index 35049d435..d812172b6 100644
--- a/ui/js/actions/app.js
+++ b/ui/js/actions/app.js
@@ -8,11 +8,13 @@ import {
selectPageTitle,
selectCurrentPage,
selectCurrentParams,
+ selectWelcomeModalAcknowledged,
} from "selectors/app";
import { doSearch } from "actions/search";
import { doFetchDaemonSettings } from "actions/settings";
import { doAuthenticate } from "actions/user";
import { doFileList } from "actions/file_info";
+import * as modals from "constants/modal_types";
const { remote, ipcRenderer, shell } = require("electron");
const path = require("path");
@@ -219,12 +221,16 @@ export function doAlertError(errorList) {
export function doDaemonReady() {
return function(dispatch, getState) {
+ const showWelcome = !selectWelcomeModalAcknowledged(getState());
dispatch(doAuthenticate());
dispatch({
type: types.DAEMON_READY,
});
dispatch(doFetchDaemonSettings());
dispatch(doFileList());
+ if (showWelcome) {
+ dispatch(doOpenModal(modals.WELCOME));
+ }
};
}
diff --git a/ui/js/actions/content.js b/ui/js/actions/content.js
index f46a1fa33..9d6f55408 100644
--- a/ui/js/actions/content.js
+++ b/ui/js/actions/content.js
@@ -15,8 +15,8 @@ import { selectBadgeNumber } from "selectors/app";
import { selectTotalDownloadProgress } from "selectors/file_info";
import setBadge from "util/setBadge";
import setProgressBar from "util/setProgressBar";
-import { doFileList } from "actions/file_info";
import batchActions from "util/batchActions";
+import * as modals from "constants/modal_types";
const { ipcRenderer } = require("electron");
@@ -293,7 +293,7 @@ export function doPurchaseUri(uri, purchaseModalName) {
}
if (cost > balance) {
- dispatch(doOpenModal("notEnoughCredits"));
+ dispatch(doOpenModal(modals.INSUFFICIENT_CREDITS));
} else {
dispatch(doOpenModal(purchaseModalName));
}
diff --git a/ui/js/component/app/view.jsx b/ui/js/component/app/view.jsx
index bc8264f21..8f4c54cb0 100644
--- a/ui/js/component/app/view.jsx
+++ b/ui/js/component/app/view.jsx
@@ -3,10 +3,11 @@ import Router from "component/router";
import Header from "component/header";
import ModalError from "component/modalError";
import ModalDownloading from "component/modalDownloading";
+import ModalInsufficientCredits from "component/modalInsufficientCredits";
import ModalUpgrade from "component/modalUpgrade";
import ModalWelcome from "component/modalWelcome";
import lbry from "lbry";
-import { Line } from "rc-progress";
+import * as modals from "constants/modal_types";
class App extends React.PureComponent {
componentWillMount() {
@@ -32,10 +33,11 @@ class App extends React.PureComponent {
- {modal == "upgrade" && }
- {modal == "downloading" && }
- {modal == "error" && }
- {modal == "welcome" && }
+ {modal == modals.UPGRADE && }
+ {modal == modals.DOWNLOADING && }
+ {modal == modals.ERROR && }
+ {modal == modals.INSUFFICIENT_CREDITS && }
+ {modal == modals.WELCOME && }
);
}
diff --git a/ui/js/component/fileActions/view.jsx b/ui/js/component/fileActions/view.jsx
index 53188a1f5..0d4dbbd6b 100644
--- a/ui/js/component/fileActions/view.jsx
+++ b/ui/js/component/fileActions/view.jsx
@@ -176,13 +176,6 @@ class FileActions extends React.PureComponent {
{" "}
{__("credits")}.
-
- {__("You don't have enough LBRY credits to pay for this stream.")}
-
({});
+
+const perform = dispatch => ({
+ addFunds: () => {
+ dispatch(doNavigate("/rewards"));
+ dispatch(doCloseModal());
+ },
+ closeModal: () => dispatch(doCloseModal()),
+});
+
+export default connect(select, perform)(ModalInsufficientCredits);
diff --git a/ui/js/component/modalInsufficientCredits/view.jsx b/ui/js/component/modalInsufficientCredits/view.jsx
new file mode 100644
index 000000000..fd214cd11
--- /dev/null
+++ b/ui/js/component/modalInsufficientCredits/view.jsx
@@ -0,0 +1,24 @@
+import React from "react";
+import { Modal } from "component/modal";
+
+class ModalInsufficientCredits extends React.PureComponent {
+ render() {
+ const { addFunds, closeModal } = this.props;
+
+ return (
+
+ {__("More LBRY credits are required to purchase this.")}
+
+ );
+ }
+}
+
+export default ModalInsufficientCredits;
diff --git a/ui/js/component/modalUpgrade/view.jsx b/ui/js/component/modalUpgrade/view.jsx
index 544fd96b7..2d364bd31 100644
--- a/ui/js/component/modalUpgrade/view.jsx
+++ b/ui/js/component/modalUpgrade/view.jsx
@@ -1,6 +1,5 @@
import React from "react";
import { Modal } from "component/modal";
-import { downloadUpgrade, skipUpgrade } from "actions/app";
class ModalUpgrade extends React.PureComponent {
render() {
diff --git a/ui/js/component/modalWelcome/index.js b/ui/js/component/modalWelcome/index.js
index 12ec5c0be..5ad4b0bc9 100644
--- a/ui/js/component/modalWelcome/index.js
+++ b/ui/js/component/modalWelcome/index.js
@@ -1,11 +1,11 @@
import React from "react";
import rewards from "rewards";
import { connect } from "react-redux";
-import { doCloseModal } from "actions/app";
+import { doCloseModal, doNavigate } from "actions/app";
+import { doSetClientSetting } from "actions/settings";
import { selectUserIsRewardApproved } from "selectors/user";
import {
makeSelectHasClaimedReward,
- makeSelectClaimRewardError,
makeSelectRewardByType,
} from "selectors/rewards";
import ModalWelcome from "./view";
@@ -21,8 +21,19 @@ const select = (state, props) => {
};
};
-const perform = dispatch => ({
- closeModal: () => dispatch(doCloseModal()),
-});
+const perform = dispatch => () => {
+ const closeModal = () => {
+ dispatch(doSetClientSetting("welcome_acknowledged", true));
+ dispatch(doCloseModal());
+ };
+
+ return {
+ verifyAccount: () => {
+ closeModal();
+ dispatch(doNavigate("/rewards"));
+ },
+ closeModal: closeModal,
+ };
+};
export default connect(select, perform)(ModalWelcome);
diff --git a/ui/js/component/modalWelcome/view.jsx b/ui/js/component/modalWelcome/view.jsx
index 82448c3ae..cfd3d2c67 100644
--- a/ui/js/component/modalWelcome/view.jsx
+++ b/ui/js/component/modalWelcome/view.jsx
@@ -6,7 +6,13 @@ import RewardLink from "component/rewardLink";
class ModalWelcome extends React.PureComponent {
render() {
- const { closeModal, hasClaimed, isRewardApproved, reward } = this.props;
+ const {
+ closeModal,
+ hasClaimed,
+ isRewardApproved,
+ reward,
+ verifyAccount,
+ } = this.props;
return !hasClaimed
?
@@ -29,13 +35,20 @@ class ModalWelcome extends React.PureComponent {
{" "}{isRewardApproved ? __("Here's a nickel, kid.") : ""}
- {isRewardApproved
- ?
- : }
+ {isRewardApproved &&
+ }
+ {!isRewardApproved &&
+ }
+ {!isRewardApproved &&
+ }
diff --git a/ui/js/component/video/internal/play-button.jsx b/ui/js/component/video/internal/play-button.jsx
index d104fcdeb..f5223231c 100644
--- a/ui/js/component/video/internal/play-button.jsx
+++ b/ui/js/component/video/internal/play-button.jsx
@@ -78,13 +78,6 @@ class VideoPlayButton extends React.PureComponent {
icon={icon}
onClick={this.onWatchClick.bind(this)}
/>
-
- {__("You don't have enough LBRY credits to pay for this stream.")}
-
{
const initialState = app.store.getState();
-// import whyDidYouUpdate from "why-did-you-update";
-// if (env === "development") {
-// /*
-// https://github.com/garbles/why-did-you-update
-// "A function that monkey patches React and notifies you in the console when
-// potentially unnecessary re-renders occur."
-//
-// Just checks if props change between updates. Can be fixed by manually
-// adding a check in shouldComponentUpdate or using React.PureComponent
-// */
-// whyDidYouUpdate(React);
-// }
-
var init = function() {
function onDaemonReady() {
window.sessionStorage.setItem("loaded", "y"); //once we've made it here once per session, we don't need to show splash again
@@ -117,7 +103,7 @@ var init = function() {
ReactDOM.render(
-
+
,
canvas
);
diff --git a/ui/js/selectors/app.js b/ui/js/selectors/app.js
index f6acd6d07..209b428c1 100644
--- a/ui/js/selectors/app.js
+++ b/ui/js/selectors/app.js
@@ -187,6 +187,11 @@ export const selectSnackBarSnacks = createSelector(
snackBar => snackBar.snacks || []
);
+export const selectWelcomeModalAcknowledged = createSelector(
+ _selectState,
+ state => lbry.getClientSetting("welcome_acknowledged")
+);
+
export const selectBadgeNumber = createSelector(
_selectState,
state => state.badgeNumber
diff --git a/ui/package.json b/ui/package.json
index 4c4986ec2..7e7491ed9 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -72,8 +72,7 @@
"webpack": "^2.6.1",
"webpack-dev-server": "^2.4.4",
"webpack-notifier": "^1.5.0",
- "webpack-target-electron-renderer": "^0.4.0",
- "why-did-you-update": "0.0.8"
+ "webpack-target-electron-renderer": "^0.4.0"
},
"lint-staged": {
"gitDir": "../",