Support 0.31 SDK, vrooom #2277

Merged
tzarebczan merged 10 commits from 031-sdk-fixes into master 2019-02-12 18:26:51 +01:00
6 changed files with 40 additions and 34 deletions

View file

@ -135,7 +135,7 @@
"yarn": "^1.3" "yarn": "^1.3"
}, },
"lbrySettings": { "lbrySettings": {
"lbrynetDaemonVersion": "0.30.4", "lbrynetDaemonVersion": "0.31.0",
"lbrynetDaemonUrlTemplate": "https://github.com/lbryio/lbry/releases/download/vDAEMONVER/lbrynet-OSNAME.zip", "lbrynetDaemonUrlTemplate": "https://github.com/lbryio/lbry/releases/download/vDAEMONVER/lbrynet-OSNAME.zip",
"lbrynetDaemonDir": "static/daemon", "lbrynetDaemonDir": "static/daemon",
"lbrynetDaemonFileName": "lbrynet" "lbrynetDaemonFileName": "lbrynet"

View file

@ -62,7 +62,14 @@ class FileDetails extends PureComponent<Props> {
const { description, language, license } = metadata; const { description, language, license } = metadata;
const mediaType = contentType || 'unknown'; 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;
let downloadNote;
// If the path is blank, file is not avialable. Create path from name so the folder opens on click.
if (fileInfo && fileInfo.download_path === null) {
downloadPath = `${fileInfo.download_directory}/${fileInfo.file_name}`;
downloadNote = 'This file may have been moved or deleted';
}
return ( return (
<Fragment> <Fragment>
@ -99,7 +106,7 @@ class FileDetails extends PureComponent<Props> {
<Button <Button
button="link" button="link"
onClick={() => openFolder(downloadPath)} onClick={() => openFolder(downloadPath)}
label={downloadPath} label={downloadNote || downloadPath}
/> />
</div> </div>
)} )}

View file

@ -58,15 +58,13 @@ class FilePage extends React.Component<Props> {
]; ];
componentDidMount() { componentDidMount() {
const { uri, fileInfo, fetchFileInfo, fetchCostInfo, setViewed, isSubscribed } = this.props; const { uri, fetchFileInfo, fetchCostInfo, setViewed, isSubscribed } = this.props;
if (isSubscribed) { if (isSubscribed) {
this.removeFromSubscriptionNotifications(); this.removeFromSubscriptionNotifications();
} }
// always refresh file info when entering file page
if (fileInfo === undefined) {
fetchFileInfo(uri); fetchFileInfo(uri);
}
// See https://github.com/lbryio/lbry-desktop/pull/1563 for discussion // See https://github.com/lbryio/lbry-desktop/pull/1563 for discussion
fetchCostInfo(uri); fetchCostInfo(uri);

View file

@ -12,16 +12,17 @@ export type Price = {
amount: number, amount: number,
}; };
type SetDaemonSettingArg = boolean | string | number | Price;
type DaemonSettings = { type DaemonSettings = {
download_directory: string, download_dir: string,
disable_max_key_fee: boolean,
share_usage_data: boolean, share_usage_data: boolean,
max_key_fee?: Price, max_key_fee?: Price,
}; };
type Props = { type Props = {
setDaemonSetting: (string, boolean | string | Price) => void, setDaemonSetting: (string, ?SetDaemonSettingArg) => void,
setClientSetting: (string, boolean | string | number | Price) => void, setClientSetting: (string, SetDaemonSettingArg) => void,
clearCache: () => Promise<any>, clearCache: () => Promise<any>,
getThemes: () => void, getThemes: () => void,
daemonSettings: DaemonSettings, daemonSettings: DaemonSettings,
@ -54,6 +55,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
(this: any).onDownloadDirChange = this.onDownloadDirChange.bind(this); (this: any).onDownloadDirChange = this.onDownloadDirChange.bind(this);
(this: any).onKeyFeeChange = this.onKeyFeeChange.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).onInstantPurchaseMaxChange = this.onInstantPurchaseMaxChange.bind(this);
(this: any).onShowNsfwChange = this.onShowNsfwChange.bind(this); (this: any).onShowNsfwChange = this.onShowNsfwChange.bind(this);
(this: any).onShareDataChange = this.onShareDataChange.bind(this); (this: any).onShareDataChange = this.onShareDataChange.bind(this);
@ -80,7 +82,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
} }
neb-b commented 2019-02-12 03:21:15 +01:00 (Migrated from github.com)
Review

This shouldn't need a client setting either.

This shouldn't need a client setting either.
onDownloadDirChange(newDirectory: string) { onDownloadDirChange(newDirectory: string) {
this.setDaemonSetting('download_directory', newDirectory); this.setDaemonSetting('download_dir', newDirectory);
} }
onKeyFeeChange(newValue: Price) { onKeyFeeChange(newValue: Price) {
@ -88,7 +90,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
} }
onKeyFeeDisableChange(isDisabled: boolean) { onKeyFeeDisableChange(isDisabled: boolean) {
this.setDaemonSetting('disable_max_key_fee', isDisabled); if (isDisabled) this.setDaemonSetting('max_key_fee');
} }
onThemeChange(event: SyntheticInputEvent<*>) { onThemeChange(event: SyntheticInputEvent<*>) {
@ -138,7 +140,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
this.props.setClientSetting(SETTINGS.OS_NOTIFICATIONS_ENABLED, event.target.checked); this.props.setClientSetting(SETTINGS.OS_NOTIFICATIONS_ENABLED, event.target.checked);
} }
setDaemonSetting(name: string, value: boolean | string | Price) { setDaemonSetting(name: string, value: ?SetDaemonSettingArg): void {
this.props.setDaemonSetting(name, value); this.props.setDaemonSetting(name, value);
} }
@ -173,6 +175,9 @@ class SettingsPage extends React.PureComponent<Props, State> {
const noDaemonSettings = !daemonSettings || Object.keys(daemonSettings).length === 0; const noDaemonSettings = !daemonSettings || Object.keys(daemonSettings).length === 0;
const isDarkModeEnabled = currentTheme === 'dark'; const isDarkModeEnabled = currentTheme === 'dark';
const defaultMaxKeyFee = { currency: 'USD', amount: 50 };
const disableMaxKeyFee = !(daemonSettings && daemonSettings.max_key_fee);
return ( return (
<Page> <Page>
{noDaemonSettings ? ( {noDaemonSettings ? (
@ -190,7 +195,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
<div className="card__content"> <div className="card__content">
<FileSelector <FileSelector
type="openDirectory" type="openDirectory"
currentPath={daemonSettings.download_directory} currentPath={daemonSettings.download_dir}
onFileChosen={this.onDownloadDirChange} onFileChosen={this.onDownloadDirChange}
/> />
</div> </div>
@ -210,7 +215,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
<FormField <FormField
type="radio" type="radio"
name="no_max_purchase_limit" name="no_max_purchase_limit"
checked={daemonSettings.disable_max_key_fee} checked={disableMaxKeyFee}
postfix={__('No Limit')} postfix={__('No Limit')}
onChange={() => { onChange={() => {
this.onKeyFeeDisableChange(true); this.onKeyFeeDisableChange(true);
@ -219,22 +224,21 @@ class SettingsPage extends React.PureComponent<Props, State> {
<FormField <FormField
type="radio" type="radio"
name="max_purchase_limit" name="max_purchase_limit"
checked={!disableMaxKeyFee}
onChange={() => { onChange={() => {
this.onKeyFeeDisableChange(false); this.onKeyFeeDisableChange(false);
this.onKeyFeeChange(defaultMaxKeyFee);
}} }}
checked={!daemonSettings.disable_max_key_fee}
postfix={__('Choose limit')} postfix={__('Choose limit')}
/> />
{!daemonSettings.disable_max_key_fee && ( {!disableMaxKeyFee && (
<FormFieldPrice <FormFieldPrice
name="max_key_fee" name="max_key_fee"
label="Max purchase price" label="Max purchase price"
min={0} min={0}
onChange={this.onKeyFeeChange} onChange={this.onKeyFeeChange}
price={ price={
daemonSettings.max_key_fee daemonSettings.max_key_fee ? daemonSettings.max_key_fee : defaultMaxKeyFee
? daemonSettings.max_key_fee
: { currency: 'USD', amount: 50 }
} }
/> />
)} )}

View file

@ -1,6 +1,6 @@
// @flow // @flow
import type { Dispatch, GetState } from 'types/redux'; import type { Dispatch, GetState } from 'types/redux';
import type { Source, Metadata } from 'types/claim'; import type { Metadata } from 'types/claim';
import type { import type {
UpdatePublishFormData, UpdatePublishFormData,
UpdatePublishFormAction, UpdatePublishFormAction,
@ -226,7 +226,6 @@ export const doPublish = (params: PublishParams) => (
contentIsFree, contentIsFree,
price, price,
uri, uri,
sources,
} = params; } = params;
// get the claim id from the channel name, we will use that instead // get the claim id from the channel name, we will use that instead
@ -250,7 +249,6 @@ export const doPublish = (params: PublishParams) => (
bid: ?number, bid: ?number,
metadata: ?Metadata, metadata: ?Metadata,
file_path?: string, file_path?: string,
sources?: Source,
} = { } = {
name, name,
channel_id: channelId, channel_id: channelId,
@ -264,12 +262,8 @@ export const doPublish = (params: PublishParams) => (
amount: creditsToString(fee.amount), amount: creditsToString(fee.amount),
}; };
} }
// only pass file on new uploads, not metadata only edits.
if (filePath) { if (filePath) publishPayload.file_path = filePath;
publishPayload.file_path = filePath;
} else {
publishPayload.sources = sources;
}
dispatch({ type: ACTIONS.PUBLISH_START }); dispatch({ type: ACTIONS.PUBLISH_START });

View file

@ -22,8 +22,10 @@ export function doFetchDaemonSettings() {
export function doSetDaemonSetting(key, value) { export function doSetDaemonSetting(key, value) {
return dispatch => { return dispatch => {
const newSettings = {}; const newSettings = {
newSettings[key] = value; key,
value: !value && value !== false ? null : value,
};
Lbry.settings_set(newSettings).then(newSettings); Lbry.settings_set(newSettings).then(newSettings);
Lbry.settings_get().then(settings => { Lbry.settings_get().then(settings => {
analytics.toggle(settings.share_usage_data, true); analytics.toggle(settings.share_usage_data, true);
@ -71,7 +73,8 @@ export function doUpdateIsNight() {
export function doUpdateIsNightAsync() { export function doUpdateIsNightAsync() {
return dispatch => { return dispatch => {
dispatch(doUpdateIsNight()); dispatch(doUpdateIsNight());
const updateIsNightInterval = setInterval(
setInterval(
() => dispatch(doUpdateIsNight()), () => dispatch(doUpdateIsNight()),
UPDATE_IS_NIGHT_INTERVAL UPDATE_IS_NIGHT_INTERVAL
); );