lbry-desktop/src/renderer/page/search/view.jsx

83 lines
2.6 KiB
React
Raw Normal View History

2018-03-26 23:32:43 +02:00
// @flow
import * as React from 'react';
import * as settings from 'constants/settings';
2018-04-18 06:03:01 +02:00
import { isURIValid, normalizeURI } from 'lbry-redux';
import { FormField, FormRow } from 'component/common/form';
import FileTile from 'component/fileTile';
import FileListSearch from 'component/fileListSearch';
2018-03-26 23:32:43 +02:00
import ToolTip from 'component/common/tooltip';
import Page from 'component/page';
import Icon from 'component/common/icon';
import * as icons from 'constants/icons';
2017-05-05 10:01:16 +02:00
2018-03-26 23:32:43 +02:00
type Props = {
query: ?string,
showUnavailable: boolean,
resultCount: number,
setClientSetting: (string, number | boolean) => void,
2018-03-26 23:32:43 +02:00
};
class SearchPage extends React.PureComponent<Props> {
constructor() {
super();
(this: any).onShowUnavailableChange = this.onShowUnavailableChange.bind(this);
(this: any).onSearchResultCountChange = this.onSearchResultCountChange.bind(this);
}
onSearchResultCountChange(event: SyntheticInputEvent<*>) {
const count = event.target.value;
this.props.setClientSetting(settings.RESULT_COUNT, count);
}
onShowUnavailableChange(event: SyntheticInputEvent<*>) {
this.props.setClientSetting(settings.SHOW_UNAVAILABLE, event.target.checked);
}
2018-03-26 23:32:43 +02:00
render() {
const { query, resultCount, showUnavailable } = this.props;
return (
<Page>
<React.Fragment>
<FormRow alignRight>
<FormField
type="number"
name="result_count"
min={1}
max={1000}
value={resultCount}
onChange={this.onSearchResultCountChange}
postfix={__('returned results')}
/>
<FormField
type="checkbox"
name="show_unavailable"
onChange={this.onShowUnavailableChange}
checked={showUnavailable}
postfix={__('Show unavailable content')}
/>
</FormRow>
</React.Fragment>
2018-06-06 08:13:26 +02:00
{isURIValid(query) && (
<React.Fragment>
<div className="file-list__header">
{__('Exact URL')}
<ToolTip
icon
body={__('This is the resolution of a LBRY URL and not controlled by LBRY Inc.')}
>
<Icon icon={icons.HELP} />
</ToolTip>
</div>
<FileTile fullWidth uri={normalizeURI(query)} showUri />
</React.Fragment>
)}
<FileListSearch query={query} />
<div className="help">{__('These search results are provided by LBRY, Inc.')}</div>
2018-03-26 23:32:43 +02:00
</Page>
2017-06-06 23:19:12 +02:00
);
}
2017-05-05 10:01:16 +02:00
}
2018-03-26 23:32:43 +02:00
2017-05-05 10:01:16 +02:00
export default SearchPage;