2022-03-23 17:59:14 -05:00
|
|
|
export const state = () => ({
|
2022-07-04 15:42:59 -05:00
|
|
|
isModalOpen: false,
|
2022-04-07 19:59:23 -05:00
|
|
|
itemDownloads: [],
|
2022-04-08 19:05:32 -05:00
|
|
|
bookshelfListView: false,
|
2022-04-09 12:03:37 -05:00
|
|
|
series: null,
|
2022-04-26 17:05:49 -05:00
|
|
|
localMediaProgress: [],
|
2022-07-01 20:05:11 -05:00
|
|
|
lastSearch: null,
|
|
|
|
jumpForwardItems: [
|
|
|
|
{
|
|
|
|
icon: 'forward_5',
|
|
|
|
value: 5
|
|
|
|
},
|
|
|
|
{
|
|
|
|
icon: 'forward_10',
|
|
|
|
value: 10
|
|
|
|
},
|
|
|
|
{
|
|
|
|
icon: 'forward_30',
|
|
|
|
value: 30
|
|
|
|
}
|
|
|
|
],
|
|
|
|
jumpBackwardsItems: [
|
|
|
|
{
|
|
|
|
icon: 'replay_5',
|
|
|
|
value: 5
|
|
|
|
},
|
|
|
|
{
|
|
|
|
icon: 'replay_10',
|
|
|
|
value: 10
|
|
|
|
},
|
|
|
|
{
|
|
|
|
icon: 'replay_30',
|
|
|
|
value: 30
|
|
|
|
}
|
2022-10-19 10:56:31 -05:00
|
|
|
],
|
2022-12-03 17:05:43 -06:00
|
|
|
libraryIcons: ['database', 'audiobookshelf', 'books-1', 'books-2', 'book-1', 'microphone-1', 'microphone-3', 'radio', 'podcast', 'rss', 'headphones', 'music', 'file-picture', 'rocket', 'power', 'star', 'heart'],
|
|
|
|
selectedPlaylistItems: [],
|
|
|
|
showPlaylistsAddCreateModal: false
|
2022-03-23 17:59:14 -05:00
|
|
|
})
|
|
|
|
|
|
|
|
export const getters = {
|
2022-04-10 20:31:47 -05:00
|
|
|
getDownloadItem: state => (libraryItemId, episodeId = null) => {
|
|
|
|
return state.itemDownloads.find(i => {
|
|
|
|
if (episodeId && !i.episodes.some(e => e.id == episodeId)) return false
|
2022-04-15 20:48:39 -05:00
|
|
|
return i.libraryItemId == libraryItemId
|
2022-04-10 20:31:47 -05:00
|
|
|
})
|
2022-04-07 18:46:58 -05:00
|
|
|
},
|
2022-03-23 17:59:14 -05:00
|
|
|
getLibraryItemCoverSrc: (state, getters, rootState, rootGetters) => (libraryItem, placeholder = '/book_placeholder.jpg') => {
|
|
|
|
if (!libraryItem) return placeholder
|
|
|
|
var media = libraryItem.media
|
|
|
|
if (!media || !media.coverPath || media.coverPath === placeholder) return placeholder
|
|
|
|
|
|
|
|
// Absolute URL covers (should no longer be used)
|
|
|
|
if (media.coverPath.startsWith('http:') || media.coverPath.startsWith('https:')) return media.coverPath
|
|
|
|
|
|
|
|
var userToken = rootGetters['user/getToken']
|
2022-06-05 16:32:28 -05:00
|
|
|
var serverAddress = rootGetters['user/getServerAddress']
|
|
|
|
if (!userToken || !serverAddress) return placeholder
|
|
|
|
|
2022-03-23 17:59:14 -05:00
|
|
|
var lastUpdate = libraryItem.updatedAt || Date.now()
|
|
|
|
|
|
|
|
if (process.env.NODE_ENV !== 'production') { // Testing
|
|
|
|
// return `http://localhost:3333/api/items/${libraryItem.id}/cover?token=${userToken}&ts=${lastUpdate}`
|
|
|
|
}
|
|
|
|
|
2022-06-05 16:32:28 -05:00
|
|
|
var url = new URL(`/api/items/${libraryItem.id}/cover`, serverAddress)
|
2022-03-23 17:59:14 -05:00
|
|
|
return `${url}?token=${userToken}&ts=${lastUpdate}`
|
2022-04-09 12:03:37 -05:00
|
|
|
},
|
|
|
|
getLocalMediaProgressById: (state) => (localLibraryItemId, episodeId = null) => {
|
|
|
|
return state.localMediaProgress.find(lmp => {
|
2022-04-15 20:48:39 -05:00
|
|
|
if (episodeId != null && lmp.localEpisodeId != episodeId) return false
|
2022-04-09 12:03:37 -05:00
|
|
|
return lmp.localLibraryItemId == localLibraryItemId
|
|
|
|
})
|
2022-06-01 19:38:26 -05:00
|
|
|
},
|
|
|
|
getLocalMediaProgressByServerItemId: (state) => (libraryItemId, episodeId = null) => {
|
|
|
|
return state.localMediaProgress.find(lmp => {
|
|
|
|
if (episodeId != null && lmp.episodeId != episodeId) return false
|
|
|
|
return lmp.libraryItemId == libraryItemId
|
|
|
|
})
|
2022-07-01 20:05:11 -05:00
|
|
|
},
|
|
|
|
getJumpForwardIcon: state => (jumpForwardTime) => {
|
|
|
|
const item = state.jumpForwardItems.find(i => i.value == jumpForwardTime)
|
|
|
|
return item ? item.icon : 'forward_10'
|
|
|
|
},
|
|
|
|
getJumpBackwardsIcon: state => (jumpBackwardsTime) => {
|
|
|
|
const item = state.jumpBackwardsItems.find(i => i.value == jumpBackwardsTime)
|
|
|
|
return item ? item.icon : 'replay_10'
|
2022-03-23 17:59:14 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export const actions = {
|
2022-04-09 12:03:37 -05:00
|
|
|
async loadLocalMediaProgress({ state, commit }) {
|
|
|
|
var mediaProgress = await this.$db.getAllLocalMediaProgress()
|
|
|
|
commit('setLocalMediaProgress', mediaProgress)
|
|
|
|
}
|
2022-03-23 17:59:14 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
export const mutations = {
|
2022-07-04 15:42:59 -05:00
|
|
|
setIsModalOpen(state, val) {
|
|
|
|
state.isModalOpen = val
|
|
|
|
},
|
2022-04-07 18:46:58 -05:00
|
|
|
addUpdateItemDownload(state, downloadItem) {
|
|
|
|
var index = state.itemDownloads.findIndex(i => i.id == downloadItem.id)
|
|
|
|
if (index >= 0) {
|
|
|
|
state.itemDownloads.splice(index, 1, downloadItem)
|
|
|
|
} else {
|
|
|
|
state.itemDownloads.push(downloadItem)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
removeItemDownload(state, id) {
|
|
|
|
state.itemDownloads = state.itemDownloads.filter(i => i.id != id)
|
2022-04-07 19:59:23 -05:00
|
|
|
},
|
|
|
|
setBookshelfListView(state, val) {
|
|
|
|
state.bookshelfListView = val
|
2022-04-08 19:05:32 -05:00
|
|
|
},
|
|
|
|
setSeries(state, val) {
|
|
|
|
state.series = val
|
2022-04-09 12:03:37 -05:00
|
|
|
},
|
|
|
|
setLocalMediaProgress(state, val) {
|
|
|
|
state.localMediaProgress = val
|
|
|
|
},
|
|
|
|
updateLocalMediaProgress(state, prog) {
|
|
|
|
if (!prog || !prog.id) {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
var index = state.localMediaProgress.findIndex(lmp => lmp.id == prog.id)
|
|
|
|
if (index >= 0) {
|
|
|
|
state.localMediaProgress.splice(index, 1, prog)
|
|
|
|
} else {
|
|
|
|
state.localMediaProgress.push(prog)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
removeLocalMediaProgress(state, id) {
|
|
|
|
state.localMediaProgress = state.localMediaProgress.filter(lmp => lmp.id != id)
|
2022-04-26 17:05:49 -05:00
|
|
|
},
|
2022-06-01 19:38:26 -05:00
|
|
|
removeLocalMediaProgressForItem(state, llid) {
|
|
|
|
state.localMediaProgress = state.localMediaProgress.filter(lmp => lmp.localLibraryItemId !== llid)
|
|
|
|
},
|
2022-04-26 17:05:49 -05:00
|
|
|
setLastSearch(state, val) {
|
|
|
|
state.lastSearch = val
|
2022-12-03 17:05:43 -06:00
|
|
|
},
|
|
|
|
setSelectedPlaylistItems(state, items) {
|
|
|
|
state.selectedPlaylistItems = items
|
|
|
|
},
|
|
|
|
setShowPlaylistsAddCreateModal(state, val) {
|
|
|
|
state.showPlaylistsAddCreateModal = val
|
2022-04-07 18:46:58 -05:00
|
|
|
}
|
2022-03-23 17:59:14 -05:00
|
|
|
}
|