diff --git a/ui/js/component/fileTile/view.jsx b/ui/js/component/fileTile/view.jsx index a2b404a5d..81fac9fa2 100644 --- a/ui/js/component/fileTile/view.jsx +++ b/ui/js/component/fileTile/view.jsx @@ -86,6 +86,7 @@ class FileTile extends React.Component { const uri = lbryuri.normalize(this.props.uri); const isClaimed = !!claim; + const isClaimable = lbryuri.isClaimable(uri) const title = isClaimed && metadata && metadata.title ? metadata.title : uri; const obscureNsfw = this.props.obscureNsfw && metadata && metadata.nsfw; let onClick = () => navigate('/show', { uri }) @@ -97,7 +98,10 @@ class FileTile extends React.Component { description = "Loading..." } else if (showEmpty === FileTile.SHOW_EMPTY_PUBLISH) { onClick = () => navigate('/publish') - description = This location is unclaimed - put something here! + description = + This location is unused. { ' ' } + { isClaimable && Put something here! } + } else if (showEmpty === FileTile.SHOW_EMPTY_PENDING) { description = This file is pending confirmation. } diff --git a/ui/js/lbryuri.js b/ui/js/lbryuri.js index 2712b812a..637a2fd67 100644 --- a/ui/js/lbryuri.js +++ b/ui/js/lbryuri.js @@ -165,5 +165,25 @@ lbryuri.normalize= function(uri) { return lbryuri.build({name, path, claimSequence, bidPosition, claimId}); } +lbryuri.isValid = function(uri) { + let parts + try { + parts = lbryuri.parse(lbryuri.normalize(uri)) + } catch (error) { + return false; + } + return parts && parts.name; +} + +lbryuri.isClaimable = function(uri) { + let parts + try { + parts = lbryuri.parse(lbryuri.normalize(uri)) + } catch (error) { + return false; + } + return parts && parts.name && !parts.claimId && !parts.bidPosition && !parts.claimSequence && !parts.isChannel && !parts.path; +} + window.lbryuri = lbryuri; export default lbryuri; diff --git a/ui/js/page/search/view.jsx b/ui/js/page/search/view.jsx index 30f9b2aee..8328434fc 100644 --- a/ui/js/page/search/view.jsx +++ b/ui/js/page/search/view.jsx @@ -8,14 +8,13 @@ import {BusyMessage} from 'component/common.js'; class SearchPage extends React.Component{ render() { - const isValidUri = (query) => true //FIXME const { query, } = this.props return (
- { isValidUri(query) ? + { lbryuri.isValid(query) ?

Exact URL

{uri}

- + { isResolvingUri && } + { claim === null && There's nothing at this location. }
-

; + } else if (claim && claim.whatever) { innerContent = "channel"