1
0

fix(projects): load all projects when first opening Vikunja

This commit is contained in:
kolaente 2024-03-02 13:43:04 +01:00
parent a3932a0a19
commit 89b01e86bc
No known key found for this signature in database
GPG Key ID: F40E70337AB24C9B
5 changed files with 22 additions and 14 deletions

View File

@ -122,7 +122,7 @@ const labelStore = useLabelStore()
labelStore.loadAllLabels() labelStore.loadAllLabels()
const projectStore = useProjectStore() const projectStore = useProjectStore()
projectStore.loadProjects() projectStore.loadAllProjects()
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -111,13 +111,13 @@ export function useSavedFilter(projectId?: MaybeRef<IProject['id']>) {
async function createFilter() { async function createFilter() {
filter.value = await filterService.create(filter.value) filter.value = await filterService.create(filter.value)
await projectStore.loadProjects() await projectStore.loadAllProjects()
router.push({name: 'project.index', params: {projectId: getProjectId(filter.value)}}) router.push({name: 'project.index', params: {projectId: getProjectId(filter.value)}})
} }
async function saveFilter() { async function saveFilter() {
const response = await filterService.update(filter.value) const response = await filterService.update(filter.value)
await projectStore.loadProjects() await projectStore.loadAllProjects()
success({message: t('filters.edit.success')}) success({message: t('filters.edit.success')})
response.filters = objectToSnakeCase(response.filters) response.filters = objectToSnakeCase(response.filters)
filter.value = response filter.value = response
@ -130,7 +130,7 @@ export function useSavedFilter(projectId?: MaybeRef<IProject['id']>) {
async function deleteFilter() { async function deleteFilter() {
await filterService.delete(filter.value) await filterService.delete(filter.value)
await projectStore.loadProjects() await projectStore.loadAllProjects()
success({message: t('filters.delete.success')}) success({message: t('filters.delete.success')})
router.push({name: 'projects.index'}) router.push({name: 'projects.index'})
} }

View File

@ -175,20 +175,28 @@ export const useProjectStore = defineStore('project', () => {
} }
} }
async function loadProjects() { async function loadAllProjects() {
const cancel = setModuleLoading(setIsLoading) const cancel = setModuleLoading(setIsLoading)
const projectService = new ProjectService() const projectService = new ProjectService()
const loadedProjects: IProject[] = []
let page = 1
try { try {
const loadedProjects = await projectService.getAll({}, {is_archived: true}) as IProject[] do {
projects.value = {} const newProjects = await projectService.getAll({}, {is_archived: true}, page) as IProject[]
setProjects(loadedProjects) loadedProjects.push(...newProjects)
loadedProjects.forEach(p => add(p)) page++
} while (page <= projectService.totalPages)
return loadedProjects
} finally { } finally {
cancel() cancel()
} }
projects.value = {}
setProjects(loadedProjects)
loadedProjects.forEach(p => add(p))
return loadedProjects
} }
function getAncestors(project: IProject): IProject[] { function getAncestors(project: IProject): IProject[] {
@ -222,7 +230,7 @@ export const useProjectStore = defineStore('project', () => {
setProjects, setProjects,
removeProjectById, removeProjectById,
toggleProjectFavorite, toggleProjectFavorite,
loadProjects, loadAllProjects,
createProject, createProject,
updateProject, updateProject,
deleteProject, deleteProject,

View File

@ -473,7 +473,7 @@ export const useTaskStore = defineStore('task', () => {
task = await taskService.update(task) task = await taskService.update(task)
// reloading the projects list so that the Favorites project shows up or is hidden when there are (or are not) favorite tasks // reloading the projects list so that the Favorites project shows up or is hidden when there are (or are not) favorite tasks
await projectStore.loadProjects() await projectStore.loadAllProjects()
return task return task
} }

View File

@ -213,7 +213,7 @@ async function migrate() {
const result = await migrationFileService.migrate(migrationConfig as File) const result = await migrationFileService.migrate(migrationConfig as File)
message.value = result.message message.value = result.message
const projectStore = useProjectStore() const projectStore = useProjectStore()
return projectStore.loadProjects() return projectStore.loadAllProjects()
} }
await migrationService.migrate(migrationConfig as MigrationConfig) await migrationService.migrate(migrationConfig as MigrationConfig)