Making dynamic and adding individual album page
All checks were successful
Music Collection CI Workflow / test (./backend) (push) Successful in 23s
Music Collection CI Workflow / test (./frontend) (push) Successful in 19s
Music Collection CI Workflow / build-and-push-images (./backend/Dockerfile, git.anatid.net/tabris/msuic-collection-backend, ./backend) (push) Successful in 51s
Music Collection CI Workflow / build-and-push-images (./frontend/Dockerfile, git.anatid.net/tabris/music-collection-frontend, ./frontend) (push) Successful in 1m12s
Music Collection CI Workflow / deploy (push) Successful in 22s
All checks were successful
Music Collection CI Workflow / test (./backend) (push) Successful in 23s
Music Collection CI Workflow / test (./frontend) (push) Successful in 19s
Music Collection CI Workflow / build-and-push-images (./backend/Dockerfile, git.anatid.net/tabris/msuic-collection-backend, ./backend) (push) Successful in 51s
Music Collection CI Workflow / build-and-push-images (./frontend/Dockerfile, git.anatid.net/tabris/music-collection-frontend, ./frontend) (push) Successful in 1m12s
Music Collection CI Workflow / deploy (push) Successful in 22s
This commit is contained in:
parent
89657012fd
commit
9397c41c7a
29
frontend/src/app/album/[id]/page.tsx
Normal file
29
frontend/src/app/album/[id]/page.tsx
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import { useState, useEffect } from 'react'
|
||||||
|
import { Album } from '@/common/album.entity';
|
||||||
|
import { useParams } from 'next/navigation'
|
||||||
|
|
||||||
|
export default function Page() {
|
||||||
|
const [album, setAlbum] = useState<Album>();
|
||||||
|
|
||||||
|
const params = useParams<{ id: string }>();
|
||||||
|
const id = params.id;
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
async function fetchAlbum(id: string) {
|
||||||
|
const response = await fetch(`https://api.anatid.net/album/${id}`);
|
||||||
|
const data = await response.json();
|
||||||
|
setAlbum(data);
|
||||||
|
}
|
||||||
|
fetchAlbum(id);
|
||||||
|
}, [id]);
|
||||||
|
|
||||||
|
if (!album) return <div>Loading...</div>
|
||||||
|
|
||||||
|
return (
|
||||||
|
<ul>
|
||||||
|
<li key={album.id}>{album.title} by {album.artist} ({album.genre})</li>
|
||||||
|
</ul>
|
||||||
|
);
|
||||||
|
}
|
@ -1,13 +1,27 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import { useState, useEffect } from 'react'
|
||||||
import { Album } from '@/common/album.entity';
|
import { Album } from '@/common/album.entity';
|
||||||
|
|
||||||
export default async function Page() {
|
export default function Page() {
|
||||||
const data = await fetch('https://api.anatid.net/album')
|
const [albums, setAlbums] = useState<Album[]>([]);
|
||||||
const albums = await data.json()
|
|
||||||
|
useEffect(() => {
|
||||||
|
async function fetchAlbums() {
|
||||||
|
const response = await fetch('https://api.anatid.net/album');
|
||||||
|
const data = await response.json();
|
||||||
|
setAlbums(data);
|
||||||
|
}
|
||||||
|
fetchAlbums()
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
if (!albums) return <div>Loading...</div>
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<ul>
|
<ul>
|
||||||
{albums.map((album: Album) => (
|
{albums.map((album: Album) => (
|
||||||
<li key={album.id}>{album.title} by {album.artist} ({album.genre})</li>
|
<li key={album.id}><a href="">{album.title}</a> by {album.artist} ({album.genre})</li>
|
||||||
))}
|
))}
|
||||||
</ul>
|
</ul>
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user