audiobookshelf/client/store/globals.js

121 lines
4.2 KiB
JavaScript
Raw Normal View History

export const state = () => ({
2022-02-09 18:19:02 +01:00
isMobile: false,
isMobileLandscape: false,
showBatchCollectionModal: false,
showCollectionsModal: false,
showEditCollectionModal: false,
showEditPodcastEpisode: false,
showViewPodcastEpisodeModal: false,
showConfirmPrompt: false,
confirmPromptOptions: null,
2022-05-09 01:21:46 +02:00
showEditAuthorModal: false,
selectedEpisode: null,
selectedCollection: null,
2022-05-09 01:21:46 +02:00
selectedAuthor: null,
isCasting: false, // Actively casting
2022-06-17 10:26:10 +02:00
isChromecastInitialized: false, // Script loaded
2022-09-19 17:29:24 +02:00
showBatchQuickMatchModal: false,
2022-06-17 10:26:10 +02:00
dateFormats: [
{
text: 'MM/DD/YYYY',
value: 'MM/dd/yyyy'
},
{
text: 'DD/MM/YYYY',
value: 'dd/MM/yyyy'
},
{
text: 'YYYY-MM-DD',
value: 'yyyy-MM-dd'
}
],
libraryIcons: ['database', 'audiobookshelf', 'books-1', 'books-2', 'book-1', 'microphone-1', 'microphone-3', 'radio', 'podcast', 'rss', 'headphones', 'music', 'file-picture', 'rocket', 'power', 'star', 'heart']
})
export const getters = {
getLibraryItemCoverSrc: (state, getters, rootState, rootGetters) => (libraryItem, placeholder = null) => {
if (!placeholder) placeholder = `${rootState.routerBasePath}/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
const userToken = rootGetters['user/getToken']
const lastUpdate = libraryItem.updatedAt || Date.now()
const libraryItemId = libraryItem.libraryItemId || libraryItem.id // Workaround for /users/:id page showing media progress covers
if (process.env.NODE_ENV !== 'production') { // Testing
return `http://localhost:3333${rootState.routerBasePath}/api/items/${libraryItemId}/cover?token=${userToken}&ts=${lastUpdate}`
}
return `${rootState.routerBasePath}/api/items/${libraryItemId}/cover?token=${userToken}&ts=${lastUpdate}`
},
getLibraryItemCoverSrcById: (state, getters, rootState, rootGetters) => (libraryItemId, placeholder = null) => {
if (!placeholder) placeholder = `${rootState.routerBasePath}/book_placeholder.jpg`
if (!libraryItemId) return placeholder
var userToken = rootGetters['user/getToken']
if (process.env.NODE_ENV !== 'production') { // Testing
return `http://localhost:3333${rootState.routerBasePath}/api/items/${libraryItemId}/cover?token=${userToken}`
}
return `${rootState.routerBasePath}/api/items/${libraryItemId}/cover?token=${userToken}`
}
}
export const mutations = {
2022-02-09 18:19:02 +01:00
updateWindowSize(state, { width, height }) {
2022-02-11 15:50:28 +01:00
state.isMobile = width < 640 || height < 640
2022-02-09 18:19:02 +01:00
state.isMobileLandscape = state.isMobile && height > width
},
setShowCollectionsModal(state, val) {
state.showBatchCollectionModal = false
state.showCollectionsModal = val
},
setShowBatchCollectionsModal(state, val) {
state.showBatchCollectionModal = true
state.showCollectionsModal = val
},
setShowEditCollectionModal(state, val) {
state.showEditCollectionModal = val
},
setShowEditPodcastEpisodeModal(state, val) {
state.showEditPodcastEpisode = val
},
setShowViewPodcastEpisodeModal(state, val) {
state.showViewPodcastEpisodeModal = val
},
setShowConfirmPrompt(state, val) {
state.showConfirmPrompt = val
},
setConfirmPrompt(state, options) {
state.confirmPromptOptions = options
state.showConfirmPrompt = true
},
setEditCollection(state, collection) {
state.selectedCollection = collection
state.showEditCollectionModal = true
},
setSelectedEpisode(state, episode) {
state.selectedEpisode = episode
},
2022-05-09 01:21:46 +02:00
showEditAuthorModal(state, author) {
state.selectedAuthor = author
state.showEditAuthorModal = true
},
setShowEditAuthorModal(state, val) {
state.showEditAuthorModal = val
},
setSelectedAuthor(state, author) {
state.selectedAuthor = author
},
setChromecastInitialized(state, val) {
state.isChromecastInitialized = val
},
setCasting(state, val) {
state.isCasting = val
2022-09-19 17:29:24 +02:00
},
setShowBatchQuickMatchModal(state, val) {
state.showBatchQuickMatchModal = val
}
}