2020-06-19 19:53:32 +00:00
|
|
|
// Global Vue components
|
2020-06-24 17:10:10 +00:00
|
|
|
import '@components/LoadingPlaceholder.js'
|
2020-06-19 19:53:32 +00:00
|
|
|
|
|
|
|
// Vue views components
|
2020-06-24 17:10:10 +00:00
|
|
|
import '@components/artist-tab.js'
|
|
|
|
import '@components/charts-tab.js'
|
|
|
|
import '@components/errors-tab.js'
|
|
|
|
import '@components/favorites-tab.js'
|
|
|
|
import '@components/home-tab.js'
|
|
|
|
import '@components/link-analyzer-tab.js'
|
|
|
|
import '@components/main-search.js'
|
|
|
|
import '@components/settings-tab.js'
|
|
|
|
import '@components/tracklist-tab.js'
|
|
|
|
|
|
|
|
import '@components/TestComponent.vue'
|
2020-06-19 19:53:32 +00:00
|
|
|
|
2020-05-07 20:10:13 +00:00
|
|
|
import $ from 'jquery'
|
2020-06-24 17:10:10 +00:00
|
|
|
import { socket } from '@/js/socket.js'
|
|
|
|
import { toast } from '@/js/toasts.js'
|
|
|
|
import Downloads from '@/js/downloads.js'
|
|
|
|
import QualityModal from '@/js/quality-modal.js'
|
|
|
|
import Tabs from '@/js/tabs.js'
|
|
|
|
import Search from '@/js/search.js'
|
|
|
|
import TrackPreview from '@/js/track-preview.js'
|
2020-04-19 20:02:06 +00:00
|
|
|
|
2020-05-15 20:21:31 +00:00
|
|
|
/* ===== App initialization ===== */
|
|
|
|
|
|
|
|
function startApp() {
|
2020-06-19 19:53:32 +00:00
|
|
|
setCurrentUserTheme()
|
2020-05-15 20:21:31 +00:00
|
|
|
|
|
|
|
Downloads.init()
|
|
|
|
QualityModal.init()
|
|
|
|
Tabs.init()
|
|
|
|
Search.linkListeners()
|
|
|
|
TrackPreview.init()
|
|
|
|
}
|
2020-05-22 22:15:29 +00:00
|
|
|
|
|
|
|
function initClient() {
|
2020-05-19 16:30:18 +00:00
|
|
|
window.clientMode = true
|
|
|
|
document.querySelector(`#open_downloads_folder`).classList.remove('hide')
|
|
|
|
}
|
2020-05-15 20:21:31 +00:00
|
|
|
|
|
|
|
document.addEventListener('DOMContentLoaded', startApp)
|
2020-05-19 16:30:18 +00:00
|
|
|
window.addEventListener('pywebviewready', initClient)
|
2020-05-15 20:21:31 +00:00
|
|
|
|
|
|
|
/* ===== General functions ===== */
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the current theme according to
|
|
|
|
* the localStorage saved theme.
|
|
|
|
*/
|
2020-06-19 19:53:32 +00:00
|
|
|
function setCurrentUserTheme() {
|
2020-05-15 20:21:31 +00:00
|
|
|
let selectedTheme = localStorage.getItem('selectedTheme')
|
|
|
|
|
|
|
|
if (selectedTheme) {
|
|
|
|
let activeClass = 'theme_toggler--active'
|
|
|
|
|
|
|
|
document.querySelector(`.${activeClass}`).classList.remove(activeClass)
|
|
|
|
document.querySelector(`.theme_toggler[data-theme-variant="${selectedTheme}"]`).classList.add(activeClass)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-04-19 20:02:06 +00:00
|
|
|
/* ===== Socketio listeners ===== */
|
|
|
|
|
|
|
|
// Debug messages for socketio
|
2020-06-24 17:10:10 +00:00
|
|
|
socket.on('message', function(msg) {
|
2020-04-19 20:02:06 +00:00
|
|
|
console.log(msg)
|
|
|
|
})
|
|
|
|
|
2020-06-24 17:10:10 +00:00
|
|
|
socket.on('logging_in', function() {
|
2020-04-19 20:02:06 +00:00
|
|
|
toast('Logging in', 'loading', false, 'login-toast')
|
|
|
|
})
|
|
|
|
|
2020-06-24 17:10:10 +00:00
|
|
|
socket.on('init_autologin', function() {
|
2020-05-31 12:25:49 +00:00
|
|
|
let arl = localStorage.getItem('arl')
|
2020-05-30 17:31:42 +00:00
|
|
|
let accountNum = localStorage.getItem('accountNum')
|
2020-06-18 16:29:38 +00:00
|
|
|
if (arl) {
|
2020-05-31 12:25:49 +00:00
|
|
|
arl = arl.trim()
|
2020-06-18 16:29:38 +00:00
|
|
|
if (accountNum != 0) {
|
2020-05-30 17:31:42 +00:00
|
|
|
socket.emit('login', arl, true, accountNum)
|
2020-06-18 16:29:38 +00:00
|
|
|
} else {
|
2020-05-30 17:31:42 +00:00
|
|
|
socket.emit('login', arl)
|
|
|
|
}
|
|
|
|
}
|
2020-05-14 11:32:02 +00:00
|
|
|
})
|
|
|
|
|
2020-06-24 17:10:10 +00:00
|
|
|
socket.on('logged_in', function(data) {
|
2020-04-19 20:02:06 +00:00
|
|
|
switch (data.status) {
|
|
|
|
case 1:
|
|
|
|
case 3:
|
|
|
|
toast('Logged in', 'done', true, 'login-toast')
|
|
|
|
if (data.arl) {
|
|
|
|
localStorage.setItem('arl', data.arl)
|
|
|
|
$('#login_input_arl').val(data.arl)
|
|
|
|
}
|
|
|
|
$('#open_login_prompt').hide()
|
|
|
|
if (data.user) {
|
|
|
|
$('#settings_username').text(data.user.name)
|
|
|
|
$('#settings_picture').attr(
|
|
|
|
'src',
|
|
|
|
`https://e-cdns-images.dzcdn.net/images/user/${data.user.picture}/125x125-000000-80-0-0.jpg`
|
|
|
|
)
|
2020-04-29 19:46:10 +00:00
|
|
|
// $('#logged_in_info').show()
|
|
|
|
document.getElementById('logged_in_info').classList.remove('hide')
|
2020-04-19 20:02:06 +00:00
|
|
|
}
|
2020-05-09 12:45:28 +00:00
|
|
|
document.getElementById('home_not_logged_in').classList.add('hide')
|
2020-04-19 20:02:06 +00:00
|
|
|
break
|
|
|
|
case 2:
|
|
|
|
toast('Already logged in', 'done', true, 'login-toast')
|
|
|
|
if (data.user) {
|
|
|
|
$('#settings_username').text(data.user.name)
|
|
|
|
$('#settings_picture').attr(
|
|
|
|
'src',
|
|
|
|
`https://e-cdns-images.dzcdn.net/images/user/${data.user.picture}/125x125-000000-80-0-0.jpg`
|
|
|
|
)
|
2020-04-29 19:46:10 +00:00
|
|
|
// $('#logged_in_info').show()
|
|
|
|
document.getElementById('logged_in_info').classList.remove('hide')
|
2020-04-19 20:02:06 +00:00
|
|
|
}
|
2020-05-09 12:45:28 +00:00
|
|
|
document.getElementById('home_not_logged_in').classList.add('hide')
|
2020-04-19 20:02:06 +00:00
|
|
|
break
|
|
|
|
case 0:
|
|
|
|
toast("Couldn't log in", 'close', true, 'login-toast')
|
|
|
|
localStorage.removeItem('arl')
|
|
|
|
$('#login_input_arl').val('')
|
|
|
|
$('#open_login_prompt').show()
|
2020-04-29 19:46:10 +00:00
|
|
|
document.getElementById('logged_in_info').classList.add('hide')
|
|
|
|
// $('#logged_in_info').hide()
|
2020-04-19 20:02:06 +00:00
|
|
|
$('#settings_username').text('Not Logged')
|
|
|
|
$('#settings_picture').attr('src', `https://e-cdns-images.dzcdn.net/images/user/125x125-000000-80-0-0.jpg`)
|
2020-05-09 12:45:28 +00:00
|
|
|
document.getElementById('home_not_logged_in').classList.remove('hide')
|
2020-04-19 20:02:06 +00:00
|
|
|
break
|
|
|
|
}
|
|
|
|
})
|
|
|
|
|
2020-06-24 17:10:10 +00:00
|
|
|
socket.on('logged_out', function() {
|
2020-04-19 20:02:06 +00:00
|
|
|
toast('Logged out', 'done', true, 'login-toast')
|
|
|
|
localStorage.removeItem('arl')
|
|
|
|
$('#login_input_arl').val('')
|
|
|
|
$('#open_login_prompt').show()
|
2020-04-29 19:46:10 +00:00
|
|
|
document.getElementById('logged_in_info').classList.add('hide')
|
2020-04-19 20:02:06 +00:00
|
|
|
$('#settings_username').text('Not Logged')
|
|
|
|
$('#settings_picture').attr('src', `https://e-cdns-images.dzcdn.net/images/user/125x125-000000-80-0-0.jpg`)
|
2020-05-09 12:45:28 +00:00
|
|
|
document.getElementById('home_not_logged_in').classList.remove('hide')
|
2020-04-19 20:02:06 +00:00
|
|
|
})
|
2020-06-05 08:46:22 +00:00
|
|
|
|
2020-06-24 17:10:10 +00:00
|
|
|
socket.on('cancellingCurrentItem', function(uuid) {
|
2020-06-18 16:29:38 +00:00
|
|
|
toast('Cancelling current item.', 'loading', false, 'cancelling_' + uuid)
|
2020-06-05 08:46:22 +00:00
|
|
|
})
|
|
|
|
|
2020-06-24 17:10:10 +00:00
|
|
|
socket.on('currentItemCancelled', function(uuid) {
|
2020-06-18 16:29:38 +00:00
|
|
|
toast('Current item cancelled.', 'done', true, 'cancelling_' + uuid)
|
2020-06-05 08:46:22 +00:00
|
|
|
})
|
|
|
|
|
2020-06-24 17:10:10 +00:00
|
|
|
socket.on('startAddingArtist', function(data) {
|
2020-06-18 16:29:38 +00:00
|
|
|
toast(`Adding ${data.name} albums to queue`, 'loading', false, 'artist_' + data.id)
|
2020-06-05 08:46:22 +00:00
|
|
|
})
|
|
|
|
|
2020-06-24 17:10:10 +00:00
|
|
|
socket.on('finishAddingArtist', function(data) {
|
2020-06-18 16:29:38 +00:00
|
|
|
toast(`Added ${data.name} albums to queue`, 'done', true, 'artist_' + data.id)
|
2020-06-05 08:46:22 +00:00
|
|
|
})
|
|
|
|
|
2020-06-24 17:10:10 +00:00
|
|
|
socket.on('startConvertingSpotifyPlaylist', function(id) {
|
2020-06-18 16:29:38 +00:00
|
|
|
toast('Converting spotify tracks to deezer tracks', 'loading', false, 'spotifyplaylist_' + id)
|
2020-06-05 08:46:22 +00:00
|
|
|
})
|
|
|
|
|
2020-06-24 17:10:10 +00:00
|
|
|
socket.on('finishConvertingSpotifyPlaylist', function(id) {
|
2020-06-18 16:29:38 +00:00
|
|
|
toast('Spotify playlist converted', 'done', true, 'spotifyplaylist_' + id)
|
2020-06-05 08:46:22 +00:00
|
|
|
})
|
|
|
|
|
2020-06-24 17:10:10 +00:00
|
|
|
socket.on('errorMessage', function(error) {
|
2020-06-05 08:46:22 +00:00
|
|
|
toast(error, 'error')
|
|
|
|
})
|
|
|
|
|
2020-06-24 17:10:10 +00:00
|
|
|
socket.on('alreadyInQueue', function(data) {
|
2020-06-05 08:46:22 +00:00
|
|
|
toast(`${data.title} is already in queue!`, 'playlist_add_check')
|
|
|
|
})
|