Skip to content

Commit

Permalink
feat: fetch multiple folders with snippets
Browse files Browse the repository at this point in the history
  • Loading branch information
antonreshetov committed Mar 29, 2022
1 parent ee36aad commit 62d427d
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 11 deletions.
1 change: 1 addition & 0 deletions src/main/store/module/types/index.d.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
export interface AppStore {
bounds: object
selectedFolderId?: string
selectedFolderIds?: string[]
selectedSnippetId?: string
}

Expand Down
2 changes: 1 addition & 1 deletion src/renderer/components/sidebar/TheSidebar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ const activeTab = ref<Tab>('library')
const onClickFolder = async (id: string) => {
folderStore.selectId(id)
await snippetStore.getSnippetsByFolderId(id)
await snippetStore.getSnippetsByFolderIds(folderStore.selectedIds as string[])
const firstSnippetId = snippetStore.snippets[0]?.id
snippetStore.getSnippetsById(firstSnippetId)
}
Expand Down
29 changes: 27 additions & 2 deletions src/renderer/store/folders.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { useApi } from '@/composable'
import { store, db } from '@/electron'
import { flatToNested } from '@/utils'
import type { Folder } from '@@/types/db'
import type { Folder, FolderTree } from '@@/types/db'
import { defineStore } from 'pinia'
import type { State } from './types'
import { nestedToFlat } from '../../main/utils'
Expand All @@ -11,12 +11,18 @@ export const useFolderStore = defineStore('folders', {
({
folders: [],
foldersTree: [],
selected: undefined,
selectedId: undefined
} as State),

getters: {
system: state => state.folders.filter(i => i.isSystem),
main: state => state.folders.filter(i => !i.isSystem)
main: state => state.folders.filter(i => !i.isSystem),
selectedIds (): string[] {
const ids = [this.selectedId!]
this.selected?.children.forEach(i => ids.push(i.id))
return ids
}
},

actions: {
Expand Down Expand Up @@ -45,7 +51,26 @@ export const useFolderStore = defineStore('folders', {
},
selectId (id: string) {
this.selectedId = id
this.selected = this.getSelectedFolder()
store.app.set('selectedFolderId', id)
store.app.set('selectedFolderIds', this.selectedIds)
},
getSelectedFolder () {
let folder: FolderTree | undefined

const findFolderById = (id: string, folders: FolderTree[]) => {
folders.forEach(i => {
if (i.id === id) {
folder = i
} else if (i.children) {
findFolderById(id, i.children as FolderTree[])
}
})
}

findFolderById(this.selectedId!, this.foldersTree)

return folder
}
}
})
21 changes: 14 additions & 7 deletions src/renderer/store/snippets.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,20 @@ export const useSnippetStore = defineStore('snippets', {
},

actions: {
async getSnippetsByFolderId (id: string) {
const { data } = await useApi<SnippetWithFolder[]>(
`/folders/${id}/snippets?_expand=folder`
)
.get()
.json()
this.snippets = data.value
async getSnippetsByFolderIds (ids: string[]) {
const snippets: SnippetWithFolder[] = []

for (const id of ids) {
const { data } = await useApi<SnippetWithFolder[]>(
`/folders/${id}/snippets?_expand=folder`
)
.get()
.json()

snippets.push(...data.value)
}

this.snippets = snippets
},
async getSnippetsById (id: string) {
const { data } = await useApi<Snippet>(`/snippets/${id}`).get().json()
Expand Down
3 changes: 2 additions & 1 deletion src/renderer/store/types/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,6 @@ import type { Folder, FolderTree } from '@@/types/db'
export interface State {
folders: Folder[]
foldersTree: FolderTree[]
selectedId: string | undefined
selected?: FolderTree
selectedId?: string
}

0 comments on commit 62d427d

Please sign in to comment.