mirror of
https://github.com/advplyr/audiobookshelf-app.git
synced 2026-08-06 20:08:48 +02:00
Remove old code for downloads, user progress, sql, server config. Add web plugin for DbManager
This commit is contained in:
@@ -1,131 +0,0 @@
|
||||
import { Capacitor } from '@capacitor/core'
|
||||
|
||||
export const state = () => ({
|
||||
downloads: [],
|
||||
showModal: false,
|
||||
mediaScanResults: {},
|
||||
})
|
||||
|
||||
export const getters = {
|
||||
getDownload: (state) => id => {
|
||||
return state.downloads.find(d => d.id === id)
|
||||
},
|
||||
getDownloads: state => {
|
||||
return state.downloads
|
||||
},
|
||||
getDownloadIfReady: (state) => id => {
|
||||
var download = state.downloads.find(d => d.id === id)
|
||||
return !!download && !download.isDownloading && !download.isPreparing ? download : null
|
||||
},
|
||||
getAudiobooks: (state) => {
|
||||
return state.downloads.map(dl => dl.audiobook)
|
||||
}
|
||||
}
|
||||
|
||||
export const actions = {
|
||||
async loadFromStorage({ commit, state }) {
|
||||
var downloads = await this.$sqlStore.getAllDownloads()
|
||||
console.log('Load downloads from storage', downloads.length)
|
||||
downloads.forEach(ab => {
|
||||
if (ab.isDownloading || ab.isPreparing) {
|
||||
ab.isIncomplete = true
|
||||
}
|
||||
ab.isDownloading = false
|
||||
ab.isPreparing = false
|
||||
commit('setDownload', ab)
|
||||
})
|
||||
return state.downloads
|
||||
},
|
||||
async linkOrphanDownloads({ state, commit, rootState }) {
|
||||
if (!state.mediaScanResults || !state.mediaScanResults.folders) {
|
||||
return
|
||||
}
|
||||
|
||||
for (let i = 0; i < state.mediaScanResults.folders.length; i++) {
|
||||
var folder = state.mediaScanResults.folders[i]
|
||||
if (!folder.files || !folder.files.length) return
|
||||
|
||||
var download = state.downloads.find(dl => dl.folderName === folder.name)
|
||||
if (!download) {
|
||||
console.log('Link orphan downloads searching for ' + folder.name)
|
||||
var results = await this.$axios.$get(`/api/libraries/${rootState.libraries.currentLibraryId}/search?q=${folder.name}`)
|
||||
var matchingAb = null
|
||||
if (results && results.audiobooks) {
|
||||
console.log('Link orphan downloads audiobooks ' + results.audiobooks.length)
|
||||
matchingAb = results.audiobooks.find(ab => {
|
||||
return ab.audiobook.book.title === folder.name
|
||||
})
|
||||
}
|
||||
|
||||
if (matchingAb) {
|
||||
matchingAb = matchingAb.audiobook
|
||||
// Found matching download for ab
|
||||
var audioFile = folder.files.find(f => f.isAudio)
|
||||
if (!audioFile) {
|
||||
return
|
||||
}
|
||||
var coverImg = folder.files.find(f => !f.isAudio)
|
||||
const downloadObj = {
|
||||
id: matchingAb.id,
|
||||
audiobook: { ...matchingAb },
|
||||
contentUrl: audioFile.uri,
|
||||
simplePath: audioFile.simplePath,
|
||||
folderUrl: folder.uri,
|
||||
folderName: folder.name,
|
||||
storageType: '',
|
||||
storageId: '',
|
||||
basePath: '',
|
||||
size: audioFile.size,
|
||||
coverUrl: coverImg ? coverImg.uri : null,
|
||||
cover: coverImg ? Capacitor.convertFileSrc(coverImg.uri) : null,
|
||||
coverSize: coverImg ? coverImg.size : 0,
|
||||
coverBasePath: ''
|
||||
}
|
||||
console.log('Link orphan downloads book found ' + matchingAb.book.title)
|
||||
commit('addUpdateDownload', downloadObj)
|
||||
} else {
|
||||
console.log('Link orphan downloads book not found ' + folder.name)
|
||||
}
|
||||
} else {
|
||||
console.log('Link orphan downloads folder already has dl ' + folder.name, JSON.stringify(download))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const mutations = {
|
||||
setShowModal(state, val) {
|
||||
state.showModal = val
|
||||
},
|
||||
setDownload(state, download) {
|
||||
if (!download || !download.id) {
|
||||
return
|
||||
}
|
||||
var index = state.downloads.findIndex(d => d.id === download.id)
|
||||
if (index >= 0) {
|
||||
state.downloads.splice(index, 1, download)
|
||||
} else {
|
||||
state.downloads.push(download)
|
||||
}
|
||||
},
|
||||
addUpdateDownload(state, download) {
|
||||
if (!download || !download.id) {
|
||||
console.error('Orphan invalid download ' + download.id)
|
||||
return
|
||||
}
|
||||
var index = state.downloads.findIndex(d => d.id === download.id)
|
||||
if (index >= 0) {
|
||||
state.downloads.splice(index, 1, download)
|
||||
} else {
|
||||
state.downloads.push(download)
|
||||
}
|
||||
this.$sqlStore.setDownload(download)
|
||||
},
|
||||
removeDownload(state, download) {
|
||||
state.downloads = state.downloads.filter(d => d.id !== download.id)
|
||||
this.$sqlStore.removeDownload(download.id)
|
||||
},
|
||||
setMediaScanResults(state, val) {
|
||||
state.mediaScanResults = val
|
||||
}
|
||||
}
|
||||
@@ -15,10 +15,7 @@ export const state = () => ({
|
||||
hasStoragePermission: false,
|
||||
selectedBook: null,
|
||||
showReader: false,
|
||||
downloadFolder: null,
|
||||
|
||||
showSideDrawer: false,
|
||||
bookshelfView: 'grid',
|
||||
isNetworkListenerInit: false,
|
||||
serverSettings: null
|
||||
})
|
||||
@@ -120,15 +117,9 @@ export const mutations = {
|
||||
setShowReader(state, val) {
|
||||
state.showReader = val
|
||||
},
|
||||
setDownloadFolder(state, val) {
|
||||
state.downloadFolder = val
|
||||
},
|
||||
setShowSideDrawer(state, val) {
|
||||
state.showSideDrawer = val
|
||||
},
|
||||
setBookshelfView(state, val) {
|
||||
state.bookshelfView = val
|
||||
},
|
||||
setServerSettings(state, val) {
|
||||
state.serverSettings = val
|
||||
this.$localStore.setServerSettings(state.serverSettings)
|
||||
|
||||
+1
-69
@@ -1,7 +1,6 @@
|
||||
export const state = () => ({
|
||||
user: null,
|
||||
serverConnectionConfig: null,
|
||||
userAudiobookData: [],
|
||||
settings: {
|
||||
mobileOrderBy: 'addedAt',
|
||||
mobileOrderDesc: true,
|
||||
@@ -12,8 +11,7 @@ export const state = () => ({
|
||||
playbackRate: 1,
|
||||
bookshelfCoverSize: 120
|
||||
},
|
||||
settingsListeners: [],
|
||||
userAudiobooksListeners: []
|
||||
settingsListeners: []
|
||||
})
|
||||
|
||||
export const getters = {
|
||||
@@ -32,17 +30,8 @@ export const getters = {
|
||||
if (!state.user.bookmarks) return []
|
||||
return state.user.bookmarks.filter(bm => bm.libraryItemId === libraryItemId)
|
||||
},
|
||||
getUserAudiobookData: (state, getters) => (audiobookId) => {
|
||||
return getters.getUserAudiobook(audiobookId)
|
||||
},
|
||||
getUserAudiobook: (state, getters) => (audiobookId) => {
|
||||
return state.userAudiobookData.find(uabd => uabd.audiobookId === audiobookId)
|
||||
},
|
||||
getUserSetting: (state) => (key) => {
|
||||
return state.settings ? state.settings[key] || null : null
|
||||
},
|
||||
getFilterOrderKey: (state) => {
|
||||
return Object.values(state.settings).join('-')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -67,41 +56,6 @@ export const actions = {
|
||||
console.log('Update settings without server')
|
||||
commit('setSettings', payload)
|
||||
}
|
||||
},
|
||||
async loadOfflineUserAudiobookData({ state, commit }) {
|
||||
var localUserAudiobookData = await this.$sqlStore.getAllUserAudiobookData() || []
|
||||
if (localUserAudiobookData.length) {
|
||||
console.log('loadOfflineUserAudiobookData found', localUserAudiobookData.length, 'user audiobook data')
|
||||
commit('setAllUserAudiobookData', localUserAudiobookData)
|
||||
} else {
|
||||
console.log('loadOfflineUserAudiobookData No user audiobook data')
|
||||
}
|
||||
},
|
||||
async syncUserAudiobookData({ state, commit }) {
|
||||
if (!state.user) {
|
||||
console.error('Sync user audiobook data invalid no user')
|
||||
return
|
||||
}
|
||||
var localUserAudiobookData = await this.$sqlStore.getAllUserAudiobookData() || []
|
||||
this.$axios.$post(`/api/syncUserAudiobookData`, { data: localUserAudiobookData }).then(async (abData) => {
|
||||
console.log('Synced user audiobook data', abData)
|
||||
await this.$sqlStore.setAllUserAudiobookData(abData)
|
||||
}).catch((error) => {
|
||||
console.error('Failed to sync user ab data', error)
|
||||
})
|
||||
},
|
||||
async updateUserAudiobookData({ state, commit }, uabdUpdate) {
|
||||
var userAbData = state.userAudiobookData.find(uab => uab.audiobookId === uabdUpdate.audiobookId)
|
||||
if (!userAbData) {
|
||||
uabdUpdate.startedAt = Date.now()
|
||||
this.$sqlStore.setUserAudiobookData(uabdUpdate)
|
||||
} else {
|
||||
var mergedUabData = { ...userAbData }
|
||||
for (const key in uabdUpdate) {
|
||||
mergedUabData[key] = uabdUpdate[key]
|
||||
}
|
||||
this.$sqlStore.setUserAudiobookData(mergedUabData)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -116,20 +70,6 @@ export const mutations = {
|
||||
setServerConnectionConfig(state, serverConnectionConfig) {
|
||||
state.serverConnectionConfig = serverConnectionConfig
|
||||
},
|
||||
setUserAudiobookData(state, abdata) {
|
||||
var index = state.userAudiobookData.findIndex(uab => uab.audiobookId === abdata.audiobookId)
|
||||
if (index >= 0) {
|
||||
state.userAudiobookData.splice(index, 1, abdata)
|
||||
} else {
|
||||
state.userAudiobookData.push(abdata)
|
||||
}
|
||||
},
|
||||
removeUserAudiobookData(state, audiobookId) {
|
||||
state.userAudiobookData = state.userAudiobookData.filter(uab => uab.audiobookId !== audiobookId)
|
||||
},
|
||||
setAllUserAudiobookData(state, allAbData) {
|
||||
state.userAudiobookData = allAbData
|
||||
},
|
||||
setSettings(state, settings) {
|
||||
if (!settings) return
|
||||
|
||||
@@ -157,13 +97,5 @@ export const mutations = {
|
||||
},
|
||||
removeSettingsListener(state, listenerId) {
|
||||
state.settingsListeners = state.settingsListeners.filter(l => l.id !== listenerId)
|
||||
},
|
||||
addUserAudiobookListener(state, listener) {
|
||||
var index = state.userAudiobooksListeners.findIndex(l => l.id === listener.id)
|
||||
if (index >= 0) state.userAudiobooksListeners.splice(index, 1, listener)
|
||||
else state.userAudiobooksListeners.push(listener)
|
||||
},
|
||||
removeUserAudiobookListener(state, listenerId) {
|
||||
state.userAudiobooksListeners = state.userAudiobooksListeners.filter(l => l.id !== listenerId)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user