mirror of
https://github.com/LBRYFoundation/lbry-desktop.git
synced 2025-09-04 04:45:11 +00:00
use channelTile on top of search page
This commit is contained in:
parent
c077c9103d
commit
2d2c414811
2 changed files with 56 additions and 15 deletions
|
@ -2,16 +2,13 @@
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import CardMedia from 'component/cardMedia';
|
import CardMedia from 'component/cardMedia';
|
||||||
import TruncatedText from 'component/common/truncated-text';
|
import TruncatedText from 'component/common/truncated-text';
|
||||||
|
import classnames from 'classnames';
|
||||||
/*
|
|
||||||
This component can probably be combined with FileTile
|
|
||||||
Currently the only difference is showing the number of files/empty channel
|
|
||||||
*/
|
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
uri: string,
|
uri: string,
|
||||||
isResolvingUri: boolean,
|
isResolvingUri: boolean,
|
||||||
totalItems: number,
|
totalItems: number,
|
||||||
|
size: string,
|
||||||
claim: ?{
|
claim: ?{
|
||||||
claim_id: string,
|
claim_id: string,
|
||||||
name: string,
|
name: string,
|
||||||
|
@ -21,6 +18,10 @@ type Props = {
|
||||||
};
|
};
|
||||||
|
|
||||||
class ChannelTile extends React.PureComponent<Props> {
|
class ChannelTile extends React.PureComponent<Props> {
|
||||||
|
static defaultProps = {
|
||||||
|
size: 'regular',
|
||||||
|
};
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
const { uri, resolveUri } = this.props;
|
const { uri, resolveUri } = this.props;
|
||||||
|
|
||||||
|
@ -36,27 +37,52 @@ class ChannelTile extends React.PureComponent<Props> {
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { claim, navigate, isResolvingUri, totalItems, uri } = this.props;
|
const { claim, navigate, isResolvingUri, totalItems, uri, size } = this.props;
|
||||||
let channelName, channelId;
|
let channelName;
|
||||||
|
|
||||||
if (claim) {
|
if (claim) {
|
||||||
channelName = claim.name;
|
channelName = claim.name;
|
||||||
channelId = claim.claim_id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const onClick = () => navigate('/show', { uri });
|
const onClick = () => navigate('/show', { uri });
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<section className="file-tile card--link" onClick={onClick} role="button">
|
<section
|
||||||
|
onClick={onClick}
|
||||||
|
role="button"
|
||||||
|
className={classnames('file-tile card--link', {
|
||||||
|
'file-tile--small': size === 'small',
|
||||||
|
'file-tile--large': size === 'large',
|
||||||
|
})}
|
||||||
|
>
|
||||||
<CardMedia title={channelName} thumbnail={null} />
|
<CardMedia title={channelName} thumbnail={null} />
|
||||||
<div className="file-tile__info">
|
<div className="file-tile__info">
|
||||||
{isResolvingUri && <div className="card__title--small">{__('Loading...')}</div>}
|
{isResolvingUri && (
|
||||||
|
<div
|
||||||
|
className={classnames({
|
||||||
|
'card__title--small': size !== 'large',
|
||||||
|
'card__title--large': size === 'large',
|
||||||
|
})}
|
||||||
|
>
|
||||||
|
{__('Loading...')}
|
||||||
|
</div>
|
||||||
|
)}
|
||||||
{!isResolvingUri && (
|
{!isResolvingUri && (
|
||||||
<React.Fragment>
|
<React.Fragment>
|
||||||
<div className="card__title--small card__title--file">
|
<div
|
||||||
|
className={classnames({
|
||||||
|
'card__title--file': size === 'regular',
|
||||||
|
'card__title--x-small': size === 'small',
|
||||||
|
'card__title--large': size === 'large',
|
||||||
|
})}
|
||||||
|
>
|
||||||
<TruncatedText lines={1}>{channelName || uri}</TruncatedText>
|
<TruncatedText lines={1}>{channelName || uri}</TruncatedText>
|
||||||
</div>
|
</div>
|
||||||
<div className="card__subtitle">
|
<div
|
||||||
|
className={classnames('card__subtitle', {
|
||||||
|
'card__subtitle--large': size === 'large',
|
||||||
|
})}
|
||||||
|
>
|
||||||
{totalItems > 0 && (
|
{totalItems > 0 && (
|
||||||
<span>
|
<span>
|
||||||
{totalItems} {totalItems === 1 ? 'file' : 'files'}
|
{totalItems} {totalItems === 1 ? 'file' : 'files'}
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
// @flow
|
// @flow
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import * as settings from 'constants/settings';
|
import * as settings from 'constants/settings';
|
||||||
import { isURIValid, normalizeURI } from 'lbry-redux';
|
import { isURIValid, normalizeURI, parseURI } from 'lbry-redux';
|
||||||
import { FormField, FormRow } from 'component/common/form';
|
import { FormField, FormRow } from 'component/common/form';
|
||||||
import FileTile from 'component/fileTile';
|
import FileTile from 'component/fileTile';
|
||||||
|
import ChannelTile from 'component/channelTile';
|
||||||
import FileListSearch from 'component/fileListSearch';
|
import FileListSearch from 'component/fileListSearch';
|
||||||
import Page from 'component/page';
|
import Page from 'component/page';
|
||||||
|
|
||||||
|
@ -32,13 +33,27 @@ class SearchPage extends React.PureComponent<Props> {
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { query, resultCount } = this.props;
|
const { query, resultCount } = this.props;
|
||||||
|
|
||||||
|
const isValid = isURIValid(query);
|
||||||
|
|
||||||
|
let uri;
|
||||||
|
let isChannel;
|
||||||
|
if (isValid) {
|
||||||
|
uri = normalizeURI(query);
|
||||||
|
({ isChannel } = parseURI(uri));
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Page noPadding>
|
<Page noPadding>
|
||||||
{query &&
|
{query &&
|
||||||
isURIValid(query) && (
|
isValid && (
|
||||||
<div className="search__top">
|
<div className="search__top">
|
||||||
<div className="file-list__header">{`lbry://${query}`}</div>
|
<div className="file-list__header">{`lbry://${query}`}</div>
|
||||||
<FileTile size="large" displayHiddenMessage uri={normalizeURI(query)} />
|
{isChannel ? (
|
||||||
|
<ChannelTile size="large" uri={uri} />
|
||||||
|
) : (
|
||||||
|
<FileTile size="large" displayHiddenMessage uri={uri} />
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
<div className="search__content">
|
<div className="search__content">
|
||||||
|
|
Loading…
Add table
Reference in a new issue