Skip to content
Snippets Groups Projects
Select Git revision
  • 7b0ef64c6e3b7e72bbdb999582a25bdea0da946d
  • master default protected
2 results

MusicList.js

Blame
  • DongHwi Kim's avatar
    DongHwi Kim authored
    7b0ef64c
    History
    MusicList.js 2.33 KiB
    import React from 'react';
    import {Card, CardContent,CardActions, Typography, IconButton} from '@mui/material';
    import {Favorite, FavoriteBorder} from '@mui/icons-material';
    import SnackMsg from './snackbar';
    
    const styles = {
        content :{},
        layout : {
            display : 'flex',
            justifyContent : 'center'
        },
        card : {
            minWidth : 275,
            maxWidth : 600,
            marginBottom : "20pt",
            marginLeft : 'auto',
            marginRight : 'auto',
        },
    };
    
    export default function MusicList({list,likes,handleLike,myFavoriteList,addToFavoriteList}){
        let [snackState, setSnackState] = React.useState({open:false, msg:''})
        const toggleFavorite = (id,name) => () => {
            const updatedLikes = { ...likes, [id]: !likes[id] };
            setSnackState({ ...snackState, open: true, msg: `${name} is clicked` });
            handleLike(id);
            if (updatedLikes[id]) {
                if (!myFavoriteList.find((item) => item.collectionId === id)) {
                    addToFavoriteList(list.find((item) => item.collectionId === id));
                }
            } else {
                const updatedFavoriteList = myFavoriteList.filter((item) => item.collectionId !== item);
                addToFavoriteList(updatedFavoriteList);
            }
        
        }
        const handleSnackbarClose = (event, reason) => {
            if (reason === 'clickaway') {
            return;
            }
            setSnackState({ open: false, msg: '' });
        };
    
        return (
            <div>
                {list.map(item => {
                    return (
                        <Card sx={styles.card} key={item.collectionId}>
                            <CardContent>
                                <Typography variant="subtitle1"> {item.artistName}</Typography>
                                <Typography variant="subtitle2">{item.collectionCensoredName}</Typography>
                            </CardContent>
                            <CardActions>
                                <IconButton onClick={toggleFavorite(item.collectionId, item.collectionName)}>
                                    {likes[item.collectionId] === true ? <Favorite /> : <FavoriteBorder />}
                                </IconButton>
                            </CardActions>
                        </Card>
                    )
                })}
                <SnackMsg open = {snackState.open} message = {snackState.msg} onClose={handleSnackbarClose} />
            </div>
    
        )
    }