feat: improve store and model typing
This commit is contained in:
@ -1,22 +1,27 @@
|
||||
import AttachmentModel from '@/models/attachment'
|
||||
import FileModel from '@/models/file'
|
||||
import AttachmentModel, { type IAttachment } from '@/models/attachment'
|
||||
import type {IFile} from '@/models/file'
|
||||
|
||||
import AttachmentService from '@/services/attachment'
|
||||
import { store } from '@/store'
|
||||
|
||||
export function uploadFile(taskId: number, file: FileModel, onSuccess: () => Function) {
|
||||
export function uploadFile(taskId: number, file: IFile, onSuccess: () => Function) {
|
||||
const attachmentService = new AttachmentService()
|
||||
const files = [file]
|
||||
|
||||
return uploadFiles(attachmentService, taskId, files, onSuccess)
|
||||
}
|
||||
|
||||
export async function uploadFiles(attachmentService: AttachmentService, taskId: number, files: FileModel[], onSuccess : Function = () => {}) {
|
||||
export async function uploadFiles(
|
||||
attachmentService: AttachmentService,
|
||||
taskId: number,
|
||||
files: IFile[],
|
||||
onSuccess: Function = () => {},
|
||||
) {
|
||||
const attachmentModel = new AttachmentModel({taskId})
|
||||
const response = await attachmentService.create(attachmentModel, files)
|
||||
console.debug(`Uploaded attachments for task ${taskId}, response was`, response)
|
||||
|
||||
response.success?.map((attachment: AttachmentModel) => {
|
||||
response.success?.map((attachment: IAttachment) => {
|
||||
store.dispatch('tasks/addTaskAttachment', {
|
||||
taskId,
|
||||
attachment,
|
||||
|
@ -1,8 +1,7 @@
|
||||
import {i18n} from '@/i18n'
|
||||
import type { IList } from '@/models/list'
|
||||
|
||||
import type ListModal from '@/models/list'
|
||||
|
||||
export function getListTitle(l: ListModal) {
|
||||
export function getListTitle(l: IList) {
|
||||
if (l.id === -1) {
|
||||
return i18n.global.t('list.pseudo.favorites.title')
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
import {i18n} from '@/i18n'
|
||||
import NamespaceModel from '@/models/namespace'
|
||||
import type {INamespace} from '@/models/namespace'
|
||||
|
||||
export const getNamespaceTitle = (n: NamespaceModel) => {
|
||||
export const getNamespaceTitle = (n: INamespace) => {
|
||||
if (n.id === -1) {
|
||||
return i18n.global.t('namespace.pseudo.sharedLists.title')
|
||||
}
|
||||
|
@ -1,18 +1,10 @@
|
||||
import {createNewIndexer} from '../indexes'
|
||||
|
||||
import type {LabelState} from '@/store/types'
|
||||
import type {ILabel} from '@/models/label'
|
||||
|
||||
const {search} = createNewIndexer('labels', ['title', 'description'])
|
||||
|
||||
export interface label {
|
||||
id: number,
|
||||
title: string,
|
||||
}
|
||||
|
||||
interface labelState {
|
||||
labels: {
|
||||
[k: number]: label,
|
||||
},
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a list of labels is available in the store and filters them then query
|
||||
* @param {Object} state
|
||||
@ -20,7 +12,7 @@ interface labelState {
|
||||
* @param {String} query
|
||||
* @returns {Array}
|
||||
*/
|
||||
export function filterLabelsByQuery(state: labelState, labelsToHide: label[], query: string) {
|
||||
export function filterLabelsByQuery(state: LabelState, labelsToHide: ILabel[], query: string) {
|
||||
const labelIdsToHide: number[] = labelsToHide.map(({id}) => id)
|
||||
|
||||
return search(query)
|
||||
@ -36,6 +28,6 @@ export function filterLabelsByQuery(state: labelState, labelsToHide: label[], qu
|
||||
* @param {Array} ids
|
||||
* @returns {Array}
|
||||
*/
|
||||
export function getLabelsByIds(state: labelState, ids: number[]) {
|
||||
export function getLabelsByIds(state: LabelState, ids: ILabel['id'][]) {
|
||||
return Object.values(state.labels).filter(({id}) => ids.includes(id))
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
import ListModel from '@/models/list'
|
||||
import type {IList} from '@/models/list'
|
||||
|
||||
const key = 'collapsedBuckets'
|
||||
|
||||
@ -11,7 +11,10 @@ const getAllState = () => {
|
||||
return JSON.parse(saved)
|
||||
}
|
||||
|
||||
export const saveCollapsedBucketState = (listId: ListModel['id'], collapsedBuckets) => {
|
||||
export const saveCollapsedBucketState = (
|
||||
listId: IList['id'],
|
||||
collapsedBuckets,
|
||||
) => {
|
||||
const state = getAllState()
|
||||
state[listId] = collapsedBuckets
|
||||
for (const bucketId in state[listId]) {
|
||||
@ -22,7 +25,7 @@ export const saveCollapsedBucketState = (listId: ListModel['id'], collapsedBucke
|
||||
localStorage.setItem(key, JSON.stringify(state))
|
||||
}
|
||||
|
||||
export const getCollapsedBucketState = (listId : ListModel['id']) => {
|
||||
export const getCollapsedBucketState = (listId : IList['id']) => {
|
||||
const state = getAllState()
|
||||
if (typeof state[listId] !== 'undefined') {
|
||||
return state[listId]
|
||||
|
@ -1,6 +1,6 @@
|
||||
import ListModel from '@/models/list'
|
||||
import type {IList} from '@/models/list'
|
||||
|
||||
export function getSavedFilterIdFromListId(listId: ListModel['id']) {
|
||||
export function getSavedFilterIdFromListId(listId: IList['id']) {
|
||||
let filterId = listId * -1 - 1
|
||||
// FilterIds from listIds are always positive
|
||||
if (filterId < 0) {
|
||||
|
@ -1,8 +1,8 @@
|
||||
export function findIndexById(array : [], id : string | number) {
|
||||
export function findIndexById<T extends {id: string | number}>(array : T[], id : string | number) {
|
||||
return array.findIndex(({id: currentId}) => currentId === id)
|
||||
}
|
||||
|
||||
export function findById(array : [], id : string | number) {
|
||||
export function findById<T extends {id: string | number}>(array : T[], id : string | number) {
|
||||
return array.find(({id: currentId}) => currentId === id)
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user