You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
3.7 KiB
114 lines
3.7 KiB
import {FETCH_ARTISTE_SEARCH,ACCESS_TOKEN} from '../constants';
|
|
import {Artist} from "../../Model/Artist";
|
|
import {Album} from "../../Model/Album";
|
|
|
|
|
|
export const setArtistList = (artistList: Artist[]) => {
|
|
return {
|
|
type: FETCH_ARTISTE_SEARCH,
|
|
payload: artistList,
|
|
};
|
|
}
|
|
|
|
export const searchArtists = (recherche) => {
|
|
console.log("getArtistList");
|
|
return async dispatch => {
|
|
try{
|
|
const response = await fetch(`https://genius.com/api/search/artists?page=1&q=${encodeURIComponent(recherche)}`);
|
|
|
|
if (!response.ok) {
|
|
throw new Error('[searchArtists] Network response was not ok');
|
|
}
|
|
|
|
const artistListJson = await response.json();
|
|
console.log(artistListJson);
|
|
|
|
console.log("ici")
|
|
const artistList: Artist[] = artistListJson.response.sections[0].hits.map(hit =>
|
|
new Artist(hit.result.id, hit.result.name, hit.result.image_url,"")
|
|
);
|
|
|
|
dispatch(setArtistList(artistList));
|
|
} catch (error) {
|
|
console.error('Error:', error);
|
|
}
|
|
}
|
|
}
|
|
|
|
export const getArtistInfo = (artist) => {
|
|
console.log(artist._id)
|
|
return async dispatch => {
|
|
try{
|
|
const response = await fetch(`https://api.genius.com/artists/${artist._id}`, {
|
|
headers: {
|
|
'Authorization': `Bearer ${ACCESS_TOKEN}`,
|
|
'Content-Type': 'application/json'
|
|
}
|
|
})
|
|
|
|
if (!response.ok) {
|
|
console.log(response);
|
|
throw new Error('[getArtistInfo] Network response was not ok');
|
|
}
|
|
|
|
const artistInfoJson = await response.json();
|
|
artist.bio = artistInfoJson.response.artist.description.dom.children[0].children[0];
|
|
|
|
} catch (error) {
|
|
console.error('Error:', error);
|
|
}
|
|
}
|
|
}
|
|
|
|
export const getSongByArtist = (artist) => {
|
|
return async dispatch => {
|
|
try{
|
|
const response = await fetch(`https://api.genius.com/artists/${artist.id}/songs`, {
|
|
headers: {
|
|
'Authorization': `Bearer ${ACCESS_TOKEN}`,
|
|
'Content-Type': 'application/json'
|
|
}
|
|
})
|
|
|
|
if (!response.ok) {
|
|
console.log(response);
|
|
throw new Error('[getSongByArtist] Network response was not ok');
|
|
}
|
|
|
|
const artistSongsJson = await response.json();
|
|
console.log(artistSongsJson);
|
|
artistSongsJson.response.songs.map((hit: any) => console.log(hit));
|
|
|
|
} catch (error) {
|
|
console.error('Error:', error);
|
|
}
|
|
}
|
|
}
|
|
|
|
export const getAlbumByArtist = (artist) => {
|
|
return async dispatch => {
|
|
try{
|
|
const response = await fetch(`https://genius.com/api/artists/${artist.id}/albums`)
|
|
|
|
if (!response.ok) {
|
|
console.log(response);
|
|
throw new Error('[getAlbumByArtist] Network response was not ok');
|
|
}
|
|
|
|
const artistAlbumJson = await response.json();
|
|
const albumList: Album[] = artistAlbumJson.response.albums.map((album: any) =>
|
|
new Album(album.id,
|
|
album.name,
|
|
album.cover_art_thumbnail_url,
|
|
// @ts-ignore
|
|
Date(album.release_date_components.day, album.release_date_components.month, album.release_date_components.year)
|
|
)
|
|
);
|
|
artist.listAlbum = albumList;
|
|
console.log(artist.listAlbum);
|
|
|
|
} catch (error) {
|
|
console.error('Error:', error);
|
|
}
|
|
}
|
|
} |