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

This commit is contained in:
Phill Pover 2025-04-03 10:26:15 +01:00
parent 89657012fd
commit 9397c41c7a
2 changed files with 48 additions and 5 deletions

View 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>
);
}

View File

@ -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>
) );
} }