Issue #2 Pagina de canciones
This commit is contained in:
10
src/components/Comments.jsx
Normal file
10
src/components/Comments.jsx
Normal file
@@ -0,0 +1,10 @@
|
||||
import React from "react";
|
||||
|
||||
export const Comments = (props) => {
|
||||
return (
|
||||
<div>
|
||||
<h3>Comentarios</h3>
|
||||
<p>No aun :3</p>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
@@ -15,6 +15,7 @@ import {ArtistView} from "./views/Artist";
|
||||
import {DiscView} from "./views/Disc";
|
||||
import {ReleaseView} from "./views/Release";
|
||||
import {Recomended} from "./views/Recomended";
|
||||
import {SongView} from "./views/Song";
|
||||
|
||||
const Main = (props) => {
|
||||
const navigate = (query) => props.history.push(`/search?query=${query}`);
|
||||
@@ -46,6 +47,7 @@ const App = () => (
|
||||
<Route path='/artist/:mbid?' component={ArtistView}/>
|
||||
<Route path='/disc/:mbid?' component={DiscView}/>
|
||||
<Route path='/release/:mbid?' component={ReleaseView}/>
|
||||
<Route path='/song/:mbid?' component={SongView}/>
|
||||
<Route exact path='/' component={Main}/>
|
||||
<Route path='*' component={NoRoute}/>
|
||||
</Switch>
|
||||
|
||||
49
src/views/Song.jsx
Normal file
49
src/views/Song.jsx
Normal file
@@ -0,0 +1,49 @@
|
||||
import React, {Fragment, useEffect, useState} from 'react';
|
||||
|
||||
import {capitalize, toDuration} from "../services/utils";
|
||||
import {getSong} from "../services/entity_service";
|
||||
|
||||
import {Entity} from "../components/Entity";
|
||||
import {Comments} from "../components/Comments";
|
||||
|
||||
const Song = (props) => {
|
||||
const song = props.song;
|
||||
|
||||
if(!song) {
|
||||
return <Fragment/>
|
||||
}
|
||||
|
||||
let subtitle = ''
|
||||
|
||||
if(song.disambiguation && song.length) {
|
||||
subtitle = <span>{capitalize(song.disambiguation)} - [{toDuration(song.length)}]</span>
|
||||
}else if (song.disambiguation) {
|
||||
subtitle = <span>{capitalize(song.disambiguation)}</span>
|
||||
}else if (song.length) {
|
||||
subtitle = <span>[{toDuration(song.length)}]</span>
|
||||
}
|
||||
|
||||
return <Entity title={song.title} subtitle={subtitle} buttonText='Agregar a mi lista'/>
|
||||
|
||||
}
|
||||
|
||||
export const SongView = (props) => {
|
||||
const mbid = props.match.params.mbid;
|
||||
const [song, setSong] = useState(null);
|
||||
|
||||
useEffect(() => {
|
||||
if (mbid) {
|
||||
getSong(mbid).then((result) => setSong(result));
|
||||
}
|
||||
}, [mbid]);
|
||||
|
||||
return (
|
||||
<div>
|
||||
<Song song={song}/>
|
||||
{song &&
|
||||
<Comments/>
|
||||
}
|
||||
</div>
|
||||
)
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user