Part 2 of functional component upgrade

This commit is contained in:
James Barnsley
2019-04-11 08:05:53 +12:00
parent 014da60b76
commit 413d93a181
14 changed files with 962 additions and 1379 deletions

View File

@ -1,79 +1,67 @@
import React from 'react';
import React, { memo } from 'react';
import Link from './Link';
export default class URILink extends React.Component{
export default memo((props) => {
constructor(props){
super(props);
var to = null;
var uri = props.uri;
if (!props.unencoded){
uri = encodeURIComponent(uri);
}
handleContextMenu(e){
if (this.props.onContextMenu){
this.props.onContextMenu(e);
}
switch (props.type){
case 'playlist':
to = '/playlist/'+uri;
break;
case 'artist':
to = '/artist/'+uri;
break;
case 'album':
to = '/album/'+uri;
break;
case 'track':
to = '/track/'+uri;
break;
case 'user':
to = '/user/'+uri;
break;
case 'browse':
to = '/library/browse/'+uri;
break;
case 'recommendations':
to = '/discover/recommendations/'+uri;
break;
case 'search':
var exploded = uri.split('%3A');
to = '/search/'+exploded[1]+'/'+exploded[2];
break;
default:
to = null;
}
render(){
var to = null;
var uri = this.props.uri;
if (!this.props.unencoded){
uri = encodeURIComponent(uri);
}
switch (this.props.type){
case 'playlist':
to = '/playlist/'+uri;
break;
case 'artist':
to = '/artist/'+uri;
break;
case 'album':
to = '/album/'+uri;
break;
case 'track':
to = '/track/'+uri;
break;
case 'user':
to = '/user/'+uri;
break;
case 'browse':
to = '/library/browse/'+uri;
break;
case 'recommendations':
to = '/discover/recommendations/'+uri;
break;
case 'search':
var exploded = uri.split('%3A');
to = '/search/'+exploded[1]+'/'+exploded[2];
break;
default:
to = null;
}
if (uri){
return (
<Link
className={this.props.className ? this.props.className : null}
to={to}
onContextMenu={e => this.handleContextMenu(e)}>
{this.props.children}
</Link>
);
} else {
return (
<span className={this.props.className ? this.props.className : null}>
{this.props.children}
</span>
);
}
if (uri){
return (
<Link
className={props.className ? props.className : null}
to={to}
onContextMenu={e => (props.handleContextMenu ? props.handleContextMenu(e) : null)}>
{props.children}
</Link>
);
} else {
return (
<span className={props.className ? props.className : null}>
{props.children}
</span>
);
}
}
});