forked from
rocksky.app/rocksky
A decentralized music tracking and discovery platform built on AT Protocol 馃幍
1import { useMutation, useQuery } from "@tanstack/react-query";
2import axios from "axios";
3import { getLikes, like, unlike } from "../api/likes";
4import { API_URL } from "../consts";
5
6export const useLikeMutation = () =>
7 useMutation({
8 mutationFn: like,
9 });
10
11export const useUnlikeMutation = () =>
12 useMutation({
13 mutationFn: unlike,
14 });
15
16export const useLikesQuery = (uri: string) =>
17 useQuery({
18 queryKey: ["likes", uri],
19 queryFn: () => getLikes(uri),
20 });
21
22const useLike = () => {
23 const like = async (uri: string) => {
24 const response = await axios.post(
25 `${API_URL}/users/${uri.replace("at://", "")}/likes`,
26 {},
27 {
28 headers: {
29 "Content-Type": "application/json",
30 Authorization: `Bearer ${localStorage.getItem("token")}`,
31 },
32 },
33 );
34 return response.data;
35 };
36 const unlike = async (uri: string) => {
37 const response = await axios.delete(
38 `${API_URL}/users/${uri.replace("at://", "")}/likes`,
39 {
40 headers: {
41 Authorization: `Bearer ${localStorage.getItem("token")}`,
42 },
43 },
44 );
45 return response.data;
46 };
47 const getLikes = async (uri: string) => {
48 const response = await axios.get(
49 `${API_URL}/users/${uri.replace("at://", "")}/likes`,
50 );
51 return response.data;
52 };
53
54 return { like, unlike, getLikes };
55};
56
57export default useLike;