Major code rework

This commit is contained in:
RemixDev
2022-02-05 01:15:26 +01:00
parent 5d29424c3a
commit 87164f0644
49 changed files with 562 additions and 927 deletions

View File

@@ -3,7 +3,7 @@ import type { RequestHandler } from 'express'
import { Deezer } from 'deezer-js'
import type { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
export interface RawAlbumQuery {
term: string

View File

@@ -5,7 +5,7 @@ import deemix from 'deemix'
import { Deezer } from 'deezer-js'
import type { ApiHandler, GetTrackResponse, GetAlbumResponse } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
export interface AnalyzeQuery {
term?: string

View File

@@ -1,13 +1,13 @@
import { ApiHandler } from '../../../types'
import { getLatestVersion, isUpdateAvailable } from '../../../main'
const path: ApiHandler['path'] = '/checkForUpdates'
const handler: ApiHandler['handler'] = async (_, res) => {
const latestCommit = await getLatestVersion()
const handler: ApiHandler['handler'] = async (req, res) => {
const deemix = req.app.get('deemix')
const latestCommit = await deemix.getLatestVersion()
res.send({
latestCommit,
updateAvailable: isUpdateAvailable()
updateAvailable: deemix.isUpdateAvailable()
})
}

View File

@@ -2,7 +2,7 @@ import { RequestHandler } from 'express'
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
import { isObjectEmpy } from '../../../helpers/primitive-checks'
import { BadRequestError, isBadRequestError, consoleError } from '../../../helpers/errors'

View File

@@ -1,7 +1,7 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
const path: ApiHandler['path'] = '/getCharts'

View File

@@ -1,7 +1,7 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
const path: ApiHandler['path'] = '/getHome'

View File

@@ -1,13 +1,13 @@
// import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { getQueue } from '../../../main'
const path: ApiHandler['path'] = '/getQueue'
// let homeCache: any
const handler: ApiHandler['handler'] = (_, res) => {
const result: any = getQueue()
const handler: ApiHandler['handler'] = (req, res) => {
const deemix = req.app.get('deemix')
const result: any = deemix.getQueue()
res.send(result)
}

View File

@@ -1,10 +1,10 @@
import { ApiHandler } from '../../../types'
import { getSettings } from '../../../main'
const path: ApiHandler['path'] = '/getSettings'
const handler: ApiHandler['handler'] = (_, res) => {
res.send(getSettings())
const handler: ApiHandler['handler'] = (req, res) => {
const deemix = req.app.get('deemix')
res.send(deemix.getSettings())
}
const apiHandler: ApiHandler = { path, handler }

View File

@@ -1,13 +1,14 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ, plugins } from '../../../main'
import { sessionDZ } from '../../../app'
const path: ApiHandler['path'] = '/getTracklist'
const handler: ApiHandler['handler'] = async (req, res) => {
if (!sessionDZ[req.session.id]) sessionDZ[req.session.id] = new Deezer()
const dz = sessionDZ[req.session.id]
const deemix = req.app.get('deemix')
const list_id = String(req.query.id)
const list_type = String(req.query.type)
@@ -20,7 +21,7 @@ const handler: ApiHandler['handler'] = async (req, res) => {
}
case 'spotifyplaylist':
case 'spotify_playlist': {
if (!plugins.spotify.enabled) {
if (!deemix.plugins.spotify.enabled) {
res.send({
collaborative: false,
description: '',
@@ -40,7 +41,7 @@ const handler: ApiHandler['handler'] = async (req, res) => {
})
break
}
const sp = plugins.spotify.sp
const sp = deemix.plugins.spotify.sp
let playlist = await sp.getPlaylist(list_id)
playlist = playlist.body
let tracklist = playlist.tracks.items

View File

@@ -1,7 +1,7 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
const path: ApiHandler['path'] = '/getUserAlbums'

View File

@@ -1,7 +1,7 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
const path: ApiHandler['path'] = '/getUserArtists'

View File

@@ -1,7 +1,7 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
const path: ApiHandler['path'] = '/getUserFavorites'

View File

@@ -1,7 +1,7 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
const path: ApiHandler['path'] = '/getUserPlaylists'

View File

@@ -1,13 +1,13 @@
import { ApiHandler } from '../../../types'
import { plugins } from '../../../main'
const path: ApiHandler['path'] = '/getUserSpotifyPlaylists'
const handler: ApiHandler['handler'] = async (req, res) => {
let data
const deemix = req.app.get('deemix')
if (plugins.spotify.enabled) {
const sp = plugins.spotify.sp
if (deemix.plugins.spotify.enabled) {
const sp = deemix.plugins.spotify.sp
const username = req.query.spotifyUser
data = []
let playlists = await sp.getUserPlaylists(username)
@@ -22,7 +22,7 @@ const handler: ApiHandler['handler'] = async (req, res) => {
playlistList = playlistList.concat(playlists.items)
}
playlistList.forEach((playlist: any) => {
data.push(plugins.spotify._convertPlaylistStructure(playlist))
data.push(deemix.plugins.spotify._convertPlaylistStructure(playlist))
})
} else {
data = { error: 'spotifyNotEnabled' }

View File

@@ -1,7 +1,7 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
const path: ApiHandler['path'] = '/getUserTracks'

View File

@@ -1,7 +1,7 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
const path: ApiHandler['path'] = '/mainSearch'

View File

@@ -1,7 +1,7 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
import { getAlbumDetails } from './albumSearch'
const path: ApiHandler['path'] = '/newReleases'

View File

@@ -1,7 +1,7 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
const path: ApiHandler['path'] = '/search'

View File

@@ -1,10 +1,10 @@
import { ApiHandler } from '../../../types'
import { plugins } from '../../../main'
const path: ApiHandler['path'] = '/spotifyStatus'
const handler: ApiHandler['handler'] = (_, res) => {
res.send({ spotifyEnabled: plugins.spotify.enabled })
const handler: ApiHandler['handler'] = (req, res) => {
const deemix = req.app.get('deemix')
res.send({ spotifyEnabled: deemix.plugins.spotify.enabled })
}
const apiHandler: ApiHandler = { path, handler }

View File

@@ -1,26 +1,27 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ, addToQueue, getSettings, listener } from '../../../main'
import { sessionDZ } from '../../../app'
const path: ApiHandler['path'] = '/addToQueue'
const handler: ApiHandler['handler'] = async (req, res) => {
if (!sessionDZ[req.session.id]) sessionDZ[req.session.id] = new Deezer()
const deemix = req.app.get('deemix')
const dz = sessionDZ[req.session.id]
const url = req.body.url.split(/[\s;]+/)
let bitrate = req.body.bitrate
if (bitrate === 'null' || bitrate === null) bitrate = getSettings().settings.maxBitrate
if (bitrate === 'null' || bitrate === null) bitrate = deemix.getSettings().settings.maxBitrate
let obj: any
try {
obj = await addToQueue(dz, url, bitrate)
obj = await deemix.addToQueue(dz, url, bitrate)
} catch (e) {
switch (e.name) {
case 'NotLoggedIn':
res.send({ result: false, errid: e.name, data: { url, bitrate } })
listener.send('loginNeededToDownload')
deemix.listener.send('loginNeededToDownload')
break
default:
console.error(e)

View File

@@ -1,10 +1,10 @@
import { ApiHandler } from '../../../types'
import { cancelAllDownloads } from '../../../main'
const path = '/cancelAllDownloads'
const handler: ApiHandler['handler'] = (_, res) => {
cancelAllDownloads()
const handler: ApiHandler['handler'] = (req, res) => {
const deemix = req.app.get('deemix')
deemix.cancelAllDownloads()
res.send({ result: true })
}

View File

@@ -3,7 +3,7 @@ import { RequestHandler } from 'express'
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
const path: ApiHandler['path'] = '/changeAccount'

View File

@@ -1,7 +1,7 @@
import { RequestHandler } from 'express'
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { sessionDZ, startQueue, isDeezerAvailable } from '../../../main'
import { sessionDZ } from '../../../app'
import { ApiHandler } from '../../../types'
export interface RawLoginArlBody {
@@ -21,6 +21,7 @@ const path: ApiHandler['path'] = '/loginArl'
const handler: RequestHandler<{}, {}, RawLoginArlBody, {}> = async (req, res, _) => {
if (!sessionDZ[req.session.id]) sessionDZ[req.session.id] = new Deezer()
const deemix = req.app.get('deemix')
const dz = sessionDZ[req.session.id]
if (!req.body) {
@@ -58,7 +59,7 @@ const handler: RequestHandler<{}, {}, RawLoginArlBody, {}> = async (req, res, _)
response = await testDz.login_via_arl(...loginParams)
}
if (response === LoginStatus.FAILED) sessionDZ[req.session.id] = new Deezer()
if (!(await isDeezerAvailable())) response = LoginStatus.NOT_AVAILABLE
if (!(await deemix.isDeezerAvailable())) response = LoginStatus.NOT_AVAILABLE
const returnValue = {
status: response,
arl: req.body.arl,
@@ -67,7 +68,7 @@ const handler: RequestHandler<{}, {}, RawLoginArlBody, {}> = async (req, res, _)
currentChild: dz.selected_account
}
if (response !== LoginStatus.NOT_AVAILABLE && response !== LoginStatus.FAILED) startQueue(dz)
if (response !== LoginStatus.NOT_AVAILABLE && response !== LoginStatus.FAILED) deemix.startQueue(dz)
return res.status(200).send(returnValue)
}

View File

@@ -1,5 +1,5 @@
import { ApiHandler } from '../../../types'
import { getAccessToken, getArlFromAccessToken } from '../../../main'
import { getAccessToken, getArlFromAccessToken } from '../../../app'
const path = '/loginEmail'

View File

@@ -1,7 +1,7 @@
// @ts-expect-error
import { Deezer } from 'deezer-js'
import { ApiHandler } from '../../../types'
import { sessionDZ } from '../../../main'
import { sessionDZ } from '../../../app'
const path: ApiHandler['path'] = '/logout'

View File

@@ -1,10 +1,10 @@
import { ApiHandler } from '../../../types'
import { clearCompletedDownloads } from '../../../main'
const path = '/removeFinishedDownloads'
const handler: ApiHandler['handler'] = (_, res) => {
clearCompletedDownloads()
const handler: ApiHandler['handler'] = (req, res) => {
const deemix = req.app.get('deemix')
deemix.clearCompletedDownloads()
res.send({ result: true })
}

View File

@@ -1,12 +1,12 @@
import { ApiHandler } from '../../../types'
import { cancelDownload } from '../../../main'
const path = '/removeFromQueue'
const handler: ApiHandler['handler'] = (req, res) => {
const deemix = req.app.get('deemix')
const { uuid } = req.query
if (uuid) {
cancelDownload(uuid)
deemix.cancelDownload(uuid)
res.send({ result: true })
} else {
res.send({ result: false })

View File

@@ -1,5 +1,4 @@
import { ApiHandler, Settings, SpotifySettings } from '../../../types'
import { saveSettings, listener } from '../../../main'
const path = '/saveSettings'
@@ -9,9 +8,10 @@ export interface SaveSettingsData {
}
const handler: ApiHandler['handler'] = (req, res) => {
const deemix = req.app.get('deemix')
const { settings, spotifySettings }: SaveSettingsData = req.query
saveSettings(settings, spotifySettings)
listener.send('updateSettings', { settings, spotifySettings })
deemix.saveSettings(settings, spotifySettings)
deemix.listener.send('updateSettings', { settings, spotifySettings })
res.send({ result: true })
}