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"
},
"lbrySettings": {
"lbrynetDaemonVersion": "0.30.4",
"lbrynetDaemonVersion": "0.31.0",
"lbrynetDaemonUrlTemplate": "https://github.com/lbryio/lbry/releases/download/vDAEMONVER/lbrynet-OSNAME.zip",
"lbrynetDaemonDir": "static/daemon",
"lbrynetDaemonFileName": "lbrynet"

View file

@ -62,7 +62,14 @@ class FileDetails extends PureComponent<Props> {
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;
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 (
<Fragment>
@ -99,7 +106,7 @@ class FileDetails extends PureComponent<Props> {
<Button
button="link"
onClick={() => openFolder(downloadPath)}
label={downloadPath}
label={downloadNote || downloadPath}
/>
</div>
)}

View file

@ -58,15 +58,13 @@ class FilePage extends React.Component<Props> {
];
componentDidMount() {
const { uri, fileInfo, fetchFileInfo, fetchCostInfo, setViewed, isSubscribed } = this.props;
const { uri, 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);

View file

@ -12,16 +12,17 @@ export type Price = {
amount: number,
};
type SetDaemonSettingArg = boolean | string | number | Price;
type DaemonSettings = {
download_directory: string,
disable_max_key_fee: boolean,
download_dir: string,
share_usage_data: boolean,
max_key_fee?: Price,
};
type Props = {
setDaemonSetting: (string, boolean | string | Price) => void,
setClientSetting: (string, boolean | string | number | Price) => void,
setDaemonSetting: (string, ?SetDaemonSettingArg) => void,
setClientSetting: (string, SetDaemonSettingArg) => void,
clearCache: () => Promise<any>,
getThemes: () => void,
daemonSettings: DaemonSettings,
@ -54,6 +55,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
(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);
@ -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) {
this.setDaemonSetting('download_directory', newDirectory);
this.setDaemonSetting('download_dir', newDirectory);
}
onKeyFeeChange(newValue: Price) {
@ -88,7 +90,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
}
onKeyFeeDisableChange(isDisabled: boolean) {
this.setDaemonSetting('disable_max_key_fee', isDisabled);
if (isDisabled) this.setDaemonSetting('max_key_fee');
}
onThemeChange(event: SyntheticInputEvent<*>) {
@ -138,7 +140,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
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);
}
@ -173,6 +175,9 @@ class SettingsPage extends React.PureComponent<Props, State> {
const noDaemonSettings = !daemonSettings || Object.keys(daemonSettings).length === 0;
const isDarkModeEnabled = currentTheme === 'dark';
const defaultMaxKeyFee = { currency: 'USD', amount: 50 };
const disableMaxKeyFee = !(daemonSettings && daemonSettings.max_key_fee);
return (
<Page>
{noDaemonSettings ? (
@ -190,7 +195,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
<div className="card__content">
<FileSelector
type="openDirectory"
currentPath={daemonSettings.download_directory}
currentPath={daemonSettings.download_dir}
onFileChosen={this.onDownloadDirChange}
/>
</div>
@ -210,7 +215,7 @@ class SettingsPage extends React.PureComponent<Props, State> {
<FormField
type="radio"
name="no_max_purchase_limit"
checked={daemonSettings.disable_max_key_fee}
checked={disableMaxKeyFee}
postfix={__('No Limit')}
onChange={() => {
this.onKeyFeeDisableChange(true);
@ -219,22 +224,21 @@ class SettingsPage extends React.PureComponent<Props, State> {
<FormField
type="radio"
name="max_purchase_limit"
checked={!disableMaxKeyFee}
onChange={() => {
this.onKeyFeeDisableChange(false);
this.onKeyFeeChange(defaultMaxKeyFee);
}}
checked={!daemonSettings.disable_max_key_fee}
postfix={__('Choose limit')}
/>
{!daemonSettings.disable_max_key_fee && (
{!disableMaxKeyFee && (
<FormFieldPrice
name="max_key_fee"
label="Max purchase price"
min={0}
onChange={this.onKeyFeeChange}
price={
daemonSettings.max_key_fee
? daemonSettings.max_key_fee
: { currency: 'USD', amount: 50 }
daemonSettings.max_key_fee ? daemonSettings.max_key_fee : defaultMaxKeyFee
}
/>
)}

View file

@ -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 });

View file

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