Ignore:
Timestamp:
02/01/26 17:29:49 (5 months ago)
Author:
Dimitar Arsov <dimitararsov04@…>
Branches:
main
Children:
0792d02
Parents:
2730163
Message:

add song/album to favourites

File:
1 edited

Legend:

Unmodified
Added
Removed
  • frontend/src/pages/UserDetail.tsx

    r2730163 rd2af1a6  
    1313} from "../utils/types";
    1414
     15interface FollowStatus {
     16  isFollowing: boolean;
     17  followerCount: number;
     18  followingCount: number;
     19}
     20
    1521interface Artist extends BaseNonAdminUser {
    1622  userType: "ARTIST";
     
    4349    setIsFollowing(true);
    4450    try {
    45       const response = await axiosInstance.post<UserProfile>(
     51      const response = await axiosInstance.post<FollowStatus>(
    4652        `/users/${userId}/follow`,
    4753      );
    48       setUser(response.data);
     54      setUser((prev) => {
     55        if (!prev) return null;
     56        return {
     57          ...prev,
     58          isFollowedByCurrentUser: response.data.isFollowing,
     59          followers: response.data.followerCount,
     60          following: response.data.followingCount,
     61        };
     62      });
    4963    } catch (err: any) {
    5064      setError(handleError(err));
    5165    } finally {
    5266      setIsFollowing(false);
     67    }
     68  };
     69
     70  const handleFollowInModal = async (targetId: number) => {
     71    try {
     72      const response = await axiosInstance.post<FollowStatus>(
     73        `/users/${targetId}/follow`,
     74      );
     75
     76      setModalUsers((prevUsers) =>
     77        prevUsers.map((u) =>
     78          u.id === targetId
     79            ? { ...u, isFollowedByCurrentUser: response.data.isFollowing }
     80            : u,
     81        ),
     82      );
     83
     84      // if (user && user.id === targetId) {
     85      //   setUser((prev) => {
     86      //     if (!prev) return null;
     87      //     return {
     88      //       ...prev,
     89      //       isFollowedByCurrentUser: response.data.isFollowing,
     90      //       followers: response.data.followerCount,
     91      //     };
     92      //   });
     93      // }
     94    } catch (err: any) {
     95      setError(handleError(err));
    5396    }
    5497  };
     
    81124  };
    82125
    83   const handleFollowInModal = async (targetId: number) => {
    84     try {
    85       await axiosInstance.post(`/users/${targetId}/follow`);
    86       setModalUsers((prevUsers) =>
    87         prevUsers.map((u) => {
    88           if (u.id === targetId) {
    89             const isNowFollowing = !u.isFollowedByCurrentUser;
    90             return {
    91               ...u,
    92               isFollowedByCurrentUser: isNowFollowing,
    93             };
    94           }
    95           return u;
    96         }),
    97       );
    98 
    99       // if (user && user.id === targetId) {
    100       //   const response = await axiosInstance.get(`/users/${targetId}`);
    101       //   setUser(response.data);
    102       // }
    103     } catch (err: any) {
    104       setError(handleError(err));
    105     }
    106   };
    107 
    108126  useEffect(() => {
    109127    const fetchUser = async () => {
     
    111129      try {
    112130        const response = await axiosInstance.get(`/users/${userId}`);
     131        console.log(response.data);
    113132        setUser(response.data);
    114133      } catch (err: any) {
Note: See TracChangeset for help on using the changeset viewer.