import type {IList} from '@/modelTypes/IList' import AbstractService from '@/services/abstractService' import TaskService from '@/services/task' import ListModel from '@/models/list' import {colorFromHex} from '@/helpers/color/colorFromHex' export default class ListService extends AbstractService { constructor() { super({ create: '/namespaces/{namespaceId}/lists', get: '/lists/{id}', getAll: '/lists', update: '/lists/{id}', delete: '/lists/{id}', }) } modelFactory(data) { return new ListModel(data) } beforeUpdate(model) { if(typeof model.tasks !== 'undefined') { const taskService = new TaskService() model.tasks = model.tasks.map(task => { return taskService.beforeUpdate(task) }) } if(typeof model.hexColor !== 'undefined') { model.hexColor = colorFromHex(model.hexColor) } return model } beforeCreate(list: IList) { list.hexColor = colorFromHex(list.hexColor) return list } async loadBackground(list: Pick) { if (list === null || !list.backgroundInformation) { return } const cancel = this.setLoading() try { const response = await this.http({ url: `/lists/${list.id}/background`, method: 'GET', responseType: 'blob', }) return URL.createObjectURL(new Blob([response.data])) } finally { cancel() } } async removeBackground(list: Pick) { const cancel = this.setLoading() try { const response = await this.http.delete(`/lists/${list.id}/background`) return response.data } finally { cancel() } } }