A decentralized music tracking and discovery platform built on AT Protocol 馃幍
at fix/spotify 57 lines 1.4 kB view raw
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;