514 lines
15 KiB
JavaScript
514 lines
15 KiB
JavaScript
import Datastore from 'nedb'
|
|
|
|
let dbLocation
|
|
|
|
if (window && window.process && window.process.type === 'renderer') {
|
|
// Electron is being used
|
|
/* let dbLocation = localStorage.getItem('dbLocation')
|
|
|
|
if (dbLocation === null) {
|
|
const electron = require('electron')
|
|
dbLocation = electron.remote.app.getPath('userData')
|
|
} */
|
|
|
|
const electron = require('electron')
|
|
dbLocation = electron.remote.app.getPath('userData')
|
|
|
|
dbLocation = dbLocation + '/settings.db'
|
|
} else {
|
|
dbLocation = 'settings.db'
|
|
}
|
|
|
|
console.log(dbLocation)
|
|
|
|
const settingsDb = new Datastore({
|
|
filename: dbLocation,
|
|
autoload: true
|
|
})
|
|
|
|
const state = {
|
|
currentTheme: 'lightRed',
|
|
backendFallback: true,
|
|
checkForUpdates: true,
|
|
backendPreference: 'local',
|
|
landingPage: 'subscriptions',
|
|
region: 'US',
|
|
listType: 'grid',
|
|
thumbnailPreference: '',
|
|
invidiousInstance: 'https://invidio.us',
|
|
barColor: false,
|
|
rememberHistory: true,
|
|
autoplayVideos: true,
|
|
autoplayPlaylists: true,
|
|
playNextVideo: false,
|
|
enableSubtitles: true,
|
|
forceLocalBackendForLegacy: true,
|
|
proxyVideos: false,
|
|
defaultTheatreMode: false,
|
|
defaultVolume: 1,
|
|
defaultPlayback: 1,
|
|
defaultVideoFormat: 'dash',
|
|
defaultQuality: '720',
|
|
useTor: false,
|
|
proxy: 'SOCKS5://127.0.0.1:9050',
|
|
debugMode: false,
|
|
disctractionFreeMode: false,
|
|
hideWatchedSubs: false,
|
|
usingElectron: true,
|
|
profileList: [{ name: 'All Channels', color: '#304FFE' }],
|
|
defaultProfile: 'All Channels'
|
|
}
|
|
|
|
const getters = {
|
|
getBackendFallback: () => {
|
|
return state.backendFallback
|
|
},
|
|
|
|
getCheckForUpdates: () => {
|
|
return state.checkForUpdates
|
|
},
|
|
|
|
getBarColor: () => {
|
|
return state.barColor
|
|
},
|
|
|
|
getBackendPreference: () => {
|
|
return state.backendPreference
|
|
},
|
|
|
|
getLandingPage: () => {
|
|
return state.landingPage
|
|
},
|
|
|
|
getRegion: () => {
|
|
return state.region
|
|
},
|
|
|
|
getListType: () => {
|
|
return state.listType
|
|
},
|
|
|
|
getThumbnailPreference: () => {
|
|
return state.thumbnailPreference
|
|
},
|
|
|
|
getInvidiousInstance: () => {
|
|
return state.invidiousInstance
|
|
},
|
|
|
|
getRememberHistory: () => {
|
|
return state.rememberHistory
|
|
},
|
|
|
|
getAutoplayVideos: () => {
|
|
return state.autoplayVideos
|
|
},
|
|
|
|
getAutoplayPlaylists: () => {
|
|
return state.autoplayPlaylists
|
|
},
|
|
|
|
getPlayNextVideo: () => {
|
|
return state.playNextVideo
|
|
},
|
|
|
|
getEnableSubtitles: () => {
|
|
return state.enableSubtitles
|
|
},
|
|
|
|
getForceLocalBackendForLegacy: () => {
|
|
return state.forceLocalBackendForLegacy
|
|
},
|
|
|
|
getProxyVideos: () => {
|
|
return state.proxyVideos
|
|
},
|
|
|
|
getDefaultTheatreMode: () => {
|
|
return state.defaultTheatreMode
|
|
},
|
|
|
|
getDefaultVolume: () => {
|
|
return state.defaultVolume
|
|
},
|
|
|
|
getDefaultPlayback: () => {
|
|
return state.defaultPlayback
|
|
},
|
|
|
|
getDefaultVideoFormat: () => {
|
|
return state.defaultVideoFormat
|
|
},
|
|
|
|
getDefaultQuality: () => {
|
|
return state.defaultQuality
|
|
},
|
|
|
|
getUsingElectron: () => {
|
|
return state.usingElectron
|
|
}
|
|
}
|
|
|
|
const actions = {
|
|
grabUserSettings ({ dispatch, commit }) {
|
|
settingsDb.find({}, (err, results) => {
|
|
if (!err) {
|
|
console.log(results)
|
|
results.forEach((result) => {
|
|
switch (result._id) {
|
|
case 'invidiousInstance':
|
|
if (result.value === '') {
|
|
dispatch('updateInvidiousInstance', 'https://invidio.us')
|
|
} else {
|
|
commit('setInvidiousInstance', result.value)
|
|
}
|
|
break
|
|
case 'backendFallback':
|
|
commit('setBackendFallback', result.value)
|
|
break
|
|
case 'checkForUpdates':
|
|
commit('setCheckForUpdates', result.value)
|
|
break
|
|
case 'backendPreference':
|
|
commit('setBackendPreference', result.value)
|
|
break
|
|
case 'landingPage':
|
|
commit('setLandingPage', result.value)
|
|
break
|
|
case 'region':
|
|
commit('setRegion', result.value)
|
|
break
|
|
case 'listType':
|
|
commit('setListType', result.value)
|
|
break
|
|
case 'thumbnailPreference':
|
|
commit('setThumbnailPreference', result.value)
|
|
break
|
|
case 'barColor':
|
|
commit('setBarColor', result.value)
|
|
break
|
|
case 'rememberHistory':
|
|
commit('setRememberHistory', result.value)
|
|
break
|
|
case 'autoplayVideos':
|
|
commit('setAutoplayVideos', result.value)
|
|
break
|
|
case 'autoplayPlaylists':
|
|
commit('setAutoplayPlaylists', result.value)
|
|
break
|
|
case 'playNextVideo':
|
|
commit('setPlayNextVideo', result.value)
|
|
break
|
|
case 'enableSubtitles':
|
|
commit('setEnableSubtitles', result.value)
|
|
break
|
|
case 'forceLocalBackendForLegacy':
|
|
commit('setForceLocalBackendForLegacy', result.value)
|
|
break
|
|
case 'proxyVideos':
|
|
commit('setProxyVideos', result.value)
|
|
break
|
|
case 'defaultTheatreMode':
|
|
commit('setDefaultTheatreMode', result.value)
|
|
break
|
|
case 'defaultVolume':
|
|
commit('setDefaultVolume', result.value)
|
|
sessionStorage.setItem('volume', result.value)
|
|
break
|
|
case 'defaultPlayback':
|
|
commit('setDefaultPlayback', result.value)
|
|
break
|
|
case 'defaultVideoFormat':
|
|
commit('setDefaultVideoFormat', result.value)
|
|
break
|
|
case 'defaultQuality':
|
|
commit('setDefaultQuality', result.value)
|
|
break
|
|
}
|
|
})
|
|
}
|
|
})
|
|
},
|
|
|
|
updateInvidiousInstance ({ commit }, invidiousInstance) {
|
|
console.log(invidiousInstance)
|
|
settingsDb.update({ _id: 'invidiousInstance' }, { _id: 'invidiousInstance', value: invidiousInstance }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setInvidiousInstance', invidiousInstance)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateBackendFallback ({ commit }, backendFallback) {
|
|
settingsDb.update({ _id: 'backendFallback' }, { _id: 'backendFallback', value: backendFallback }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setBackendFallback', backendFallback)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateCheckForUpdates ({ commit }, checkForUpdates) {
|
|
settingsDb.update({ _id: 'checkForUpdates' }, { _id: 'checkForUpdates', value: checkForUpdates }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setCheckForUpdates', checkForUpdates)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateBackendPreference ({ commit }, backendPreference) {
|
|
settingsDb.update({ _id: 'backendPreference' }, { _id: 'backendPreference', value: backendPreference }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setBackendPreference', backendPreference)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateLandingPage ({ commit }, landingPage) {
|
|
settingsDb.update({ _id: 'landingPage' }, { _id: 'landingPage', value: landingPage }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setLandingPage', landingPage)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateRegion ({ commit }, region) {
|
|
settingsDb.update({ _id: 'region' }, { _id: 'region', value: region }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setRegion', region)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateListType ({ commit }, listType) {
|
|
settingsDb.update({ _id: 'listType' }, { _id: 'listType', value: listType }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setListType', listType)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateThumbnailPreference ({ commit }, thumbnailPreference) {
|
|
settingsDb.update({ _id: 'thumbnailPreference' }, { _id: 'thumbnailPreference', value: thumbnailPreference }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setThumbnailPreference', thumbnailPreference)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateBarColor ({ commit }, barColor) {
|
|
settingsDb.update({ _id: 'barColor' }, { _id: 'barColor', value: barColor }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setBarColor', barColor)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateRememberHistory ({ commit }, history) {
|
|
settingsDb.update({ _id: 'rememberHistory' }, { _id: 'rememberHistory', value: history }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setRememberHistory', history)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateAutoplayVideos ({ commit }, autoplayVideos) {
|
|
settingsDb.update({ _id: 'autoplayVideos' }, { _id: 'autoplayVideos', value: autoplayVideos }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setAutoplayVideos', autoplayVideos)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateAutoplayPlaylists ({ commit }, autoplayPlaylists) {
|
|
settingsDb.update({ _id: 'autoplayPlaylists' }, { _id: 'autoplayPlaylists', value: autoplayPlaylists }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setAutoplayPlaylists', autoplayPlaylists)
|
|
}
|
|
})
|
|
},
|
|
|
|
updatePlayNextVideo ({ commit }, playNextVideo) {
|
|
settingsDb.update({ _id: 'playNextVideo' }, { _id: 'playNextVideo', value: playNextVideo }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setPlayNextVideo', playNextVideo)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateEnableSubtitles ({ commit }, enableSubtitles) {
|
|
settingsDb.update({ _id: 'enableSubtitles' }, { _id: 'enableSubtitles', value: enableSubtitles }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setEnableSubtitles', enableSubtitles)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateForceLocalBackendForLegacy ({ commit }, forceLocalBackendForLegacy) {
|
|
settingsDb.update({ _id: 'forceLocalBackendForLegacy' }, { _id: 'forceLocalBackendForLegacy', value: forceLocalBackendForLegacy }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setForceLocalBackendForLegacy', forceLocalBackendForLegacy)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateProxyVideos ({ commit }, proxyVideos) {
|
|
settingsDb.update({ _id: 'proxyVideos' }, { _id: 'proxyVideos', value: proxyVideos }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setProxyVideos', proxyVideos)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateDefaultTheatreMode ({ commit }, defaultTheatreMode) {
|
|
settingsDb.update({ _id: 'defaultTheatreMode' }, { _id: 'defaultTheatreMode', value: defaultTheatreMode }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setDefaultTheatreMode', defaultTheatreMode)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateDefaultVolume ({ commit }, defaultVolume) {
|
|
settingsDb.update({ _id: 'defaultVolume' }, { _id: 'defaultVolume', value: defaultVolume }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setDefaultVolume', defaultVolume)
|
|
sessionStorage.setItem('volume', defaultVolume)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateDefaultPlayback ({ commit }, defaultPlayback) {
|
|
settingsDb.update({ _id: 'defaultPlayback' }, { _id: 'defaultPlayback', value: defaultPlayback }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setDefaultPlayback', defaultPlayback)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateDefaultVideoFormat ({ commit }, defaultVideoFormat) {
|
|
settingsDb.update({ _id: 'defaultVideoFormat' }, { _id: 'defaultVideoFormat', value: defaultVideoFormat }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setDefaultVideoFormat', defaultVideoFormat)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateDefaultQuality ({ commit }, defaultQuality) {
|
|
settingsDb.update({ _id: 'defaultQuality' }, { _id: 'defaultQuality', value: defaultQuality }, { upsert: true }, (err, numReplaced) => {
|
|
if (!err) {
|
|
commit('setDefaultQuality', defaultQuality)
|
|
}
|
|
})
|
|
},
|
|
|
|
updateUseTor ({ commit }, useTor) {
|
|
settingsDb.update({ _id: useTor }, { value: useTor }, { upsert: true }, (err, useTor) => {
|
|
if (!err) {
|
|
commit('setUseTor', useTor)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
const mutations = {
|
|
setInvidiousInstance (state, invidiousInstance) {
|
|
state.invidiousInstance = invidiousInstance
|
|
},
|
|
setCurrentTheme (state, currentTheme) {
|
|
state.barColor = currentTheme
|
|
},
|
|
setBackendFallback (state, backendFallback) {
|
|
state.backendFallback = backendFallback
|
|
},
|
|
setCheckForUpdates (state, checkForUpdates) {
|
|
state.checkForUpdates = checkForUpdates
|
|
},
|
|
setBackendPreference (state, backendPreference) {
|
|
state.backendPreference = backendPreference
|
|
},
|
|
setLandingPage (state, defaultLandingPage) {
|
|
state.defaultLandingPage = defaultLandingPage
|
|
},
|
|
setRegion (state, region) {
|
|
state.region = region
|
|
},
|
|
setListType (state, listType) {
|
|
state.listType = listType
|
|
},
|
|
setThumbnailPreference (state, thumbnailPreference) {
|
|
state.thumbnailPreference = thumbnailPreference
|
|
},
|
|
setBarColor (state, barColor) {
|
|
state.barColor = barColor
|
|
},
|
|
setRememberHistory (state, rememberHistory) {
|
|
state.rememberHistory = rememberHistory
|
|
},
|
|
setAutoplayVideos (state, autoplayVideos) {
|
|
state.autoplayVideos = autoplayVideos
|
|
},
|
|
setAutoplayPlaylists (state, autoplayPlaylists) {
|
|
state.autoplayPlaylists = autoplayPlaylists
|
|
},
|
|
setPlayNextVideo (state, playNextVideo) {
|
|
state.playNextVideo = playNextVideo
|
|
},
|
|
setEnableSubtitles (state, enableSubtitles) {
|
|
state.enableSubtitles = enableSubtitles
|
|
},
|
|
setForceLocalBackendForLegacy (state, forceLocalBackendForLegacy) {
|
|
state.forceLocalBackendForLegacy = forceLocalBackendForLegacy
|
|
},
|
|
setProxyVideos (state, proxyVideos) {
|
|
state.proxyVideos = proxyVideos
|
|
},
|
|
setDefaultVolume (state, defaultVolume) {
|
|
state.defaultVolume = defaultVolume
|
|
},
|
|
setDefaultPlayback (state, defaultPlayback) {
|
|
state.defaultPlayback = defaultPlayback
|
|
},
|
|
setDefaultVideoFormat (state, defaultVideoFormat) {
|
|
state.defaultVideoFormat = defaultVideoFormat
|
|
},
|
|
setDefaultQuality (state, defaultQuality) {
|
|
state.defaultQuality = defaultQuality
|
|
},
|
|
setProxy (state, proxy) {
|
|
state.proxy = proxy
|
|
},
|
|
setDefaultTheatreMode (state, defaultTheatreMode) {
|
|
state.defaultTheatreMode = defaultTheatreMode
|
|
},
|
|
setUseTor (state, useTor) {
|
|
state.useTor = useTor
|
|
},
|
|
setDebugMode (state, debugMode) {
|
|
state.debugMode = debugMode
|
|
},
|
|
setDistractionFreeMode (state, disctractionFreeMode) {
|
|
state.disctractionFreeMode = disctractionFreeMode
|
|
},
|
|
setHideWatchedSubs (state, hideWatchedSubs) {
|
|
state.hideWatchedSubs = hideWatchedSubs
|
|
},
|
|
setUsingElectron (state, usingElectron) {
|
|
state.usingElectron = usingElectron
|
|
},
|
|
setVideoView (state, videoView) {
|
|
state.videoView = videoView
|
|
},
|
|
setProfileList (state, profileList) {
|
|
state.profileList = profileList
|
|
},
|
|
setDefaultProfile (state, defaultProfile) {
|
|
state.defaultProfile = defaultProfile
|
|
}
|
|
}
|
|
|
|
export default {
|
|
state,
|
|
getters,
|
|
actions,
|
|
mutations
|
|
}
|