useSoundcloudDirect.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { ref } from "vue";
  2. import Toast from "toasters";
  3. import { AddSongToPlaylistResponse } from "@musare_types/actions/PlaylistsActions";
  4. import { useWebsocketsStore } from "@/stores/websockets";
  5. export const useSoundcloudDirect = () => {
  6. const soundcloudDirect = ref("");
  7. const { socket } = useWebsocketsStore();
  8. const addToPlaylist = (playlistId: string) => {
  9. const url = soundcloudDirect.value.trim();
  10. socket.dispatch(
  11. "playlists.addSongToPlaylist",
  12. false,
  13. url,
  14. playlistId,
  15. (res: AddSongToPlaylistResponse) => {
  16. if (res.status !== "success")
  17. new Toast(`Error: ${res.message}`);
  18. else {
  19. new Toast(res.message);
  20. soundcloudDirect.value = "";
  21. }
  22. }
  23. );
  24. };
  25. const addToQueue = (stationId: string) => {
  26. const url = soundcloudDirect.value.trim();
  27. socket.dispatch(
  28. "stations.addToQueue",
  29. stationId,
  30. url,
  31. "manual",
  32. res => {
  33. if (res.status !== "success")
  34. new Toast(`Error: ${res.message}`);
  35. else {
  36. new Toast(res.message);
  37. soundcloudDirect.value = "";
  38. }
  39. }
  40. );
  41. };
  42. return {
  43. soundcloudDirect,
  44. addToPlaylist,
  45. addToQueue
  46. };
  47. };