deemix-webui/src/app.js

176 lines
4.5 KiB
JavaScript
Raw Normal View History

import Vue from 'vue'
// Object is needed for vue change detection
window.vol = {
preview_max_volume: 100
}
import App from '@components/App.vue'
import i18n from '@/plugins/i18n'
import router from '@/router'
import store from '@/store'
import { socket } from '@/utils/socket'
import { toast } from '@/utils/toasts'
import { init as initTabs } from '@js/tabs.js'
2020-04-19 22:02:06 +02:00
import { isValidURL } from '@/utils/utils'
import Downloads from '@/utils/downloads'
import EventBus from '@/utils/EventBus.js'
/* ===== App initialization ===== */
function startApp() {
mountApp()
initTabs()
}
function mountApp() {
new Vue({
store,
2020-07-28 21:39:44 +02:00
router,
i18n,
render: h => h(App)
}).$mount('#app')
}
function initClient() {
window.clientMode = true
document.querySelector(`#open_downloads_folder`).classList.remove('hide')
2020-08-05 15:54:42 +02:00
document.querySelector(`#select_downloads_folder`).classList.remove('hide')
2020-08-12 16:32:58 +02:00
document.querySelector(`#settings_btn_applogin`).classList.remove('hide')
}
document.addEventListener('DOMContentLoaded', startApp)
window.addEventListener('pywebviewready', initClient)
/* ===== Global shortcuts ===== */
document.addEventListener('keyup', keyEvent => {
2020-09-17 22:43:52 +02:00
if (keyEvent.key == 'Backspace' && keyEvent.ctrlKey) {
let searchbar = document.querySelector('#searchbar')
2020-09-17 22:43:52 +02:00
searchbar.value = ''
searchbar.focus()
}
})
document.addEventListener('paste', pasteEvent => {
2020-09-17 22:43:52 +02:00
let pasteText = pasteEvent.clipboardData.getData('Text')
if (pasteEvent.target.localName != 'input') {
if (isValidURL(pasteText)) {
if (window.main_selected === 'analyzer_tab') {
2020-08-25 15:34:10 +02:00
EventBus.$emit('linkAnalyzerTab:reset')
socket.emit('analyzeLink', pasteText)
} else {
Downloads.sendAddToQueue(pasteText)
}
2020-09-17 22:43:52 +02:00
} else {
2020-08-25 15:34:10 +02:00
let searchbar = document.querySelector('#searchbar')
searchbar.select()
searchbar.setSelectionRange(0, 99999)
}
}
})
2020-04-19 22:02:06 +02:00
/* ===== Socketio listeners ===== */
// Debug messages for socketio
socket.on('message', function(msg) {
2020-04-19 22:02:06 +02:00
console.log(msg)
})
socket.on('logging_in', function() {
toast(i18n.t('toasts.loggingIn'), 'loading', false, 'login-toast')
2020-04-19 22:02:06 +02:00
})
socket.on('init_autologin', function() {
let arl = localStorage.getItem('arl')
let accountNum = localStorage.getItem('accountNum')
if (arl) {
arl = arl.trim()
if (accountNum != 0) {
socket.emit('login', arl, true, accountNum)
} else {
socket.emit('login', arl)
}
}
})
socket.on('logged_in', function(data) {
2020-09-17 22:43:52 +02:00
const { status, user } = data
console.log('on logged')
switch (status) {
2020-04-19 22:02:06 +02:00
case 1:
case 3:
2020-09-17 22:43:52 +02:00
// Login ok
toast(i18n.t('toasts.loggedIn'), 'done', true, 'login-toast')
2020-09-17 22:43:52 +02:00
store.dispatch('login', data)
2020-04-19 22:02:06 +02:00
break
case 2:
2020-09-17 22:43:52 +02:00
// Already logged in
toast(i18n.t('toasts.alreadyLogged'), 'done', true, 'login-toast')
2020-09-17 22:43:52 +02:00
store.dispatch('setUser', user)
2020-04-19 22:02:06 +02:00
break
case 0:
2020-09-17 22:43:52 +02:00
// Login failed
toast(i18n.t('toasts.loginFailed'), 'close', true, 'login-toast')
2020-09-17 22:43:52 +02:00
store.dispatch('removeARL')
2020-04-19 22:02:06 +02:00
break
}
})
socket.on('logged_out', function() {
toast(i18n.t('toasts.loggedOut'), 'done', true, 'login-toast')
2020-09-17 22:43:52 +02:00
store.dispatch('logout')
2020-04-19 22:02:06 +02:00
})
socket.on('restoringQueue', function() {
toast(i18n.t('toasts.restoringQueue'), 'loading', false, 'restoring_queue')
})
socket.on('cancellingCurrentItem', function(uuid) {
toast(i18n.t('toasts.cancellingCurrentItem'), 'loading', false, 'cancelling_' + uuid)
})
socket.on('currentItemCancelled', function(uuid) {
toast(i18n.t('toasts.currentItemCancelled'), 'done', true, 'cancelling_' + uuid)
})
socket.on('startAddingArtist', function(data) {
2020-09-17 22:43:52 +02:00
toast(i18n.t('toasts.startAddingArtist', { artist: data.name }), 'loading', false, 'artist_' + data.id)
})
socket.on('finishAddingArtist', function(data) {
2020-09-17 22:43:52 +02:00
toast(i18n.t('toasts.finishAddingArtist', { artist: data.name }), 'done', true, 'artist_' + data.id)
})
socket.on('startConvertingSpotifyPlaylist', function(id) {
toast(i18n.t('toasts.startConvertingSpotifyPlaylist'), 'loading', false, 'spotifyplaylist_' + id)
})
socket.on('finishConvertingSpotifyPlaylist', function(id) {
toast(i18n.t('toasts.finishConvertingSpotifyPlaylist'), 'done', true, 'spotifyplaylist_' + id)
})
socket.on('errorMessage', function(error) {
toast(error, 'error')
})
socket.on('queueError', function(queueItem) {
if (queueItem.errid) toast(i18n.t(`errors.ids.${queueItem.errid}`), 'error')
else toast(queueItem.error, 'error')
})
socket.on('alreadyInQueue', function(data) {
2020-09-17 22:43:52 +02:00
toast(i18n.t('toasts.alreadyInQueue', { item: data.title }), 'playlist_add_check')
})
socket.on('loginNeededToDownload', function(data) {
toast(i18n.t('toasts.loginNeededToDownload'), 'report')
})