import { useHasPermission } from "../hooks/hasPermission"; // eslint-disable-next-line import moduleManager from "../../index"; const UtilsModule = moduleManager.modules.utils; const SpotifyModule = moduleManager.modules.spotify; export default { /** * Fetches tracks from media sources * @param {object} session - the session object automatically added by the websocket * @param {Array} mediaSources - the media sources to get tracks for * @returns {{status: string, data: object}} */ getTracksFromMediaSources: useHasPermission( "spotify.getTracksFromMediaSources", function getTracksFromMediaSources(session, mediaSources, cb) { SpotifyModule.runJob("GET_TRACKS_FROM_MEDIA_SOURCES", { mediaSources }, this) .then(response => { this.log( "SUCCESS", "SPOTIFY_GET_TRACKS_FROM_MEDIA_SOURCES", `Getting tracks from media sources was successful.` ); return cb({ status: "success", data: { tracks: response.tracks } }); }) .catch(async err => { err = await UtilsModule.runJob("GET_ERROR", { error: err }, this); this.log( "ERROR", "SPOTIFY_GET_TRACKS_FROM_MEDIA_SOURCES", `Getting tracks from media sources failed. "${err}"` ); return cb({ status: "error", message: err }); }); } ), /** * Fetches albums from ids * @param {object} session - the session object automatically added by the websocket * @param {Array} albumIds - the ids of the Spotify albums to get * @returns {{status: string, data: object}} */ getAlbumsFromIds: useHasPermission("spotify.getAlbumsFromIds", function getAlbumsFromIds(session, albumIds, cb) { SpotifyModule.runJob("GET_ALBUMS_FROM_IDS", { albumIds }, this) .then(albums => { this.log("SUCCESS", "SPOTIFY_GET_ALBUMS_FROM_IDS", `Getting albums from ids was successful.`); return cb({ status: "success", data: { albums } }); }) .catch(async err => { err = await UtilsModule.runJob("GET_ERROR", { error: err }, this); this.log("ERROR", "SPOTIFY_GET_ALBUMS_FROM_IDS", `Getting albums from ids failed. "${err}"`); return cb({ status: "error", message: err }); }); }), /** * Fetches artists from ids * @param {object} session - the session object automatically added by the websocket * @param {Array} artistIds - the ids of the Spotify artists to get * @returns {{status: string, data: object}} */ getArtistsFromIds: useHasPermission( "spotify.getArtistsFromIds", function getArtistsFromIds(session, artistIds, cb) { SpotifyModule.runJob("GET_ARTISTS_FROM_IDS", { artistIds }, this) .then(artists => { this.log("SUCCESS", "SPOTIFY_GET_ARTISTS_FROM_IDS", `Getting artists from ids was successful.`); return cb({ status: "success", data: { artists } }); }) .catch(async err => { err = await UtilsModule.runJob("GET_ERROR", { error: err }, this); this.log("ERROR", "SPOTIFY_GET_ARTISTS_FROM_IDS", `Getting artists from ids failed. "${err}"`); return cb({ status: "error", message: err }); }); } ) };