diff --git a/apps/web/src/hooks/useSearchSong.ts b/apps/web/src/hooks/useSearchSong.ts index 9613556..386f895 100644 --- a/apps/web/src/hooks/useSearchSong.ts +++ b/apps/web/src/hooks/useSearchSong.ts @@ -25,10 +25,10 @@ export default function useSearchSong() { const [saveModalType, setSaveModalType] = useState(''); const [selectedSaveSong, setSelectedSaveSong] = useState(null); // const { data: searchResults, isLoading } = useSearchSongQuery(query, searchType, isAuthenticated); - const { mutate: toggleToSing } = useToggleToSingMutation(); - const { mutate: toggleLike } = useToggleLikeMutation(); - const { mutate: postSong } = useSaveMutation(); - const { mutate: moveSong } = useMoveSaveSongMutation(); + const { mutate: toggleToSing, isPending: isToggleToSingPending } = useToggleToSingMutation(); + const { mutate: toggleLike, isPending: isToggleLikePending } = useToggleLikeMutation(); + const { mutate: postSong, isPending: isPostSongPending } = useSaveMutation(); + const { mutate: moveSong, isPending: isMoveSongPending } = useMoveSaveSongMutation(); const { data: searchResults, @@ -56,6 +56,11 @@ export default function useSearchSong() { toast.error('로그인이 필요해요.'); return; } + + if (isToggleToSingPending) { + toast.error('요청 중입니다. 잠시 후 다시 시도해주세요.'); + return; + } toggleToSing({ songId, method, query, searchType }); }; @@ -64,6 +69,11 @@ export default function useSearchSong() { toast.error('로그인이 필요해요.'); return; } + + if (isToggleLikePending) { + toast.error('요청 중입니다. 잠시 후 다시 시도해주세요.'); + return; + } toggleLike({ songId, method, query, searchType }); }; @@ -72,15 +82,25 @@ export default function useSearchSong() { toast.error('로그인이 필요해요.'); return; } + setSelectedSaveSong(song); setSaveModalType(method === 'POST' ? 'POST' : 'PATCH'); }; const postSaveSong = async (songId: string, folderName: string) => { + if (isPostSongPending) { + toast.error('요청 중입니다. 잠시 후 다시 시도해주세요.'); + return; + } postSong({ songId, folderName, query, searchType }); }; const patchSaveSong = async (songId: string, folderId: string) => { + if (isMoveSongPending) { + toast.error('요청 중입니다. 잠시 후 다시 시도해주세요.'); + return; + } + moveSong({ songIdArray: [songId], folderId }); }; diff --git a/apps/web/src/queries/tosingSongQuery.ts b/apps/web/src/queries/tosingSongQuery.ts index 0dc054f..fe6c70f 100644 --- a/apps/web/src/queries/tosingSongQuery.ts +++ b/apps/web/src/queries/tosingSongQuery.ts @@ -102,35 +102,6 @@ export function useDeleteToSingSongMutation() { }); } -// 여러 곡 부를 노래 삭제 - 미사용? - -// export function useDeleteToSingSongArrayMutation() { -// const queryClient = useQueryClient(); - -// return useMutation({ -// mutationFn: (songIds: string[]) => deleteToSingSongArray({ songIds }), -// onMutate: async (songIds: string[]) => { -// queryClient.cancelQueries({ queryKey: ['toSingSong'] }); -// const prev = queryClient.getQueryData(['toSingSong']); -// queryClient.setQueryData(['toSingSong'], (old: ToSingSong[]) => -// old.filter(song => !songIds.includes(song.songs.id)), -// ); -// return { prev }; -// }, -// onError: (error, variables, context) => { -// console.error('error', error); -// alert(error.message ?? 'DELETE 실패'); -// queryClient.setQueryData(['toSingSong'], context?.prev); -// }, -// onSettled: () => { -// queryClient.invalidateQueries({ queryKey: ['toSingSong'] }); -// queryClient.invalidateQueries({ queryKey: ['likeSong'] }); -// queryClient.invalidateQueries({ queryKey: ['saveSongFolder'] }); -// queryClient.invalidateQueries({ queryKey: ['recentSingLog'] }); -// }, -// }); -// } - // 🎵 부를 노래 순서 변경 export function usePatchToSingSongMutation() { const queryClient = useQueryClient();