Changeset 98992cf for frontend/src/pages


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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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          />
Note: See TracChangeset for help on using the changeset viewer.