FreeTube/src/renderer/store/modules/search-history.js

111 lines
2.7 KiB
JavaScript

import { DBSearchHistoryHandlers } from '../../../datastores/handlers/index'
const state = {
pageBookmarks: []
}
const getters = {
getPageBookmarks: () => {
return state.pageBookmarks
},
getPageBookmarkWithRoute: (state) => (route) => {
const pageBookmark = state.pageBookmarks.find(p => p.route === route)
return pageBookmark
},
getPageBookmarksMatchingQuery: (state) => (query, routeToExclude) => {
if (query === '') {
return []
}
const queryToLower = query.toLowerCase()
const pageBookmarks = state.pageBookmarks.filter((pageBookmark) =>
pageBookmark && pageBookmark.bookmarkName.toLowerCase().includes(queryToLower) && pageBookmark.route !== routeToExclude
)
return pageBookmarks
}
}
const actions = {
async grabPageBookmarks({ commit }) {
try {
const results = await DBSearchHistoryHandlers.find()
commit('setPageBookmarks', results)
} catch (errMessage) {
console.error(errMessage)
}
},
async createPageBookmark({ commit }, pageBookmark) {
try {
const newPageBookmark = await DBSearchHistoryHandlers.create(pageBookmark)
commit('addPageBookmarkToList', newPageBookmark)
} catch (errMessage) {
console.error(errMessage)
}
},
async updatePageBookmark({ commit }, pageBookmark) {
try {
await DBSearchHistoryHandlers.upsert(pageBookmark)
commit('upsertPageBookmarkToList', pageBookmark)
} catch (errMessage) {
console.error(errMessage)
}
},
async removePageBookmark({ commit }, route) {
try {
await DBSearchHistoryHandlers.delete(route)
commit('removePageBookmarkFromList', route)
} catch (errMessage) {
console.error(errMessage)
}
},
async removeAllPageBookmarks({ commit }) {
try {
await DBSearchHistoryHandlers.deleteAll()
commit('setPageBookmarks', [])
} catch (errMessage) {
console.error(errMessage)
}
},
}
const mutations = {
addPageBookmarkToList(state, pageBookmark) {
state.pageBookmarks.push(pageBookmark)
},
setPageBookmarks(state, pageBookmarks) {
state.pageBookmarks = pageBookmarks
},
upsertPageBookmarkToList(state, updatedPageBookmark) {
const i = state.pageBookmarks.findIndex((p) => {
return p.route === updatedPageBookmark.route
})
if (i === -1) {
state.pageBookmarks.push(updatedPageBookmark)
} else {
state.pageBookmarks.splice(i, 1, updatedPageBookmark)
}
},
removePageBookmarkFromList(state, route) {
const i = state.pageBookmarks.findIndex((pageBookmark) => {
return pageBookmark.route === route
})
state.pageBookmarks.splice(i, 1)
}
}
export default {
state,
getters,
actions,
mutations
}