Remove old code for downloads, user progress, sql, server config. Add web plugin for DbManager

This commit is contained in:
advplyr
2022-04-03 19:16:17 -05:00
parent 9fd3dc6978
commit 4b834cb5c1
25 changed files with 106 additions and 2901 deletions
-131
View File
@@ -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
}
}
-9
View File
@@ -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
View File
@@ -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)
}
}