Changeset 98992cf


Ignore:
Timestamp:
01/30/26 00:08:04 (5 months ago)
Author:
Dimitar Arsov <dimitararsov04@…>
Branches:
main
Children:
2b08bed
Parents:
6de2873
Message:

refactor NonAdminUser dtos

Files:
2 added
1 deleted
12 edited
6 moved

Legend:

Unmodified
Added
Removed
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/controller/NonAdminUserController.java

    r6de2873 r98992cf  
    11package com.ukim.finki.develop.finkwave.controller;
    22
    3 import com.ukim.finki.develop.finkwave.model.dto.NonAdminUserDTO;
     3import com.ukim.finki.develop.finkwave.model.dto.NonAdminUserDto;
    44import com.ukim.finki.develop.finkwave.service.FollowService;
    55import com.ukim.finki.develop.finkwave.service.NonAdminUserService;
     
    2121
    2222    @GetMapping("/all")
    23     public HttpEntity<List<NonAdminUserDTO>>getAllNonAdminUsers(){
     23    public HttpEntity<List<NonAdminUserDto>>getAllNonAdminUsers(){
    2424        return ResponseEntity.ok(nonAdminUserService.getAllUsers());
    2525    }
    2626
    2727    @GetMapping("/{id}")
    28     public HttpEntity<NonAdminUserDTO>getById(@PathVariable Long id){
     28    public HttpEntity<NonAdminUserDto>getById(@PathVariable Long id){
    2929        return ResponseEntity.ok(nonAdminUserService.getById(id));
    3030    }
    3131
    3232    @GetMapping("/search")
    33     public HttpEntity<List<NonAdminUserDTO>>searchUsers(@RequestParam String name){
     33    public HttpEntity<List<NonAdminUserDto>>searchUsers(@RequestParam String name){
    3434        return ResponseEntity.ok(nonAdminUserService.searchUsers(name));
    3535    }
    3636
    3737    @PostMapping("/follow/{id}")
    38     public HttpEntity<NonAdminUserDTO>followUser(@PathVariable Long id){
     38    public HttpEntity<NonAdminUserDto>followUser(@PathVariable Long id){
    3939        followService.toggleFollow(id);
    4040
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistContributionDto.java

    r6de2873 r98992cf  
    88@Setter
    99@AllArgsConstructor
    10 public class ArtistContributionDTO {
     10public class ArtistContributionDto {
    1111    private Long musicalEntityId;
    1212    private String title;
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ArtistMusicalEntitiesDto.java

    r6de2873 r98992cf  
    11package com.ukim.finki.develop.finkwave.model.dto;
    22
    3 import com.ukim.finki.develop.finkwave.model.Album;
    4 import com.ukim.finki.develop.finkwave.model.Song;
    53import lombok.AllArgsConstructor;
    64import lombok.Getter;
     
    1412@AllArgsConstructor
    1513@NoArgsConstructor
    16 public class ArtistMusicalEntitiesDTO {
    17     private List<ArtistContributionDTO> contributions;
     14public class ArtistMusicalEntitiesDto {
     15    private List<ArtistContributionDto> contributions;
    1816}
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/ListenerLikesDto.java

    r6de2873 r98992cf  
    1010@AllArgsConstructor
    1111@NoArgsConstructor
    12 public class ListenerLikesDTO {
    13     private List<MusicalEntityDTO> likedEntities;
     12public class ListenerLikesDto {
     13    private List<MusicalEntityDto> likedEntities;
    1414   
    1515
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/MusicalEntityDto.java

    r6de2873 r98992cf  
    88@Getter
    99@Setter
    10 public class MusicalEntityDTO {
     10public class MusicalEntityDto {
    1111    private Long id;
    1212    private String title;
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/NonAdminUserDto.java

    r6de2873 r98992cf  
    11package com.ukim.finki.develop.finkwave.model.dto;
    22
    3 import com.ukim.finki.develop.finkwave.model.Playlist;
    43import lombok.Getter;
    54import lombok.Setter;
    6 
    7 import java.util.List;
    85
    96
     
    118@Setter
    129
    13 public class NonAdminUserDTO {
     10public  class NonAdminUserDto {
    1411    private Long id;
    1512    private String username;
     
    2118
    2219
    23    
    24     private ArtistMusicalEntitiesDTO musicalEntities;
    25    
    26     private ListenerLikesDTO likes;
    27     private List<PlaylistDTO>createdPlaylists;
    2820}
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/model/dto/PlaylistDto.java

    r6de2873 r98992cf  
    88@Getter
    99@Setter
    10 public class PlaylistDTO {
     10public class PlaylistDto {
    1111    private Long id;
    1212    private String name;
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/ArtistContributionRepository.java

    r6de2873 r98992cf  
    11package com.ukim.finki.develop.finkwave.repository;
    22
     3import com.ukim.finki.develop.finkwave.model.dto.ArtistContributionDto;
    34import org.springframework.data.jpa.repository.JpaRepository;
    45import org.springframework.data.jpa.repository.Query;
     
    1314public interface ArtistContributionRepository extends JpaRepository<ArtistContribution, ArtistContributionId> {
    1415
    15     @Query("SELECT ac.musicalEntity.id,ac.musicalEntity.title,ac.musicalEntity.genre,ac.role, "+
     16    @Query("SELECT NEW com.ukim.finki.develop.finkwave.model.dto.ArtistContributionDto( ac.musicalEntity.id," +
     17            "ac.musicalEntity.title," +
     18            "ac.musicalEntity.genre," +
     19            "ac.role, "+
    1620        "CASE WHEN s.id IS NOT NULL THEN 'SONG' "+
    1721        "WHEN a.id IS NOT NULL THEN 'ALBUM' "+
    18         "ELSE 'Unknown' END "+
     22        "ELSE 'Unknown' END) "+
    1923        "FROM ArtistContribution ac "+
    2024        "LEFT JOIN Song s  ON s.musicalEntities.id=ac.musicalEntity.id "+
    2125        "LEFT JOIN Album a ON a.musicalEntities.id=ac.musicalEntity.id "+
    2226        "WHERE ac.artist.id=:artistId")
    23     List<Object[]>findContributionsByArtistId(@Param("artistId")Long artistId);
     27    List<ArtistContributionDto>findContributionsByArtistId(@Param("artistId")Long artistId);
    2428}
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/LikeRepository.java

    r6de2873 r98992cf  
    11package com.ukim.finki.develop.finkwave.repository;
    22
     3import com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto;
    34import org.springframework.data.jpa.repository.JpaRepository;
    45import org.springframework.data.jpa.repository.Query;
     
    1314@Repository
    1415public interface LikeRepository extends JpaRepository<Like, LikeId> {
    15     @Query("SELECT l.musicalEntity.id, l.musicalEntity.title,l.musicalEntity.genre, " +
     16    @Query("SELECT NEW com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto(l.musicalEntity.id, " +
     17            "l.musicalEntity.title," +
     18            "l.musicalEntity.genre, " +
    1619           "CASE WHEN s.id IS NOT NULL THEN 'SONG' " +
    1720           "WHEN a.id IS NOT NULL THEN 'ALBUM' " +
    18            "ELSE 'UNKNOWN' END " +
     21           "ELSE 'UNKNOWN' END)" +
    1922           "FROM Like l " +
    2023           "LEFT JOIN Song s ON s.musicalEntities.id = l.musicalEntity.id " +
    2124           "LEFT JOIN Album a ON a.musicalEntities.id = l.musicalEntity.id " +
    2225           "WHERE l.listener.id = :listenerId")
    23     List<Object[]> findLikedEntitiesWithTypeByListenerId(@Param("listenerId") Long listenerId);
     26    List<MusicalEntityDto> findLikedEntitiesWithTypeByListenerId(@Param("listenerId") Long listenerId);
    2427}
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/repository/NonAdminUserRepository.java

    r6de2873 r98992cf  
    11package com.ukim.finki.develop.finkwave.repository;
    22
    3 import com.ukim.finki.develop.finkwave.model.dto.NonAdminUserDTO;
    43import org.springframework.data.jpa.repository.JpaRepository;
    54import org.springframework.data.jpa.repository.Query;
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/ArtistService.java

    r6de2873 r98992cf  
    11package com.ukim.finki.develop.finkwave.service;
    22
    3 import com.ukim.finki.develop.finkwave.model.dto.ArtistContributionDTO;
     3import com.ukim.finki.develop.finkwave.model.dto.ArtistContributionDto;
    44import com.ukim.finki.develop.finkwave.repository.ArtistContributionRepository;
    55
     
    1919
    2020    @Transactional(readOnly=true)
    21     public List<ArtistContributionDTO> getArtistContributions(Long artistId){
    22         List<Object[]>results=artistContributionRepository.findContributionsByArtistId(artistId);
    23 
    24         return results.stream()
    25         .map(row->new ArtistContributionDTO((Long)row[0], (String)row[1], (String)row[2],(String)row[3], (String)row[4]))
    26         .collect(Collectors.toList());
     21    public List<ArtistContributionDto> getArtistContributions(Long artistId){
     22        return artistContributionRepository.findContributionsByArtistId(artistId);
    2723    }
    2824
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/ListenerService.java

    r6de2873 r98992cf  
    22
    33import com.ukim.finki.develop.finkwave.model.Playlist;
    4 import com.ukim.finki.develop.finkwave.model.dto.ListenerLikesDTO;
    5 import com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDTO;
    6 import com.ukim.finki.develop.finkwave.model.dto.PlaylistDTO;
     4import com.ukim.finki.develop.finkwave.model.dto.ListenerLikesDto;
     5import com.ukim.finki.develop.finkwave.model.dto.MusicalEntityDto;
    76import com.ukim.finki.develop.finkwave.repository.LikeRepository;
    87import com.ukim.finki.develop.finkwave.repository.PlaylistRepository;
     
    1817    private final PlaylistRepository playlistRepository;
    1918    @Transactional(readOnly = true)
    20     public ListenerLikesDTO getLikedEntities(Long listenerId) {
    21         List<Object[]> results = likeRepository.findLikedEntitiesWithTypeByListenerId(listenerId);
     19    public List<MusicalEntityDto> getLikedEntities(Long listenerId) {
     20        return likeRepository.findLikedEntitiesWithTypeByListenerId(listenerId);
    2221
    23         List<MusicalEntityDTO>likedEntities=results.stream()
    24         .map(row->new MusicalEntityDTO((Long)row[0], (String)row[1], (String)row[2],(String)row[3]))
    25         .toList();
    26        
    27         ListenerLikesDTO dto=new ListenerLikesDTO();
    28         dto.setLikedEntities(likedEntities);
    29         return dto;
     22
    3023    }
    3124
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/NonAdminUserService.java

    r6de2873 r98992cf  
    77import com.ukim.finki.develop.finkwave.service.mappers.NonAdminUserMapper;
    88import lombok.AllArgsConstructor;
    9 import org.springframework.security.core.Authentication;
    10 import org.springframework.security.core.context.SecurityContextHolder;
    119import org.springframework.stereotype.Service;
    1210import org.springframework.transaction.annotation.Transactional;
     
    2725
    2826    @Transactional(readOnly = true)
    29     public List<NonAdminUserDTO> getAllUsers() {
     27    public List<NonAdminUserDto> getAllUsers() {
    3028        return nonAdminUserRepository.findAllWithUser().stream()
    3129                .map(user -> {
     
    3331                    Long followers = followRepository.countByFolloweeId(user.getId());
    3432                    Long following = followRepository.countByFollowerId(user.getId());
    35                     return mapper.toDTO(user, type, followers, following);
     33                    return mapper.toDto(user, type, followers, following);
    3634                })
    3735                .collect(Collectors.toList());
     
    3937
    4038    @Transactional(readOnly = true)
    41     public NonAdminUserDTO getById(Long id) {
     39    public NonAdminUserDto getById(Long id) {
    4240        Long followers=followRepository.countByFolloweeId(id);
    4341        Long following=followRepository.countByFollowerId(id);
     
    4846            isFollowedByCurrentUser = followRepository.isFollowing(currentUserId, id);
    4947        }
    50         NonAdminUserDTO dto;
     48        NonAdminUserDto dto;
    5149   
    5250        if (artistRepository.existsById(id)) {
     
    6563    }
    6664
    67     private NonAdminUserDTO getArtistProfile(Long artistId, Long followers,Long following) {
     65    private NonAdminUserDto getArtistProfile(Long artistId, Long followers, Long following) {
    6866        Artist artist = artistRepository.findByIdWithUser(artistId)
    6967            .orElseThrow(()->new UserNotFoundException("Artist not found with id: " + artistId));
    7068
    7169
    72         ArtistMusicalEntitiesDTO entitiesDTO = new ArtistMusicalEntitiesDTO();
    73         entitiesDTO.setContributions(artistService.getArtistContributions(artistId));
     70        List<ArtistContributionDto>artistContributionDtos=artistService.getArtistContributions(artistId);
    7471
    75         return mapper.toArtistDTO(artist, entitiesDTO,followers,following);
     72        return mapper.toArtistDTO(artist, artistContributionDtos,followers,following);
    7673    }
    7774
    78     private NonAdminUserDTO getListenerProfile(Long listenerId, Long followers,Long following) {
     75    private NonAdminUserDto getListenerProfile(Long listenerId, Long followers, Long following) {
    7976        Listener listener = listenerRepository.findByIdWithUser(listenerId)
    8077            .orElseThrow(()->new UserNotFoundException("Listener not found with id: " + listenerId));
    8178
    8279
    83         ListenerLikesDTO likesDTO = listenerService.getLikedEntities(listenerId);
    84         List<PlaylistDTO>playlists=listenerService.getPlaylistsCreatedByUser(listenerId).stream()
    85                 .map(p->new PlaylistDTO(
     80        List<MusicalEntityDto>musicalEntityDtos=listenerService.getLikedEntities(listenerId);
     81        List<PlaylistDto>playlists=listenerService.getPlaylistsCreatedByUser(listenerId).stream()
     82                .map(p->new PlaylistDto(
    8683                        p.getId(),
    8784                        p.getName(),
     
    9087                )).toList();
    9188
    92         return mapper.toListenerDTO(listener, likesDTO,followers,following,playlists);
     89        return mapper.toListenerDTO(listener, musicalEntityDtos,followers,following,playlists);
    9390    }
    9491
    9592
    96     public List<NonAdminUserDTO>searchUsers(String name){
     93    public List<NonAdminUserDto>searchUsers(String name){
    9794
    9895        List<NonAdminUser>nonAdminUsers=nonAdminUserRepository.searchByName(name);
     
    106103                    Long followers = followRepository.countByFolloweeId(user.getId());
    107104                    Long following = followRepository.countByFollowerId(user.getId());
    108                     return mapper.toDTO(user, type, followers, following);
     105                    return mapper.toDto(user, type, followers, following);
    109106                })
    110107                .collect(Collectors.toList());
  • finkwave/src/main/java/com/ukim/finki/develop/finkwave/service/mappers/NonAdminUserMapper.java

    r6de2873 r98992cf  
    55import com.ukim.finki.develop.finkwave.model.Listener;
    66
    7 import com.ukim.finki.develop.finkwave.model.Playlist;
    8 import com.ukim.finki.develop.finkwave.model.dto.ArtistMusicalEntitiesDTO;
    9 import com.ukim.finki.develop.finkwave.model.dto.ListenerLikesDTO;
    10 import com.ukim.finki.develop.finkwave.model.dto.NonAdminUserDTO;
     7import com.ukim.finki.develop.finkwave.model.dto.*;
    118import com.ukim.finki.develop.finkwave.model.NonAdminUser;
    12 import com.ukim.finki.develop.finkwave.model.dto.PlaylistDTO;
    139import org.springframework.stereotype.Component;
    1410
     
    1915public class NonAdminUserMapper {
    2016
    21     public NonAdminUserDTO toArtistDTO(Artist artist, ArtistMusicalEntitiesDTO entitiesDTO, Long followers, Long following) {
    22         NonAdminUserDTO dto = createBaseDTO(
    23             artist.getNonAdminUser(),
    24             "ARTIST",
    25             followers,
    26             following
    27         );
    28         dto.setMusicalEntities(entitiesDTO);
     17    public NonAdminUserDto toArtistDTO(Artist artist, List<ArtistContributionDto> entitiesDTO, Long followers, Long following) {
     18        ArtistDto dto=new ArtistDto();
     19        populateBaseClassFields(dto,artist.getNonAdminUser(),"ARTIST",followers,following);
     20        dto.setContributions(entitiesDTO);
    2921        return dto;
    3022    }
    3123
    32     public NonAdminUserDTO toListenerDTO(Listener listener, ListenerLikesDTO likesDTO, Long followers, Long following, List<PlaylistDTO>playlists) {
    33         NonAdminUserDTO dto = createBaseDTO(
    34             listener.getNonAdminUser(),
    35             "LISTENER",
    36             followers,
    37             following
    38         );
    39         dto.setLikes(likesDTO);
     24    public NonAdminUserDto toListenerDTO(Listener listener, List<MusicalEntityDto> musicalEntityDtos, Long followers, Long following, List<PlaylistDto>playlists) {
     25        ListenerDto dto=new ListenerDto();
     26        populateBaseClassFields(dto,listener.getNonAdminUser(),"LISTENER",followers,following);
     27        dto.setLikedEntities(musicalEntityDtos);
    4028        dto.setCreatedPlaylists(playlists);
    4129        return dto;
    4230    }
    4331
    44     public NonAdminUserDTO toDTO(NonAdminUser user, String type,Long followers,Long following) {
    45         return createBaseDTO(user, type, followers, following);
     32    public NonAdminUserDto toDto(NonAdminUser user,String type, Long followers,Long following){
     33       NonAdminUserDto dto=new NonAdminUserDto();
     34       populateBaseClassFields(dto,user,type,followers,following);
     35       return dto;
    4636    }
    4737
    48     private NonAdminUserDTO createBaseDTO(NonAdminUser user, String userType, Long followers, Long following) {
    49         NonAdminUserDTO dto = new NonAdminUserDTO();
     38    private void populateBaseClassFields(NonAdminUserDto dto,NonAdminUser user,String type,Long followers,Long following){
    5039        dto.setId(user.getId());
    5140        dto.setUsername(user.getUser().getUsername());
    5241        dto.setFullName(user.getUser().getFullName());
    53         dto.setUserType(userType);
     42        dto.setUserType(type);
    5443        dto.setFollowers(followers);
    5544        dto.setFollowing(following);
    56         return dto;
    5745    }
    5846}
  • frontend/src/components/userProfile/ArtistView.tsx

    r6de2873 r98992cf  
    11import { useNavigate } from "react-router-dom";
    22import { Music, Disc3 } from "lucide-react";
    3 import type { ArtistContributionDTO } from "../../utils/types";
     3import type { ArtistContribution } from "../../utils/types";
    44
    55interface ArtistViewProps {
    6   contributions: ArtistContributionDTO[];
     6  contributions: ArtistContribution[];
    77}
    88
  • frontend/src/components/userProfile/ListenerView.tsx

    r6de2873 r98992cf  
    11import { useNavigate } from "react-router-dom";
    22import { Heart, ListMusic, Music, Album } from "lucide-react";
    3 import type { Playlist, MusicalEntityDTO } from "../../utils/types";
     3import type { Playlist, MusicalEntity } from "../../utils/types";
    44
    55interface ListenerViewProps {
    6   likedEntities: MusicalEntityDTO[];
    7   playlists?: Playlist[];
     6  likedEntities: MusicalEntity[] | [];
     7  playlists: Playlist[] | [];
    88}
    99
     
    1111  const navigate = useNavigate();
    1212
    13   const likedSongs = likedEntities.filter((e) => e.type === "SONG");
    14   const likedAlbums = likedEntities.filter((e) => e.type === "ALBUM");
     13  const likedSongs = likedEntities?.filter((e) => e.type === "SONG");
     14  const likedAlbums = likedEntities?.filter((e) => e.type === "ALBUM");
    1515
    1616  return (
     
    5555      )}
    5656
    57       {likedSongs.length > 0 && (
     57      {likedSongs && likedSongs.length > 0 && (
    5858        <section>
    5959          <div className="flex items-center gap-2 mb-6 pb-2 border-b-2 border-gray-200">
     
    6161            <h3 className="text-2xl font-bold text-gray-800">Liked Songs</h3>
    6262            <span className="text-sm text-gray-400 ml-1">
    63               ({likedSongs.length})
     63              ({likedSongs?.length})
    6464            </span>
    6565          </div>
     
    9090      )}
    9191
    92       {likedAlbums.length > 0 && (
     92      {likedAlbums && likedAlbums.length > 0 && (
    9393        <section>
    9494          <div className="flex items-center gap-2 mb-6 pb-2 border-b-2 border-gray-200">
     
    120120      )}
    121121
    122       {likedEntities.length === 0 && (!playlists || playlists.length === 0) && (
    123         <div className="flex flex-col items-center justify-center py-16 text-gray-300">
    124           <p className="text-lg font-medium text-gray-400">Nothing here yet</p>
    125           <p className="text-sm text-gray-400 mt-1">
    126             Start exploring music to build your collection
    127           </p>
    128         </div>
    129       )}
     122      {likedEntities &&
     123        likedEntities.length === 0 &&
     124        (!playlists || playlists.length === 0) && (
     125          <div className="flex flex-col items-center justify-center py-16 text-gray-300">
     126            <p className="text-lg font-medium text-gray-400">
     127              Nothing here yet
     128            </p>
     129            <p className="text-sm text-gray-400 mt-1">
     130              Start exploring music to build your collection
     131            </p>
     132          </div>
     133        )}
    130134    </div>
    131135  );
  • frontend/src/pages/UserDetailView.tsx

    r6de2873 r98992cf  
    55import ListenerView from "../components/userProfile/ListenerView";
    66import type {
    7   ArtistContributionDTO,
    8   MusicalEntityDTO,
     7  MusicalEntity,
    98  Playlist,
     9  ArtistContribution,
    1010} from "../utils/types";
    1111
    12 interface User {
     12interface BaseUser {
    1313  id: number;
    14   username: string;
    1514  fullName: string;
    1615  userType: string;
     
    1817  following: number;
    1918  isFollowedByCurrentUser: boolean;
     19}
    2020
    21   musicalEntities?: {
    22     contributions: ArtistContributionDTO[];
    23   };
     21interface Artist extends BaseUser {
     22  userType: "ARTIST";
     23  contributions: ArtistContribution[];
     24}
     25interface Listener extends BaseUser {
     26  userType: "LISTENER";
     27  likedEntities: MusicalEntity[];
     28  createdPlaylists: Playlist[];
     29}
    2430
    25   likes?: {
    26     likedEntities: MusicalEntityDTO[];
    27   };
    28 
    29   createdPlaylists?: Playlist[];
    30 }
     31type UserProfile = Artist | Listener;
    3132
    3233const UserDetail = () => {
     
    3435  const { userId } = useParams();
    3536  const navigate = useNavigate();
    36   const [user, setUser] = useState<User | null>(null);
     37  const [user, setUser] = useState<UserProfile | null>(null);
    3738  const [error, setError] = useState<string | null>(null);
    3839  const [isFollowing, setIsFollowing] = useState(false);
     
    4344    setIsFollowing(true);
    4445    try {
    45       const response = await axiosInstance.post<User>(
     46      const response = await axiosInstance.post<UserProfile>(
    4647        `/users/follow/${userId}`,
    4748      );
    48       setUser(response.data);
    4949    } catch (err: any) {
    5050      console.error(err.response?.data?.error);
     
    5959      try {
    6060        const response = await axiosInstance.get(`/users/${userId}`);
     61        console.log(response.data);
    6162
    6263        setUser(response.data);
     
    135136        </div>
    136137
    137         {user.userType === "ARTIST" && user.musicalEntities?.contributions && (
    138           <ArtistView contributions={user.musicalEntities.contributions} />
    139         )}
    140 
    141         {user.userType === "LISTENER" && user.likes?.likedEntities && (
     138        {user.userType === "ARTIST" ? (
     139          <ArtistView contributions={user.contributions} />
     140        ) : (
    142141          <ListenerView
    143             likedEntities={user.likes.likedEntities}
     142            likedEntities={user.likedEntities}
    144143            playlists={user.createdPlaylists}
    145144          />
  • frontend/src/utils/types.ts

    r6de2873 r98992cf  
    11export interface User {
    2         username: string;
    3         fullName: string;
    4         email?: string;
    5         profilePhoto?: string | null;
    6         role?: "ADMIN" | "NONADMIN";
     2  username: string;
     3  fullName: string;
     4  email?: string;
     5  profilePhoto?: string | null;
     6  role?: "ADMIN" | "NONADMIN";
    77}
    88
    9 export interface ArtistContributionDTO {
    10         musicalEntityId: number;
    11         title: string;
    12         genre: string;
    13         role: string;
    14         entityType: string;
     9export interface ArtistContribution {
     10  musicalEntityId: number;
     11  title: string;
     12  genre: string;
     13  role: string;
     14  entityType: string;
    1515}
    16 export interface MusicalEntityDTO {
    17         id: number;
    18         title: string;
    19         genre: string;
    20         type: string;
     16export interface MusicalEntity {
     17  id: number;
     18  title: string;
     19  genre: string;
     20  type: string;
    2121}
    2222
    2323export interface Playlist {
    24         id: number;
    25         name: string;
    26         cover: string;
    27         creatorName: string;
     24  id: number;
     25  name: string;
     26  cover: string;
     27  creatorName: string;
    2828}
Note: See TracChangeset for help on using the changeset viewer.