feat: attachments store with composition api #2603

Merged
konrad merged 1 commits from dpschen/frontend:feature/feat-pinia-composition-attachments into main 2022-10-31 20:40:29 +00:00
1 changed files with 22 additions and 22 deletions
Showing only changes of commit 17c07a54f9 - Show all commits

View File

@ -1,34 +1,34 @@
import {ref, readonly} from 'vue'
import {defineStore, acceptHMRUpdate} from 'pinia' import {defineStore, acceptHMRUpdate} from 'pinia'
import {findIndexById} from '@/helpers/utils' import {findIndexById} from '@/helpers/utils'
import type {IAttachment} from '@/modelTypes/IAttachment' import type {IAttachment} from '@/modelTypes/IAttachment'
export interface AttachmentState { export const useAttachmentStore = defineStore('attachment', () => {
attachments: IAttachment[], const attachments = ref<IAttachment[]>([])
}
export const useAttachmentStore = defineStore('attachment', { function set(newAttachments: IAttachment[]) {
state: (): AttachmentState => ({ console.debug('Set attachments', newAttachments)
attachments: [], attachments.value = newAttachments
}), }
actions: { function add(attachment: IAttachment) {
set(attachments: IAttachment[]) { console.debug('Add attachement', attachment)
console.debug('Set attachments', attachments) attachments.value.push(attachment)
this.attachments = attachments }
},
add(attachment: IAttachment) { function removeById(id: IAttachment['id']) {
console.debug('Add attachement', attachment) const attachmentIndex = findIndexById(attachments.value, id)
this.attachments.push(attachment) attachments.value.splice(attachmentIndex, 1)
}, console.debug('Remove attachement', id)
}
removeById(id: IAttachment['id']) { return {
const attachmentIndex = findIndexById(this.attachments, id) attachments: readonly(attachments),
this.attachments.splice(attachmentIndex, 1) set,
console.debug('Remove attachement', id) add,
}, removeById,
}, }
}) })
// support hot reloading // support hot reloading