From c65dfddfe181c074fd46845b24ee437cb90653a3 Mon Sep 17 00:00:00 2001 From: Thomas Zarebczan Date: Wed, 6 Feb 2019 03:04:55 -0500 Subject: [PATCH 01/15] maint: 0.31.0 changes Changes to account for 0.31.0, WIP --- package.json | 2 +- src/renderer/component/fileDetails/view.jsx | 6 +++++- src/renderer/page/file/view.jsx | 7 +++---- src/renderer/page/settings/view.jsx | 6 +++--- src/renderer/redux/actions/publish.js | 12 +++--------- src/renderer/redux/actions/settings.js | 7 +++++-- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 595e8be7b..10912e2cc 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,7 @@ "yarn": "^1.3" }, "lbrySettings": { - "lbrynetDaemonVersion": "0.30.4", + "lbrynetDaemonVersion": "0.31.0rc5", "lbrynetDaemonUrlTemplate": "https://github.com/lbryio/lbry/releases/download/vDAEMONVER/lbrynet-OSNAME.zip", "lbrynetDaemonDir": "static/daemon", "lbrynetDaemonFileName": "lbrynet" diff --git a/src/renderer/component/fileDetails/view.jsx b/src/renderer/component/fileDetails/view.jsx index aa2eb9f5b..dba36a95a 100644 --- a/src/renderer/component/fileDetails/view.jsx +++ b/src/renderer/component/fileDetails/view.jsx @@ -62,7 +62,11 @@ class FileDetails extends PureComponent { const { description, language, license } = metadata; const mediaType = contentType || 'unknown'; - const downloadPath = fileInfo ? path.normalize(fileInfo.download_path) : null; + let downloadPath = + fileInfo && fileInfo.download_path ? path.normalize(fileInfo.download_path) : null; + // We should check if the file exists, and then show a better message, wtih an option to redownload. + if (fileInfo && fileInfo.download_path === null) + downloadPath = 'File may have been deleted or moved.'; return ( diff --git a/src/renderer/page/file/view.jsx b/src/renderer/page/file/view.jsx index 56bcd5392..9ae5a7a85 100644 --- a/src/renderer/page/file/view.jsx +++ b/src/renderer/page/file/view.jsx @@ -58,15 +58,14 @@ class FilePage extends React.Component { ]; componentDidMount() { + // eslint-disable-next-line no-unused-vars const { uri, fileInfo, fetchFileInfo, fetchCostInfo, setViewed, isSubscribed } = this.props; if (isSubscribed) { this.removeFromSubscriptionNotifications(); } - - if (fileInfo === undefined) { - fetchFileInfo(uri); - } + // always refresh file info when entering file page + fetchFileInfo(uri); // See https://github.com/lbryio/lbry-desktop/pull/1563 for discussion fetchCostInfo(uri); diff --git a/src/renderer/page/settings/view.jsx b/src/renderer/page/settings/view.jsx index bb821cdd7..af72f882f 100644 --- a/src/renderer/page/settings/view.jsx +++ b/src/renderer/page/settings/view.jsx @@ -13,7 +13,7 @@ export type Price = { }; type DaemonSettings = { - download_directory: string, + download_dir: string, disable_max_key_fee: boolean, share_usage_data: boolean, max_key_fee?: Price, @@ -80,7 +80,7 @@ class SettingsPage extends React.PureComponent { } onDownloadDirChange(newDirectory: string) { - this.setDaemonSetting('download_directory', newDirectory); + this.setDaemonSetting('download_dir', newDirectory); } onKeyFeeChange(newValue: Price) { @@ -190,7 +190,7 @@ class SettingsPage extends React.PureComponent {
diff --git a/src/renderer/redux/actions/publish.js b/src/renderer/redux/actions/publish.js index feda7b504..7c7d556e4 100644 --- a/src/renderer/redux/actions/publish.js +++ b/src/renderer/redux/actions/publish.js @@ -1,6 +1,6 @@ // @flow import type { Dispatch, GetState } from 'types/redux'; -import type { Source, Metadata } from 'types/claim'; +import type { Metadata } from 'types/claim'; import type { UpdatePublishFormData, UpdatePublishFormAction, @@ -226,7 +226,6 @@ export const doPublish = (params: PublishParams) => ( contentIsFree, price, uri, - sources, } = params; // get the claim id from the channel name, we will use that instead @@ -250,7 +249,6 @@ export const doPublish = (params: PublishParams) => ( bid: ?number, metadata: ?Metadata, file_path?: string, - sources?: Source, } = { name, channel_id: channelId, @@ -264,12 +262,8 @@ export const doPublish = (params: PublishParams) => ( amount: creditsToString(fee.amount), }; } - - if (filePath) { - publishPayload.file_path = filePath; - } else { - publishPayload.sources = sources; - } + // only pass file on new uploads, not metadata only edits. + if (filePath) publishPayload.file_path = filePath; dispatch({ type: ACTIONS.PUBLISH_START }); diff --git a/src/renderer/redux/actions/settings.js b/src/renderer/redux/actions/settings.js index 08a4626ae..5ce87f9bc 100644 --- a/src/renderer/redux/actions/settings.js +++ b/src/renderer/redux/actions/settings.js @@ -22,8 +22,10 @@ export function doFetchDaemonSettings() { export function doSetDaemonSetting(key, value) { return dispatch => { - const newSettings = {}; - newSettings[key] = value; + const newSettings = { + key, + value, + }; Lbry.settings_set(newSettings).then(newSettings); Lbry.settings_get().then(settings => { analytics.toggle(settings.share_usage_data, true); @@ -71,6 +73,7 @@ export function doUpdateIsNight() { export function doUpdateIsNightAsync() { return dispatch => { dispatch(doUpdateIsNight()); + // eslint-disable-next-line no-unused-vars const updateIsNightInterval = setInterval( () => dispatch(doUpdateIsNight()), UPDATE_IS_NIGHT_INTERVAL -- 2.45.3 From ad24e275288d81bc52fc881564aac5393c80c476 Mon Sep 17 00:00:00 2001 From: Derek Yesmunt Date: Wed, 6 Feb 2019 21:04:19 -0500 Subject: [PATCH 02/15] Dark mode inverse button css --- src/renderer/scss/component/_button.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/renderer/scss/component/_button.scss b/src/renderer/scss/component/_button.scss index 718bc186f..974c19856 100644 --- a/src/renderer/scss/component/_button.scss +++ b/src/renderer/scss/component/_button.scss @@ -124,6 +124,7 @@ html[data-theme='dark'] & { background-color: rgba($lbry-white, 0.1); + color: $lbry-white; } } -- 2.45.3 From 9542e5b52056c98d7c36a4a4016709c370291b41 Mon Sep 17 00:00:00 2001 From: Derek Yesmunt Date: Wed, 6 Feb 2019 21:20:07 -0500 Subject: [PATCH 03/15] update changelog --- CHANGELOG.md | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 57136eb77..13e6566dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,17 +4,28 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -## [0.28.0] - Unreleased +## Unreleased ### Added -- Support for sandbox games and applications - ```lbry://@OpenSourceGames``` ([#2178](https://github.com/lbryio/lbry-desktop/pull/2178)) +### Changed + +### Fixed + +- Inverse button readability on hover ([#2271](https://github.com/lbryio/lbry-desktop/pull/2271) + +## [0.28.0] - 2019-2-5 + +### Added + +- Support for sandbox games and applications - `lbry://@OpenSourceGames` ([#2178](https://github.com/lbryio/lbry-desktop/pull/2178)) - Call to action on invite page during first run ([#2221](https://github.com/lbryio/lbry-desktop/pull/2221)) - Responsive related content list for smaller screens ([#2226](https://github.com/lbryio/lbry-desktop/pull/2226)) - Autoplay content in list of related files (experimental feature in settings) ([#2235](https://github.com/lbryio/lbry-desktop/pull/2235)) - Support for back/forward mouse navigation on Windows ([#2250](https://github.com/lbryio/lbry-desktop/pull/2250)) ### Changed + - Dark theme as default ([#2210](https://github.com/lbryio/lbry-desktop/pull/2210)) - Invite page improvements including increase of reward to 20 LBC / 10 redemptions ([#2256](https://github.com/lbryio/lbry-desktop/pull/2256)) - Less intrusive first run flow, email collection ([#2210](https://github.com/lbryio/lbry-desktop/pull/2210)) @@ -28,14 +39,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Video position on previously viewed files ([#2240](https://github.com/lbryio/lbry-desktop/pull/2240)) - Pass download error details on modal ([#2255](https://github.com/lbryio/lbry-desktop/pull/2255)) -## [0.27.1] - 2018-01-22 +## [0.27.1] - 2019-01-22 ### Fixed - Channel name overlap on homepage when screen size is small - Spacing issue/typo on email collection modal -## [0.27.0] - 2018-01-15 +## [0.27.0] - 2019-01-15 ### Added -- 2.45.3 From 62fd918587fb16eb14737efee18f74f57d57837f Mon Sep 17 00:00:00 2001 From: Thomas Zarebczan Date: Thu, 7 Feb 2019 01:51:16 -0500 Subject: [PATCH 04/15] maint: key fee settings + bump SDK Disable setting is no longer part of SDK settings so I moved it into local storage. Also moved in the max fee setting since it's now cleared out from the SDK. --- package.json | 2 +- src/renderer/constants/settings.js | 2 ++ src/renderer/page/settings/index.js | 2 ++ src/renderer/page/settings/view.jsx | 26 ++++++++++++++----------- src/renderer/redux/actions/settings.js | 2 +- src/renderer/redux/reducers/settings.js | 5 +++++ 6 files changed, 26 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 10912e2cc..8cf408b46 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,7 @@ "yarn": "^1.3" }, "lbrySettings": { - "lbrynetDaemonVersion": "0.31.0rc5", + "lbrynetDaemonVersion": "0.31.0", "lbrynetDaemonUrlTemplate": "https://github.com/lbryio/lbry/releases/download/vDAEMONVER/lbrynet-OSNAME.zip", "lbrynetDaemonDir": "static/daemon", "lbrynetDaemonFileName": "lbrynet" diff --git a/src/renderer/constants/settings.js b/src/renderer/constants/settings.js index a00c97a9b..2e9c49a9f 100644 --- a/src/renderer/constants/settings.js +++ b/src/renderer/constants/settings.js @@ -17,3 +17,5 @@ export const AUTOPLAY = 'autoplay'; export const RESULT_COUNT = 'resultCount'; export const OS_NOTIFICATIONS_ENABLED = 'osNotificationsEnabled'; export const AUTO_DOWNLOAD = 'autoDownload'; +export const DISABLE_MAX_KEY_FEE = 'disableMaxKeyFee'; +export const LOCAL_MAX_KEY_FEE = 'localMaxKeyFee'; diff --git a/src/renderer/page/settings/index.js b/src/renderer/page/settings/index.js index 6d178b368..46ee4e029 100644 --- a/src/renderer/page/settings/index.js +++ b/src/renderer/page/settings/index.js @@ -31,6 +31,8 @@ const select = state => ({ walletEncrypted: selectWalletIsEncrypted(state), osNotificationsEnabled: selectosNotificationsEnabled(state), autoDownload: makeSelectClientSetting(settings.AUTO_DOWNLOAD)(state), + disableMaxKeyFee: makeSelectClientSetting(settings.DISABLE_MAX_KEY_FEE)(state), + localMaxKeyFee: makeSelectClientSetting(settings.LOCAL_MAX_KEY_FEE)(state), }); const perform = dispatch => ({ diff --git a/src/renderer/page/settings/view.jsx b/src/renderer/page/settings/view.jsx index af72f882f..6037653fc 100644 --- a/src/renderer/page/settings/view.jsx +++ b/src/renderer/page/settings/view.jsx @@ -14,7 +14,6 @@ export type Price = { type DaemonSettings = { download_dir: string, - disable_max_key_fee: boolean, share_usage_data: boolean, max_key_fee?: Price, }; @@ -38,6 +37,8 @@ type Props = { updateWalletStatus: () => void, walletEncrypted: boolean, osNotificationsEnabled: boolean, + disableMaxKeyFee: boolean, + localMaxKeyFee: Price, }; type State = { @@ -54,6 +55,7 @@ class SettingsPage extends React.PureComponent { (this: any).onDownloadDirChange = this.onDownloadDirChange.bind(this); (this: any).onKeyFeeChange = this.onKeyFeeChange.bind(this); + (this: any).onKeyFeeDisableChange = this.onKeyFeeDisableChange.bind(this); (this: any).onInstantPurchaseMaxChange = this.onInstantPurchaseMaxChange.bind(this); (this: any).onShowNsfwChange = this.onShowNsfwChange.bind(this); (this: any).onShareDataChange = this.onShareDataChange.bind(this); @@ -84,11 +86,14 @@ class SettingsPage extends React.PureComponent { } onKeyFeeChange(newValue: Price) { + this.props.setClientSetting(SETTINGS.LOCAL_MAX_KEY_FEE, newValue); this.setDaemonSetting('max_key_fee', newValue); } onKeyFeeDisableChange(isDisabled: boolean) { - this.setDaemonSetting('disable_max_key_fee', isDisabled); + this.props.setClientSetting(SETTINGS.DISABLE_MAX_KEY_FEE, isDisabled); + // null is default value passed to clear key fee + if (isDisabled) this.setDaemonSetting('max_key_fee', ''); } onThemeChange(event: SyntheticInputEvent<*>) { @@ -138,7 +143,7 @@ class SettingsPage extends React.PureComponent { this.props.setClientSetting(SETTINGS.OS_NOTIFICATIONS_ENABLED, event.target.checked); } - setDaemonSetting(name: string, value: boolean | string | Price) { + setDaemonSetting(name: string, value: boolean | string | Price | ''): void { this.props.setDaemonSetting(name, value); } @@ -168,6 +173,8 @@ class SettingsPage extends React.PureComponent { walletEncrypted, osNotificationsEnabled, autoDownload, + disableMaxKeyFee, + localMaxKeyFee, } = this.props; const noDaemonSettings = !daemonSettings || Object.keys(daemonSettings).length === 0; @@ -210,7 +217,7 @@ class SettingsPage extends React.PureComponent { { this.onKeyFeeDisableChange(true); @@ -219,23 +226,20 @@ class SettingsPage extends React.PureComponent { { this.onKeyFeeDisableChange(false); + this.onKeyFeeChange(localMaxKeyFee); }} - checked={!daemonSettings.disable_max_key_fee} postfix={__('Choose limit')} /> - {!daemonSettings.disable_max_key_fee && ( + {!disableMaxKeyFee && ( )} diff --git a/src/renderer/redux/actions/settings.js b/src/renderer/redux/actions/settings.js index 5ce87f9bc..ab3d9e907 100644 --- a/src/renderer/redux/actions/settings.js +++ b/src/renderer/redux/actions/settings.js @@ -24,7 +24,7 @@ export function doSetDaemonSetting(key, value) { return dispatch => { const newSettings = { key, - value, + value: value || null, }; Lbry.settings_set(newSettings).then(newSettings); Lbry.settings_get().then(settings => { diff --git a/src/renderer/redux/reducers/settings.js b/src/renderer/redux/reducers/settings.js index e61542429..49ded0603 100644 --- a/src/renderer/redux/reducers/settings.js +++ b/src/renderer/redux/reducers/settings.js @@ -10,6 +10,11 @@ function getLocalStorageSetting(setting, fallback) { const reducers = {}; const defaultState = { clientSettings: { + [SETTINGS.DISABLE_MAX_KEY_FEE]: getLocalStorageSetting(SETTINGS.DISABLE_MAX_KEY_FEE, false), + [SETTINGS.LOCAL_MAX_KEY_FEE]: getLocalStorageSetting(SETTINGS.LOCAL_MAX_KEY_FEE, { + currency: 'USD', + amount: 50.0, + }), [SETTINGS.INSTANT_PURCHASE_ENABLED]: getLocalStorageSetting( SETTINGS.INSTANT_PURCHASE_ENABLED, false -- 2.45.3 From 85fbea818008b5f61f78d775fb0076f76cb80117 Mon Sep 17 00:00:00 2001 From: kuesa Date: Wed, 6 Feb 2019 22:28:37 -0800 Subject: [PATCH 05/15] Added "Unsubscribe" broken heart icon. --- src/renderer/component/common/icon-custom.jsx | 3 +++ src/renderer/component/subscribeButton/view.jsx | 2 +- src/renderer/constants/icons.js | 1 + 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/renderer/component/common/icon-custom.jsx b/src/renderer/component/common/icon-custom.jsx index d6f214f9c..cad1becd1 100644 --- a/src/renderer/component/common/icon-custom.jsx +++ b/src/renderer/component/common/icon-custom.jsx @@ -110,4 +110,7 @@ export const customIcons = { /> ), + [ICONS.UNSUBSCRIBE]: buildIcon( + + ), }; diff --git a/src/renderer/component/subscribeButton/view.jsx b/src/renderer/component/subscribeButton/view.jsx index 91a1d13a6..a03d395a8 100644 --- a/src/renderer/component/subscribeButton/view.jsx +++ b/src/renderer/component/subscribeButton/view.jsx @@ -43,7 +43,7 @@ export default (props: Props) => { return (