Files
Iris/src/js/components/URILink.js

69 lines
1.4 KiB
JavaScript
Raw Normal View History

2019-04-11 08:05:53 +12:00
import React, { memo } from 'react';
import Link from './Link';
import { uriType as uriTypeHelper } from '../util/helpers';
import { encodeUri } from '../util/format';
export default memo((props) => {
2019-09-05 15:36:11 +12:00
let to = null;
let { uri, type } = props;
const uriType = type || uriTypeHelper(uri);
2019-09-05 15:36:11 +12:00
if (!props.unencoded) {
uri = encodeUri(uri);
2019-09-05 15:36:11 +12:00
}
switch (uriType) {
2019-09-05 15:36:11 +12:00
case 'playlist':
to = `/playlist/${uri}`;
break;
2019-09-05 15:36:11 +12:00
case 'artist':
to = `/artist/${uri}`;
break;
2019-09-05 15:36:11 +12:00
case 'album':
to = `/album/${uri}`;
break;
2019-09-05 15:36:11 +12:00
case 'track':
to = `/track/${uri}`;
break;
2019-09-05 15:36:11 +12:00
case 'user':
to = `/user/${uri}`;
break;
2019-09-05 15:36:11 +12:00
case 'browse':
to = `/library/browse/${uri}`;
break;
2019-09-05 15:36:11 +12:00
case 'recommendations':
to = `/discover/recommendations/${uri}`;
break;
2019-09-05 15:36:11 +12:00
case 'search':
var exploded = uri.split('%3A');
to = `/search/${exploded[2]}/${exploded[3]}`;
2019-09-05 15:36:11 +12:00
break;
2019-09-05 15:36:11 +12:00
default:
to = `/uri/${uri}`;
2019-09-05 15:36:11 +12:00
}
2019-09-05 15:36:11 +12:00
if (uri) {
return (
<Link
className={props.className ? props.className : null}
to={to}
onContextMenu={(e) => (props.handleContextMenu ? props.handleContextMenu(e) : null)}
2019-09-05 15:36:11 +12:00
>
{props.children}
</Link>
);
}
return (
<span className={props.className ? props.className : null}>
{props.children}
</span>
);
});