From 9d9976d77af9bd3135ec7c8a16f3974fb6e336b8 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Thu, 9 May 2019 00:35:43 -0400 Subject: [PATCH 01/26] use port 9090 for webpack since internal-apis uses 8080 --- .eslintrc.json | 3 ++- package.json | 2 +- src/platforms/electron/createWindow.js | 2 +- src/platforms/electron/devServer.js | 15 +++++---------- static/index.dev.html | 2 +- webpack.base.config.js | 6 ++++++ webpack.web.config.js | 3 --- 7 files changed, 16 insertions(+), 17 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index ca6035fa1..b6cda7522 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -19,7 +19,8 @@ "__": true, "__n": true, "app": true, - "IS_WEB": true + "IS_WEB": true, + "WEBPACK_PORT": true }, "rules": { "comma-dangle": ["error", "always-multiline"], diff --git a/package.json b/package.json index af107dd5b..b7173ed15 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "dev": "yarn dev:electron", "dev:electron": "cross-env NODE_ENV=development node ./src/platforms/electron/devServer.js", "dev:web": "cross-env NODE_ENV=development webpack-dev-server --open --hot --progress --config webpack.web.config.js", - "dev:internal-apis": "LBRY_API_URL='http://localhost:9090' yarn dev:electron", + "dev:internal-apis": "LBRY_API_URL='http://localhost:8080' yarn dev:electron", "run:web": "cross-env NODE_ENV=production yarn compile:web && node ./dist/web/server.js", "pack": "electron-builder --dir", "dist": "electron-builder", diff --git a/src/platforms/electron/createWindow.js b/src/platforms/electron/createWindow.js index 79f7ed769..584e6d536 100644 --- a/src/platforms/electron/createWindow.js +++ b/src/platforms/electron/createWindow.js @@ -36,7 +36,7 @@ export default appState => { }; const lbryProto = 'lbry://'; const lbryProtoQ = 'lbry://?'; - const rendererURL = isDev ? `http://localhost:8080` : `file://${__dirname}/index.html`; + const rendererURL = isDev ? `http://localhost:${WEBPACK_PORT}` : `file://${__dirname}/index.html`; let window = new BrowserWindow(windowConfiguration); diff --git a/src/platforms/electron/devServer.js b/src/platforms/electron/devServer.js index a8c16a220..b9d87ae9f 100644 --- a/src/platforms/electron/devServer.js +++ b/src/platforms/electron/devServer.js @@ -1,5 +1,3 @@ -const fs = require('fs'); -const path = require('path'); const chalk = require('chalk'); const webpack = require('webpack'); const merge = require('webpack-merge'); @@ -7,12 +5,9 @@ const middleware = require('webpack-dev-middleware'); const express = require('express'); const app = express(); -// TODO: Spawn separate threads so realtime status logging can be used -// without overwriting information/execptions logged by the compilers -const logRealtime = str => { - let lineCount = (str.match(/\n/) || []).length + 1; - console.log('\u001B[' + lineCount + 'F\u001B[G\u001B[2K' + str); -}; +// Ideally this would come from the same source that sets this port in webpack.web.config.js +// but we can't inject a variable into this file because it is not being touched by webpack +const WEBPACK_PORT = 9090; console.log( chalk.magenta(`Compiling ${chalk.underline('main')} and ${chalk.underline('render')}, this will take a while.`) @@ -46,8 +41,8 @@ app.use(require('webpack-hot-middleware')(renderCompiler)); app.use(renderInstance); app.use(express.static('dist/electron/static')); -app.listen(8080, () => { - console.log(chalk.yellow.bold('Renderer listening on port 8080 (still compiling)')); +app.listen(WEBPACK_PORT, () => { + console.log(chalk.yellow.bold('Renderer listening on port 9090 (still compiling)')); }); mainInstance.waitUntilValid(() => console.log(chalk.green(`${chalk.underline('main')} compilation complete.`))); diff --git a/static/index.dev.html b/static/index.dev.html index a4796bb47..e36d3ec63 100644 --- a/static/index.dev.html +++ b/static/index.dev.html @@ -7,6 +7,6 @@
- + diff --git a/webpack.base.config.js b/webpack.base.config.js index 167716858..4610f096b 100644 --- a/webpack.base.config.js +++ b/webpack.base.config.js @@ -12,6 +12,7 @@ const { ifProduction } = getIfUtils(NODE_ENV); const UI_ROOT = path.resolve(__dirname, 'src/ui/'); const STATIC_ROOT = path.resolve(__dirname, 'static/'); const DIST_ROOT = path.resolve(__dirname, 'dist/'); +const WEBPACK_PORT = 9090; console.log(ifProduction('production', 'development')); @@ -32,6 +33,10 @@ let baseConfig = { node: { __dirname: false, }, + devServer: { + historyApiFallback: true, + port: WEBPACK_PORT, + }, module: { rules: [ { @@ -117,6 +122,7 @@ let baseConfig = { 'process.env.NODE_ENV': JSON.stringify(NODE_ENV), 'process.env.SDK_API_URL': JSON.stringify(process.env.SDK_API_URL), 'process.env.LBRY_API_URL': JSON.stringify(process.env.LBRY_API_URL), + WEBPACK_PORT, }), ], }; diff --git a/webpack.web.config.js b/webpack.web.config.js index 731c4bed8..b0e89c0a7 100644 --- a/webpack.web.config.js +++ b/webpack.web.config.js @@ -18,9 +18,6 @@ const webConfig = { path: __dirname + '/dist/web', publicPath: '/', }, - devServer: { - historyApiFallback: true, - }, module: { rules: [ { From 7ce6bdb6a4c9d0f994facc6a33ea13f0fbb0809a Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Fri, 10 May 2019 01:06:33 -0400 Subject: [PATCH 02/26] allow unlocking supports --- package.json | 2 +- src/ui/component/transactionList/index.js | 4 ++-- src/ui/component/transactionList/view.jsx | 12 +++++------- yarn.lock | 4 ++-- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index b7173ed15..e3fa251b6 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ "jsmediatags": "^3.8.1", "json-loader": "^0.5.4", "lbry-format": "https://github.com/lbryio/lbry-format.git", - "lbry-redux": "lbryio/lbry-redux#c8126ab21792d7a85e1123a2363af285a0263654", + "lbry-redux": "lbryio/lbry-redux#c2d02502387e404daca3dd9c62a0aa7c50814ea8", "lbryinc": "lbryio/lbryinc#43d382d9b74d396a581a74d87e4c53105e04f845", "lint-staged": "^7.0.2", "localforage": "^1.7.1", diff --git a/src/ui/component/transactionList/index.js b/src/ui/component/transactionList/index.js index 0be08d801..a15a751f6 100644 --- a/src/ui/component/transactionList/index.js +++ b/src/ui/component/transactionList/index.js @@ -1,12 +1,12 @@ import { connect } from 'react-redux'; import { selectClaimedRewardsByTransactionId } from 'lbryinc'; import { doOpenModal } from 'redux/actions/app'; -import { selectAllMyClaimsByOutpoint, selectTransactionListFilter, doSetTransactionListFilter } from 'lbry-redux'; +import { selectSupportsById, selectTransactionListFilter, doSetTransactionListFilter } from 'lbry-redux'; import TransactionList from './view'; const select = state => ({ rewards: selectClaimedRewardsByTransactionId(state), - myClaims: selectAllMyClaimsByOutpoint(state), + mySupports: selectSupportsById(state), filterSetting: selectTransactionListFilter(state), }); diff --git a/src/ui/component/transactionList/view.jsx b/src/ui/component/transactionList/view.jsx index ae9d63b52..f1e2a6bad 100644 --- a/src/ui/component/transactionList/view.jsx +++ b/src/ui/component/transactionList/view.jsx @@ -14,7 +14,7 @@ type Props = { transactions: Array, rewards: {}, openModal: (id: string, { nout: number, txid: string }) => void, - myClaims: any, + mySupports: {}, filterSetting: string, setTransactionFilter: string => void, }; @@ -41,11 +41,9 @@ class TransactionList extends React.PureComponent { return this.props.filterSetting === TRANSACTIONS.ALL || this.props.filterSetting === transaction.type; } - isRevokeable(txid: string, nout: number) { - const { myClaims } = this.props; - // a claim/support/update is revokable if it - // is in my claim list(claim_list_mine) - return myClaims.has(`${txid}:${nout}`); + isRevokeable(txid: string) { + const { mySupports } = this.props; + return !!mySupports[txid]; } revokeClaim(txid: string, nout: number) { @@ -122,7 +120,7 @@ class TransactionList extends React.PureComponent { key={`${t.txid}:${t.nout}`} transaction={t} reward={rewards && rewards[t.txid]} - isRevokeable={this.isRevokeable(t.txid, t.nout)} + isRevokeable={this.isRevokeable(t.txid)} revokeClaim={this.revokeClaim} /> ))} diff --git a/yarn.lock b/yarn.lock index 1c88b4d11..3f4c01009 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6498,9 +6498,9 @@ lazy-val@^1.0.3, lazy-val@^1.0.4: yargs "^13.2.2" zstd-codec "^0.1.1" -lbry-redux@lbryio/lbry-redux#423123f1c19e61cead67c745d0892a2e4481cb6a: +lbry-redux@lbryio/lbry-redux#c2d02502387e404daca3dd9c62a0aa7c50814ea8: version "0.0.1" - resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/423123f1c19e61cead67c745d0892a2e4481cb6a" + resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/c2d02502387e404daca3dd9c62a0aa7c50814ea8" dependencies: proxy-polyfill "0.1.6" reselect "^3.0.0" From 2e98283d522d86dc89845de88672a3003de3e929 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Fri, 10 May 2019 01:08:48 -0400 Subject: [PATCH 03/26] close phone modal after successful verification --- package.json | 2 +- src/ui/modal/modalPhoneCollection/view.jsx | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index e3fa251b6..ee7ec1aab 100644 --- a/package.json +++ b/package.json @@ -188,7 +188,7 @@ "yarn": "^1.3" }, "lbrySettings": { - "lbrynetDaemonVersion": "0.37.0rc5", + "lbrynetDaemonVersion": "0.37.0rc6", "lbrynetDaemonUrlTemplate": "https://github.com/lbryio/lbry/releases/download/vDAEMONVER/lbrynet-OSNAME.zip", "lbrynetDaemonDir": "static/daemon", "lbrynetDaemonFileName": "lbrynet" diff --git a/src/ui/modal/modalPhoneCollection/view.jsx b/src/ui/modal/modalPhoneCollection/view.jsx index bf2db9d62..f84c96216 100644 --- a/src/ui/modal/modalPhoneCollection/view.jsx +++ b/src/ui/modal/modalPhoneCollection/view.jsx @@ -3,7 +3,7 @@ import React, { Suspense } from 'react'; import { Modal } from 'modal/modal'; import Button from 'component/button'; import UserPhoneVerify from 'component/userPhoneVerify'; -import { withRouter } from 'react-router-dom'; +import { Redirect } from 'react-router'; const LazyUserPhoneNew = React.lazy(() => import(/* webpackChunkName: "userPhoneNew" */ @@ -13,7 +13,7 @@ const LazyUserPhoneNew = React.lazy(() => type Props = { phone: ?number, user: { - phone_number: ?number, + is_identity_verified: boolean, }, closeModal: () => void, history: { push: string => void }, @@ -23,29 +23,30 @@ class ModalPhoneCollection extends React.PureComponent { getTitle() { const { user, phone } = this.props; - if (!user.phone_number && !phone) { + if (!user.is_identity_verified && !phone) { return __('Enter Your Phone Number'); } + return __('Enter The Verification Code'); } renderInner() { - const { closeModal, phone, user, history } = this.props; + const { closeModal, phone, user } = this.props; const cancelButton = )} From c1aa7609bac92277b2629275fc97c22c7b5e4120 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Sat, 11 May 2019 15:06:22 -0400 Subject: [PATCH 11/26] add default thumbnail on channel page --- src/ui/component/channelThumbnail/gerbil.png | Bin 0 -> 4697 bytes src/ui/component/channelThumbnail/view.jsx | 35 ++++++++++++++-- src/ui/scss/component/_channel.scss | 41 +++++++++++++------ 3 files changed, 61 insertions(+), 15 deletions(-) create mode 100644 src/ui/component/channelThumbnail/gerbil.png diff --git a/src/ui/component/channelThumbnail/gerbil.png b/src/ui/component/channelThumbnail/gerbil.png new file mode 100644 index 0000000000000000000000000000000000000000..c19e658d2432ce63e8f550d1a64410f65e2b3b9e GIT binary patch literal 4697 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 bGR*%0KPS-t(jqfO00000NkvXXu0mjf5mEHC literal 0 HcmV?d00001 diff --git a/src/ui/component/channelThumbnail/view.jsx b/src/ui/component/channelThumbnail/view.jsx index 054f1021e..a22c24613 100644 --- a/src/ui/component/channelThumbnail/view.jsx +++ b/src/ui/component/channelThumbnail/view.jsx @@ -1,15 +1,44 @@ // @flow import React from 'react'; +import { parseURI } from 'lbry-redux'; +import classnames from 'classnames'; +import Gerbil from './gerbil.png'; type Props = { thumbnail: ?string, + uri: string, }; function ChannelThumbnail(props: Props) { - const { thumbnail } = props; + const { thumbnail, uri } = props; + + function getColorClass() { + // Generate a random color class based on the first letter of the channel name + const { channelName } = parseURI(uri); + const initializer = channelName.charCodeAt(0) - 65; // will be between 0 and 57 + + let thumbnailColorClass = `channel-thumbnail__default--`; + + switch (true) { + case initializer < 15: + return (thumbnailColorClass += '1'); + case initializer < 30: + return (thumbnailColorClass += '2'); + case initializer < 45: + return (thumbnailColorClass += '3'); + default: + return (thumbnailColorClass += '4'); + } + } + return ( -
- {thumbnail && } +
+ {!thumbnail && } + {thumbnail && }
); } diff --git a/src/ui/scss/component/_channel.scss b/src/ui/scss/component/_channel.scss index 3552b21c1..20b57902a 100644 --- a/src/ui/scss/component/_channel.scss +++ b/src/ui/scss/component/_channel.scss @@ -14,7 +14,7 @@ $metadata-z-index: 1; align-self: flex-start; position: absolute; object-fit: cover; - filter: brightness(40%); + filter: brightness(60%); } .channel__cover, @@ -23,27 +23,48 @@ $metadata-z-index: 1; width: 100%; } -.channel__thumbnail { +.channel-thumbnail { position: absolute; + display: flex; left: var(--spacing-main-padding); height: var(--channel-thumbnail-size); width: var(--channel-thumbnail-size); - background-color: $lbry-gray-3; - background-image: linear-gradient(to right, $lbry-white, $lbry-gray-3 80%); background-size: cover; box-shadow: 0px 8px 40px -3px $lbry-black; } -.channel__thumbnail--custom { +.channel-thumbnail__custom { width: 100%; object-fit: cover; } -.channel__thumbnail, -.channel__thumbnail--custom { +.channel-thumbnail__default { + width: 80%; + height: 80%; + margin-left: auto; + margin-right: auto; + align-self: flex-end; + margin-bottom: -1px; +} + +.channel-thumbnail, +.channel-thumbnail__custom { border-radius: var(--card-radius); } +.channel-thumbnail__default--1 { + background-color: $lbry-indigo-3; +} +.channel-thumbnail__default--2 { + background-color: $lbry-orange-2; +} +.channel-thumbnail__default--3 { + background-color: $lbry-blue-3; +} +.channel-thumbnail__default--4 { + background-color: $lbry-red-1; +} + .channel__primary-info { // Ensure the profile pic/title sit ontop of the default cover background z-index: $metadata-z-index; @@ -63,9 +84,5 @@ $metadata-z-index: 1; font-size: 1.2rem; user-select: all; margin-top: -0.25rem; + color: rgba($lbry-white, 0.75); } - -// .channel__description { -// font-size: 1.3rem; -// margin: var(--spacing-vertical-large) 0; -// } From 53419d29d21f0b9a602d33cd9dbc294671fb95a8 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Sun, 12 May 2019 00:34:17 -0400 Subject: [PATCH 12/26] fix: show message when a user doesn't have any transactions --- src/ui/component/transactionListRecent/view.jsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/ui/component/transactionListRecent/view.jsx b/src/ui/component/transactionListRecent/view.jsx index da6578aa2..fcd979124 100644 --- a/src/ui/component/transactionListRecent/view.jsx +++ b/src/ui/component/transactionListRecent/view.jsx @@ -39,6 +39,12 @@ class TransactionListRecent extends React.PureComponent {
)} + {!fetchingTransactions && !hasTransactions && ( +
+

{__('No transactions... yet.')}

+
+ )} + {hasTransactions && (
From 40a5c4c5f60a421d5518d1bb22d04a51c151f89f Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Sun, 12 May 2019 00:34:43 -0400 Subject: [PATCH 13/26] v0.32.0-rc.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b089763f8..40397ea38 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "LBRY", - "version": "0.32.0-rc.2", + "version": "0.32.0-rc.3", "description": "A browser for the LBRY network, a digital marketplace controlled by its users.", "keywords": [ "lbry" From db67c39ec6b6c285b952a05d53c8003a27718755 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Mon, 13 May 2019 02:05:38 -0400 Subject: [PATCH 14/26] styling cleanup --- package.json | 1 - src/ui/component/common/icon.jsx | 2 +- src/ui/component/fileCard/view.jsx | 5 +---- src/ui/component/fileDetails/view.jsx | 1 - src/ui/component/fileTile/view.jsx | 6 +++--- src/ui/component/navigationHistory/view.jsx | 2 +- src/ui/component/sideBar/view.jsx | 20 +++++++++--------- src/ui/page/channel/view.jsx | 4 ++-- src/ui/page/search/view.jsx | 1 - src/ui/scss/component/_card.scss | 14 ++++++------- src/ui/scss/component/_channel.scss | 8 +++---- src/ui/scss/component/_item-list.scss | 1 - src/ui/scss/component/_search.scss | 7 +------ src/ui/scss/component/_table.scss | 13 ++++++++---- src/ui/scss/init/_vars.scss | 2 +- yarn.lock | 23 ++------------------- 16 files changed, 42 insertions(+), 68 deletions(-) diff --git a/package.json b/package.json index 40397ea38..67c7c5611 100644 --- a/package.json +++ b/package.json @@ -151,7 +151,6 @@ "react-router-dom": "^5.0.0", "react-simplemde-editor": "^4.0.0", "react-toggle": "^4.0.2", - "react-virtualized": "^9.21.0", "redux": "^3.6.0", "redux-persist": "^4.8.0", "redux-persist-transform-compress": "^4.2.0", diff --git a/src/ui/component/common/icon.jsx b/src/ui/component/common/icon.jsx index 79b2365ef..fc13a5851 100644 --- a/src/ui/component/common/icon.jsx +++ b/src/ui/component/common/icon.jsx @@ -25,7 +25,7 @@ class IconComponent extends React.PureComponent { switch (icon) { case ICONS.FEATURED: return __('Featured content. Earn rewards for watching.'); - case ICONS.LOCAL: + case ICONS.DOWNLOAD: return __('This file is downloaded.'); default: return null; diff --git a/src/ui/component/fileCard/view.jsx b/src/ui/component/fileCard/view.jsx index 351d5585e..a2d4e88d7 100644 --- a/src/ui/component/fileCard/view.jsx +++ b/src/ui/component/fileCard/view.jsx @@ -12,7 +12,6 @@ import { openCopyLinkMenu } from 'util/context-menu'; import DateTime from 'component/dateTime'; import { withRouter } from 'react-router-dom'; import { formatLbryUriForWeb } from 'util/uri'; -import get from 'lodash.get'; type Props = { uri: string, @@ -65,7 +64,6 @@ class FileCard extends React.PureComponent { const { claim, fileInfo, - metadata, rewardedContentClaimIds, obscureNsfw, claimIsMine, @@ -106,7 +104,6 @@ class FileCard extends React.PureComponent { const uri = !pending ? normalizeURI(this.props.uri) : this.props.uri; const isRewardContent = claim && rewardedContentClaimIds.includes(claim.claim_id); - const height = claim && claim.height; const handleContextMenu = event => { event.preventDefault(); event.stopPropagation(); @@ -146,7 +143,7 @@ class FileCard extends React.PureComponent { {isRewardContent && } {isSubscribed && } {claimIsMine && } - {!claimIsMine && fileInfo && } + {!claimIsMine && fileInfo && } {isNew && {__('NEW')}}
diff --git a/src/ui/component/fileDetails/view.jsx b/src/ui/component/fileDetails/view.jsx index 2ee12f074..7645d1f9d 100644 --- a/src/ui/component/fileDetails/view.jsx +++ b/src/ui/component/fileDetails/view.jsx @@ -92,7 +92,6 @@ class FileDetails extends PureComponent { {__('Downloaded to')} {': '} {isChannel ? ( diff --git a/src/ui/scss/component/_channel.scss b/src/ui/scss/component/_channel.scss index 0f811d055..a67cf3235 100644 --- a/src/ui/scss/component/_channel.scss +++ b/src/ui/scss/component/_channel.scss @@ -82,7 +82,6 @@ $metadata-z-index: 1; .channel__url { font-size: 1.2rem; - user-select: all; margin-top: -0.25rem; color: rgba($lbry-white, 0.75); } From 4212978dfee389bb12cf7cf24ca8424750746551 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Mon, 13 May 2019 02:37:54 -0400 Subject: [PATCH 16/26] update sdk to 0.37.0rc7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 67c7c5611..1960c648f 100644 --- a/package.json +++ b/package.json @@ -187,7 +187,7 @@ "yarn": "^1.3" }, "lbrySettings": { - "lbrynetDaemonVersion": "0.37.0rc6", + "lbrynetDaemonVersion": "0.37.0rc7", "lbrynetDaemonUrlTemplate": "https://github.com/lbryio/lbry/releases/download/vDAEMONVER/lbrynet-OSNAME.zip", "lbrynetDaemonDir": "static/daemon", "lbrynetDaemonFileName": "lbrynet" From e3342eb34d0ada4a673902a9f8742f1f7eb687a4 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Mon, 13 May 2019 02:43:07 -0400 Subject: [PATCH 17/26] v0.32.0-rc.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1960c648f..5fa221ef2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "LBRY", - "version": "0.32.0-rc.3", + "version": "0.32.0-rc.4", "description": "A browser for the LBRY network, a digital marketplace controlled by its users.", "keywords": [ "lbry" From 467cbda5c66219200ea6e48547a3cf1d3ebe33fc Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Mon, 13 May 2019 22:10:41 -0400 Subject: [PATCH 18/26] add comments pointing to primary defintion of WEBPACK_PORT --- src/platforms/electron/devServer.js | 6 +++--- static/index.dev.html | 4 ++++ webpack.base.config.js | 5 +++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/platforms/electron/devServer.js b/src/platforms/electron/devServer.js index b9d87ae9f..85ef85696 100644 --- a/src/platforms/electron/devServer.js +++ b/src/platforms/electron/devServer.js @@ -5,8 +5,8 @@ const middleware = require('webpack-dev-middleware'); const express = require('express'); const app = express(); -// Ideally this would come from the same source that sets this port in webpack.web.config.js -// but we can't inject a variable into this file because it is not being touched by webpack +// Primary definition for this is in webpack.web.config.js +// We can't access it here because webpack isn't running on this file const WEBPACK_PORT = 9090; console.log( @@ -42,7 +42,7 @@ app.use(renderInstance); app.use(express.static('dist/electron/static')); app.listen(WEBPACK_PORT, () => { - console.log(chalk.yellow.bold('Renderer listening on port 9090 (still compiling)')); + console.log(chalk.yellow.bold(`Renderer listening on port ${WEBPACK_PORT} (still compiling)`)); }); mainInstance.waitUntilValid(() => console.log(chalk.green(`${chalk.underline('main')} compilation complete.`))); diff --git a/static/index.dev.html b/static/index.dev.html index e36d3ec63..88166d44b 100644 --- a/static/index.dev.html +++ b/static/index.dev.html @@ -7,6 +7,10 @@
+ diff --git a/webpack.base.config.js b/webpack.base.config.js index 4610f096b..8d67e6c70 100644 --- a/webpack.base.config.js +++ b/webpack.base.config.js @@ -12,6 +12,11 @@ const { ifProduction } = getIfUtils(NODE_ENV); const UI_ROOT = path.resolve(__dirname, 'src/ui/'); const STATIC_ROOT = path.resolve(__dirname, 'static/'); const DIST_ROOT = path.resolve(__dirname, 'dist/'); + +// There are a two other uses of this value that can't access it from webpack +// They exist in +// src/platforms/electron/devServer.js +// static/index.dev.html const WEBPACK_PORT = 9090; console.log(ifProduction('production', 'development')); From b7f5ebf994814b2833a9eca91573e9b7d14d7a19 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Mon, 13 May 2019 22:51:33 -0400 Subject: [PATCH 19/26] move backup page inside of help --- src/ui/component/router/view.jsx | 2 - src/ui/component/sideBar/view.jsx | 5 -- .../walletBackup}/index.js | 4 +- src/ui/component/walletBackup/view.jsx | 66 +++++++++++++++++++ src/ui/page/help/view.jsx | 6 +- 5 files changed, 73 insertions(+), 10 deletions(-) rename src/ui/{page/backup => component/walletBackup}/index.js (69%) create mode 100644 src/ui/component/walletBackup/view.jsx diff --git a/src/ui/component/router/view.jsx b/src/ui/component/router/view.jsx index 47e2fbf86..e60197c1c 100644 --- a/src/ui/component/router/view.jsx +++ b/src/ui/component/router/view.jsx @@ -14,7 +14,6 @@ import FileListPublished from 'page/fileListPublished'; import TransactionHistoryPage from 'page/transactionHistory'; import AuthPage from 'page/auth'; import InvitePage from 'page/invite'; -import BackupPage from 'page/backup'; import SubscriptionsPage from 'page/subscriptions'; import SearchPage from 'page/search'; import UserHistoryPage from 'page/userHistory'; @@ -39,7 +38,6 @@ export default function AppRouter() { - diff --git a/src/ui/component/sideBar/view.jsx b/src/ui/component/sideBar/view.jsx index c055af4b6..01740b4aa 100644 --- a/src/ui/component/sideBar/view.jsx +++ b/src/ui/component/sideBar/view.jsx @@ -91,11 +91,6 @@ class SideBar extends React.PureComponent { { ...buildLink(PAGES.SETTINGS, __('Settings'), ICONS.SETTINGS), }, - // @if TARGET='app' - { - ...buildLink(PAGES.BACKUP, __('Backup'), ICONS.BACKUP), - }, - // @endif ].map(renderLink)} diff --git a/src/ui/page/backup/index.js b/src/ui/component/walletBackup/index.js similarity index 69% rename from src/ui/page/backup/index.js rename to src/ui/component/walletBackup/index.js index df4f971d8..5d0057d8b 100644 --- a/src/ui/page/backup/index.js +++ b/src/ui/component/walletBackup/index.js @@ -1,9 +1,9 @@ import { connect } from 'react-redux'; import { selectDaemonSettings } from 'redux/selectors/settings'; -import BackupPage from './view'; +import WalletBackup from './view'; const select = state => ({ daemonSettings: selectDaemonSettings(state), }); -export default connect(select)(BackupPage); +export default connect(select)(WalletBackup); diff --git a/src/ui/component/walletBackup/view.jsx b/src/ui/component/walletBackup/view.jsx new file mode 100644 index 000000000..322cf0dec --- /dev/null +++ b/src/ui/component/walletBackup/view.jsx @@ -0,0 +1,66 @@ +// @flow +import * as React from 'react'; +import Button from 'component/button'; + +type Props = { + daemonSettings: { + wallet_dir: ?string, + }, +}; + +class WalletBackup extends React.PureComponent { + render() { + const { daemonSettings } = this.props; + const { wallet_dir: lbryumWalletDir } = daemonSettings; + + const noDaemonSettings = Object.keys(daemonSettings).length === 0; + + return ( +
+ {noDaemonSettings ? ( +
+

{__('Failed to load settings.')}

+
+ ) : ( + +
+

{__('Backup Your LBRY Credits')}

+ +

+ {__( + 'Your LBRY credits are controllable by you and only you, via wallet file(s) stored locally on your computer.' + )} +

+
+ +
+

+ {__( + 'Currently, there is no automatic wallet backup. If you lose access to these files, you will lose your credits permanently.' + )} +

+

+ {__( + 'However, it is fairly easy to back up manually. To backup your wallet, make a copy of the folder listed below:' + )} +

+

{lbryumWalletDir}

+

+ {__( + 'Access to these files are equivalent to having access to your credits. Keep any copies you make of your wallet in a secure place.' + )} +

+

+ For more details on backing up and best practices,{' '} +

+
+ )} +
+ ); + } +} + +export default WalletBackup; diff --git a/src/ui/page/help/view.jsx b/src/ui/page/help/view.jsx index b7fdde058..e71079928 100644 --- a/src/ui/page/help/view.jsx +++ b/src/ui/page/help/view.jsx @@ -2,7 +2,6 @@ // @flow import * as icons from 'constants/icons'; import * as React from 'react'; -import classnames from 'classnames'; // @if TARGET='app' import { shell } from 'electron'; // @endif @@ -10,6 +9,7 @@ import { Lbry } from 'lbry-redux'; import Native from 'native'; import Button from 'component/button'; import Page from 'component/page'; +import BackupSection from 'component/walletBackup'; type DeamonSettings = { data_dir: string | any, @@ -194,6 +194,10 @@ class HelpPage extends React.PureComponent { + {/* @if TARGET='app' */} + + {/* @endif */} +

{__('About')}

From 03ebcd953d88cab229c0cf940a3ea1854950c37f Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Mon, 13 May 2019 22:53:04 -0400 Subject: [PATCH 20/26] simplify default channel color creation --- src/ui/component/channelThumbnail/view.jsx | 24 ++----- src/ui/page/backup/view.jsx | 73 ---------------------- src/ui/scss/component/_card.scss | 2 - src/ui/scss/component/_channel.scss | 8 +-- 4 files changed, 9 insertions(+), 98 deletions(-) delete mode 100644 src/ui/page/backup/view.jsx diff --git a/src/ui/component/channelThumbnail/view.jsx b/src/ui/component/channelThumbnail/view.jsx index a22c24613..d52df8292 100644 --- a/src/ui/component/channelThumbnail/view.jsx +++ b/src/ui/component/channelThumbnail/view.jsx @@ -12,29 +12,15 @@ type Props = { function ChannelThumbnail(props: Props) { const { thumbnail, uri } = props; - function getColorClass() { - // Generate a random color class based on the first letter of the channel name - const { channelName } = parseURI(uri); - const initializer = channelName.charCodeAt(0) - 65; // will be between 0 and 57 - - let thumbnailColorClass = `channel-thumbnail__default--`; - - switch (true) { - case initializer < 15: - return (thumbnailColorClass += '1'); - case initializer < 30: - return (thumbnailColorClass += '2'); - case initializer < 45: - return (thumbnailColorClass += '3'); - default: - return (thumbnailColorClass += '4'); - } - } + // Generate a random color class based on the first letter of the channel name + const { channelName } = parseURI(uri); + const initializer = channelName.charCodeAt(0) - 65; // will be between 0 and 57 + const className = `channel-thumbnail__default--${initializer % 4}`; return (
{!thumbnail && } diff --git a/src/ui/page/backup/view.jsx b/src/ui/page/backup/view.jsx deleted file mode 100644 index 4ee11394a..000000000 --- a/src/ui/page/backup/view.jsx +++ /dev/null @@ -1,73 +0,0 @@ -// @flow -import * as React from 'react'; -import Button from 'component/button'; -import Page from 'component/page'; - -type Props = { - daemonSettings: { - wallet_dir: ?string, - }, -}; - -class BackupPage extends React.PureComponent { - render() { - const { daemonSettings } = this.props; - const { wallet_dir: lbryumWalletDir } = daemonSettings; - - const noDaemonSettings = Object.keys(daemonSettings).length === 0; - - return ( - -
- {noDaemonSettings ? ( -
-

{__('Failed to load settings.')}

-
- ) : ( - -
-

{__('Backup Your LBRY Credits')}

- -

- {__( - 'Your LBRY credits are controllable by you and only you, via wallet file(s) stored locally on your computer.' - )} -

-
- -
-

- {__( - 'Currently, there is no automatic wallet backup. If you lose access to these files, you will lose your credits permanently.' - )} -

-

- {__( - 'However, it is fairly easy to back up manually. To backup your wallet, make a copy of the folder listed below:' - )} -

-

{lbryumWalletDir}

-

- {__( - 'Access to these files are equivalent to having access to your credits. Keep any copies you make of your wallet in a secure place.' - )} -

-

- For more details on backing up and best practices,{' '} -

-
- )} -
-
- ); - } -} - -export default BackupPage; diff --git a/src/ui/scss/component/_card.scss b/src/ui/scss/component/_card.scss index 7c8e33f09..ab177228c 100644 --- a/src/ui/scss/component/_card.scss +++ b/src/ui/scss/component/_card.scss @@ -1,6 +1,5 @@ .card { background-color: $lbry-white; - border: 1px solid $lbry-gray-1; margin-bottom: var(--spacing-vertical-xlarge); position: relative; border-radius: var(--card-radius); @@ -8,7 +7,6 @@ html[data-mode='dark'] & { background-color: rgba($lbry-white, 0.1); - border-color: rgba($lbry-white, 0.1); box-shadow: var(--card-box-shadow) darken($lbry-gray-1, 80%); } } diff --git a/src/ui/scss/component/_channel.scss b/src/ui/scss/component/_channel.scss index a67cf3235..fcbadeaf1 100644 --- a/src/ui/scss/component/_channel.scss +++ b/src/ui/scss/component/_channel.scss @@ -52,16 +52,16 @@ $metadata-z-index: 1; border-radius: var(--card-radius); } -.channel-thumbnail__default--1 { +.channel-thumbnail__default--0 { background-color: $lbry-indigo-3; } -.channel-thumbnail__default--2 { +.channel-thumbnail__default--1 { background-color: $lbry-orange-2; } -.channel-thumbnail__default--3 { +.channel-thumbnail__default--2 { background-color: $lbry-blue-3; } -.channel-thumbnail__default--4 { +.channel-thumbnail__default--3 { background-color: $lbry-red-1; } From a8cacd13ae8906973c8ca4f707a3d6562be4ac5f Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Tue, 14 May 2019 00:52:51 -0400 Subject: [PATCH 21/26] use supportsByOutpoint --- package.json | 2 +- src/ui/component/transactionList/index.js | 4 ++-- src/ui/component/transactionList/view.jsx | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 5fa221ef2..0ccb87c14 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ "jsmediatags": "^3.8.1", "json-loader": "^0.5.4", "lbry-format": "https://github.com/lbryio/lbry-format.git", - "lbry-redux": "lbryio/lbry-redux#c8126ab21792d7a85e1123a2363af285a0263654", + "lbry-redux": "lbryio/lbry-redux#02f6918238110726c0b3b4248c61a84ac0b969e3", "lbryinc": "lbryio/lbryinc#43d382d9b74d396a581a74d87e4c53105e04f845", "lint-staged": "^7.0.2", "localforage": "^1.7.1", diff --git a/src/ui/component/transactionList/index.js b/src/ui/component/transactionList/index.js index c47ed970d..102a7858e 100644 --- a/src/ui/component/transactionList/index.js +++ b/src/ui/component/transactionList/index.js @@ -3,7 +3,7 @@ import { selectClaimedRewardsByTransactionId } from 'lbryinc'; import { doOpenModal } from 'redux/actions/app'; import { selectAllMyClaimsByOutpoint, - selectSupportsById, + selectSupportsByOutpoint, selectTransactionListFilter, doSetTransactionListFilter, } from 'lbry-redux'; @@ -11,7 +11,7 @@ import TransactionList from './view'; const select = state => ({ rewards: selectClaimedRewardsByTransactionId(state), - mySupports: selectSupportsById(state), + mySupports: selectSupportsByOutpoint(state), myClaims: selectAllMyClaimsByOutpoint(state), filterSetting: selectTransactionListFilter(state), }); diff --git a/src/ui/component/transactionList/view.jsx b/src/ui/component/transactionList/view.jsx index 14b3ae9ac..35ad1c861 100644 --- a/src/ui/component/transactionList/view.jsx +++ b/src/ui/component/transactionList/view.jsx @@ -43,8 +43,9 @@ class TransactionList extends React.PureComponent { } isRevokeable(txid: string, nout: number) { + const outpoint = `${txid}:${nout}`; const { mySupports, myClaims } = this.props; - return !!mySupports[txid] || myClaims.has(`${txid}:${nout}`); + return !!mySupports[outpoint] || myClaims.has(outpoint); } revokeClaim(txid: string, nout: number) { From 7bb34fc7b5ee3235d9be8ec75d560d02ee2e6207 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Tue, 14 May 2019 01:12:24 -0400 Subject: [PATCH 22/26] maintain channel page number on tab change --- src/ui/page/channel/index.js | 2 ++ src/ui/page/channel/view.jsx | 10 +++++++--- yarn.lock | 4 ++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/ui/page/channel/index.js b/src/ui/page/channel/index.js index 0974411c7..a4715823e 100644 --- a/src/ui/page/channel/index.js +++ b/src/ui/page/channel/index.js @@ -4,6 +4,7 @@ import { makeSelectTitleForUri, makeSelectThumbnailForUri, makeSelectCoverForUri, + selectCurrentChannelPage, } from 'lbry-redux'; import ChannelPage from './view'; @@ -12,6 +13,7 @@ const select = (state, props) => ({ thumbnail: makeSelectThumbnailForUri(props.uri)(state), cover: makeSelectCoverForUri(props.uri)(state), channelIsMine: makeSelectClaimIsMine(props.uri)(state), + page: selectCurrentChannelPage(state), }); export default connect( diff --git a/src/ui/page/channel/view.jsx b/src/ui/page/channel/view.jsx index 43b2fa3d3..8cc4ca472 100644 --- a/src/ui/page/channel/view.jsx +++ b/src/ui/page/channel/view.jsx @@ -19,13 +19,14 @@ type Props = { title: ?string, cover: ?string, thumbnail: ?string, + page: number, location: { search: string }, history: { push: string => void }, match: { params: { attribute: ?string } }, }; function ChannelPage(props: Props) { - const { uri, title, cover, history, location } = props; + const { uri, title, cover, history, location, page } = props; const { channelName, claimName, claimId } = parseURI(uri); const { search } = location; const urlParams = new URLSearchParams(search); @@ -37,11 +38,14 @@ function ChannelPage(props: Props) { const tabIndex = currentView === ABOUT_PAGE ? 1 : 0; const onTabChange = newTabIndex => { let url = formatLbryUriForWeb(uri); + let search = '?'; if (newTabIndex !== 0) { - url += `?${PAGE_VIEW_QUERY}=${ABOUT_PAGE}`; + search += `${PAGE_VIEW_QUERY}=${ABOUT_PAGE}`; + } else { + search += `page=${page}`; } - history.push(url); + history.push(`${url}${search}`); }; return ( diff --git a/yarn.lock b/yarn.lock index 78a16a524..e5a0fd298 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6491,9 +6491,9 @@ lazy-val@^1.0.3, lazy-val@^1.0.4: yargs "^13.2.2" zstd-codec "^0.1.1" -lbry-redux@lbryio/lbry-redux#c8126ab21792d7a85e1123a2363af285a0263654: +lbry-redux@lbryio/lbry-redux#02f6918238110726c0b3b4248c61a84ac0b969e3: version "0.0.1" - resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/c8126ab21792d7a85e1123a2363af285a0263654" + resolved "https://codeload.github.com/lbryio/lbry-redux/tar.gz/02f6918238110726c0b3b4248c61a84ac0b969e3" dependencies: proxy-polyfill "0.1.6" reselect "^3.0.0" From eba15030bb4faebbd88d16f686cbd1dd49ac3bc9 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Tue, 14 May 2019 01:19:29 -0400 Subject: [PATCH 23/26] update sdk --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0ccb87c14..eed69dbd9 100644 --- a/package.json +++ b/package.json @@ -187,7 +187,7 @@ "yarn": "^1.3" }, "lbrySettings": { - "lbrynetDaemonVersion": "0.37.0rc7", + "lbrynetDaemonVersion": "0.37.0", "lbrynetDaemonUrlTemplate": "https://github.com/lbryio/lbry/releases/download/vDAEMONVER/lbrynet-OSNAME.zip", "lbrynetDaemonDir": "static/daemon", "lbrynetDaemonFileName": "lbrynet" From 5840f8ef58373e398eb3443fc73d8f2fca2cd62b Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Tue, 14 May 2019 01:22:51 -0400 Subject: [PATCH 24/26] v0.32.0-rc.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index eed69dbd9..6559cca2b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "LBRY", - "version": "0.32.0-rc.4", + "version": "0.32.0-rc.5", "description": "A browser for the LBRY network, a digital marketplace controlled by its users.", "keywords": [ "lbry" From 5c41ac7a6d7402c473837b18c02edcfd2f5ce981 Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Tue, 14 May 2019 10:54:04 -0400 Subject: [PATCH 25/26] make share modal labels easier to read --- src/ui/component/socialShare/view.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ui/component/socialShare/view.jsx b/src/ui/component/socialShare/view.jsx index 669589ac7..fbbf014be 100644 --- a/src/ui/component/socialShare/view.jsx +++ b/src/ui/component/socialShare/view.jsx @@ -27,7 +27,7 @@ class SocialShare extends React.PureComponent { render() { const { claim, isChannel } = this.props; - const { claim_id: claimId, name: claimName, channel_name: channelName, value } = claim; + const { claim_id: claimId, name: claimName, channel_name: channelName } = claim; const { speechShareable, onDone } = this.props; const channelClaimId = claim.signing_channel && claim.signing_channel.claim_id; @@ -70,7 +70,7 @@ class SocialShare extends React.PureComponent { {speechShareable && (
- +
@@ -98,7 +98,7 @@ class SocialShare extends React.PureComponent {
)}
- +
From 304a399d3e6effd8147f94398c9e3a331978449a Mon Sep 17 00:00:00 2001 From: Sean Yesmunt Date: Tue, 14 May 2019 11:44:51 -0400 Subject: [PATCH 26/26] v0.32.0-rc.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6559cca2b..051580488 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "LBRY", - "version": "0.32.0-rc.5", + "version": "0.32.0-rc.6", "description": "A browser for the LBRY network, a digital marketplace controlled by its users.", "keywords": [ "lbry"