feat: improve store and model typing
This commit is contained in:
@ -68,11 +68,11 @@ import SavedFilterService from '@/services/savedFilter'
|
||||
|
||||
import {objectToSnakeCase} from '@/helpers/case'
|
||||
import {getSavedFilterIdFromListId} from '@/helpers/savedFilter'
|
||||
import type ListModel from '@/models/list'
|
||||
import type { IList } from '@/models/list'
|
||||
|
||||
const {t} = useI18n({useScope: 'global'})
|
||||
|
||||
function useSavedFilter(listId: MaybeRef<ListModel['id']>) {
|
||||
function useSavedFilter(listId: MaybeRef<IList['id']>) {
|
||||
const filterService = shallowRef(new SavedFilterService())
|
||||
|
||||
const filter = ref(new SavedFilterModel())
|
||||
|
@ -113,7 +113,7 @@
|
||||
import {defineComponent} from 'vue'
|
||||
import {mapState} from 'vuex'
|
||||
|
||||
import LabelModel from '../../models/label'
|
||||
import LabelModel, { type ILabel } from '../../models/label'
|
||||
import {LOADING, LOADING_MODULE} from '@/store/mutation-types'
|
||||
|
||||
import BaseButton from '@/components/base/BaseButton.vue'
|
||||
@ -150,7 +150,7 @@ export default defineComponent({
|
||||
loading: state => state[LOADING] && state[LOADING_MODULE] === 'labels',
|
||||
}),
|
||||
methods: {
|
||||
deleteLabel(label: LabelModel) {
|
||||
deleteLabel(label: ILabel) {
|
||||
this.showDeleteModal = false
|
||||
this.isLabelEdit = false
|
||||
return this.$store.dispatch('labels/deleteLabel', label)
|
||||
@ -158,7 +158,7 @@ export default defineComponent({
|
||||
editLabelSubmit() {
|
||||
return this.$store.dispatch('labels/updateLabel', this.labelEditLabel)
|
||||
},
|
||||
editLabel(label: LabelModel) {
|
||||
editLabel(label: ILabel) {
|
||||
if (label.createdBy.id !== this.userInfo.id) {
|
||||
return
|
||||
}
|
||||
@ -180,7 +180,7 @@ export default defineComponent({
|
||||
this.editorActive = false
|
||||
this.$nextTick(() => this.editorActive = true)
|
||||
},
|
||||
showDeleteDialoge(label: LabelModel) {
|
||||
showDeleteDialoge(label: ILabel) {
|
||||
this.labelToDelete = label
|
||||
this.showDeleteModal = true
|
||||
},
|
||||
|
@ -153,9 +153,9 @@ import {ALPHABETICAL_SORT} from '@/components/list/partials/filters.vue'
|
||||
|
||||
import draggable from 'zhyswan-vuedraggable'
|
||||
import {calculateItemPosition} from '../../helpers/calculateItemPosition'
|
||||
import type TaskModel from '@/models/task'
|
||||
import type { ITask } from '@/models/task'
|
||||
|
||||
function sortTasks(tasks: TaskModel[]) {
|
||||
function sortTasks(tasks: ITask[]) {
|
||||
if (tasks === null || tasks === []) {
|
||||
return
|
||||
}
|
||||
@ -274,7 +274,7 @@ export default defineComponent({
|
||||
focusNewTaskInput() {
|
||||
this.$refs.addTask.focusTaskInput()
|
||||
},
|
||||
updateTaskList(task: TaskModel) {
|
||||
updateTaskList(task: ITask) {
|
||||
if ( this.isAlphabeticalSorting ) {
|
||||
// reload tasks with current filter and sorting
|
||||
this.loadTasks(1, undefined, undefined, true)
|
||||
@ -288,11 +288,11 @@ export default defineComponent({
|
||||
|
||||
this.$store.commit(HAS_TASKS, true)
|
||||
},
|
||||
editTask(id: TaskModel['id']) {
|
||||
editTask(id: ITask['id']) {
|
||||
this.taskEditTask = {...this.tasks.find(t => t.id === parseInt(id))}
|
||||
this.isTaskEdit = true
|
||||
},
|
||||
updateTasks(updatedTask: TaskModel) {
|
||||
updateTasks(updatedTask: ITask) {
|
||||
for (const t in this.tasks) {
|
||||
if (this.tasks[t].id === updatedTask.id) {
|
||||
this.tasks[t] = updatedTask
|
||||
|
@ -197,7 +197,7 @@ import Pagination from '@/components/misc/pagination.vue'
|
||||
import Popup from '@/components/misc/popup.vue'
|
||||
|
||||
import {useTaskList} from '@/composables/taskList'
|
||||
import type TaskModel from '@/models/task'
|
||||
import type { ITask } from '@/models/task'
|
||||
|
||||
const ACTIVE_COLUMNS_DEFAULT = {
|
||||
id: true,
|
||||
@ -253,7 +253,7 @@ const {
|
||||
currentPage,
|
||||
sortByParam,
|
||||
} = taskList
|
||||
const tasks: Ref<TaskModel[]> = taskList.tasks
|
||||
const tasks: Ref<ITask[]> = taskList.tasks
|
||||
|
||||
Object.assign(params.value, {
|
||||
filter_by: [],
|
||||
|
@ -30,7 +30,7 @@ import CreateEdit from '@/components/misc/create-edit.vue'
|
||||
import Multiselect from '@/components/input/multiselect.vue'
|
||||
|
||||
import ListDuplicateModel from '@/models/listDuplicateModel'
|
||||
import NamespaceModel from '@/models/namespace'
|
||||
import type {INamespace} from '@/models/namespace'
|
||||
|
||||
import {success} from '@/message'
|
||||
import {useTitle} from '@/composables/useTitle'
|
||||
@ -44,9 +44,9 @@ const {
|
||||
findNamespaces,
|
||||
} = useNameSpaceSearch()
|
||||
|
||||
const selectedNamespace = ref<NamespaceModel>()
|
||||
const selectedNamespace = ref<INamespace>()
|
||||
|
||||
function selectNamespace(namespace: NamespaceModel) {
|
||||
function selectNamespace(namespace: INamespace) {
|
||||
selectedNamespace.value = namespace
|
||||
}
|
||||
|
||||
|
@ -80,14 +80,14 @@ import ColorPicker from '@/components/input/colorPicker.vue'
|
||||
import CreateEdit from '@/components/misc/create-edit.vue'
|
||||
|
||||
import {CURRENT_LIST} from '@/store/mutation-types'
|
||||
import type ListModel from '@/models/list'
|
||||
import type { IList } from '@/models/list'
|
||||
|
||||
import { useList } from '@/composables/useList'
|
||||
import { useTitle } from '@/composables/useTitle'
|
||||
|
||||
const props = defineProps({
|
||||
listId: {
|
||||
type: Number as PropType<ListModel['id']>,
|
||||
type: Number as PropType<IList['id']>,
|
||||
required: true,
|
||||
},
|
||||
})
|
||||
|
@ -49,7 +49,6 @@ import {useStore} from 'vuex'
|
||||
import {useRoute, useRouter} from 'vue-router'
|
||||
import {useI18n} from 'vue-i18n'
|
||||
|
||||
import type TaskModel from '@/models/task'
|
||||
import {formatDate} from '@/helpers/time/formatDate'
|
||||
import {setTitle} from '@/helpers/setTitle'
|
||||
|
||||
@ -59,13 +58,14 @@ import DatepickerWithRange from '@/components/date/datepickerWithRange.vue'
|
||||
import {DATE_RANGES} from '@/components/date/dateRanges'
|
||||
import {LOADING, LOADING_MODULE} from '@/store/mutation-types'
|
||||
import LlamaCool from '@/assets/llama-cool.svg?component'
|
||||
import type { ITask } from '@/models/task'
|
||||
|
||||
const store = useStore()
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
const {t} = useI18n({useScope: 'global'})
|
||||
|
||||
const tasks = ref<TaskModel[]>([])
|
||||
const tasks = ref<ITask[]>([])
|
||||
const showNothingToDo = ref<boolean>(false)
|
||||
|
||||
setTimeout(() => showNothingToDo.value = true, 100)
|
||||
@ -182,7 +182,7 @@ async function loadPendingTasks(from: string, to: string) {
|
||||
}
|
||||
|
||||
// FIXME: this modification should happen in the store
|
||||
function updateTasks(updatedTask: TaskModel) {
|
||||
function updateTasks(updatedTask: ITask) {
|
||||
for (const t in tasks.value) {
|
||||
if (tasks.value[t].id === updatedTask.id) {
|
||||
tasks.value[t] = updatedTask
|
||||
|
@ -425,7 +425,7 @@
|
||||
import {defineComponent} from 'vue'
|
||||
|
||||
import TaskService from '../../services/task'
|
||||
import TaskModel from '../../models/task'
|
||||
import TaskModel, { type ITask } from '@/models/task'
|
||||
|
||||
import { PRIORITIES as priorites } from '@/models/constants/priorities'
|
||||
import {RIGHTS as rights} from '@/models/constants/rights'
|
||||
@ -452,10 +452,10 @@ import {CURRENT_LIST} from '@/store/mutation-types'
|
||||
import {uploadFile} from '@/helpers/attachments'
|
||||
import ChecklistSummary from '../../components/tasks/partials/checklist-summary.vue'
|
||||
import CreatedUpdated from '@/components/tasks/partials/createdUpdated.vue'
|
||||
import type ListModel from '@/models/list'
|
||||
import { setTitle } from '@/helpers/setTitle'
|
||||
import {getNamespaceTitle} from '@/helpers/getNamespaceTitle'
|
||||
import {getListTitle} from '@/helpers/getListTitle'
|
||||
import type { IList } from '@/models/list'
|
||||
|
||||
function scrollIntoView(el) {
|
||||
if (!el) {
|
||||
@ -597,7 +597,7 @@ export default defineComponent({
|
||||
return uploadFile(this.taskId, ...args)
|
||||
},
|
||||
|
||||
async loadTask(taskId: TaskModel['id']) {
|
||||
async loadTask(taskId: ITask['id']) {
|
||||
if (taskId === undefined) {
|
||||
return
|
||||
}
|
||||
@ -703,7 +703,7 @@ export default defineComponent({
|
||||
this.saveTask(true, this.toggleTaskDone)
|
||||
},
|
||||
|
||||
async changeList(list: ListModel) {
|
||||
async changeList(list: IList) {
|
||||
this.$store.commit('kanban/removeTaskInBucket', this.task)
|
||||
this.task.listId = list.id
|
||||
await this.saveTask()
|
||||
|
@ -162,23 +162,23 @@
|
||||
|
||||
<script lang="ts" setup>
|
||||
import {computed, ref} from 'vue'
|
||||
import {useI18n} from 'vue-i18n'
|
||||
|
||||
import Editor from '@/components/input/AsyncEditor'
|
||||
import {useStore} from 'vuex'
|
||||
|
||||
import TeamService from '../../services/team'
|
||||
import type TeamModel from '../../models/team'
|
||||
import TeamMemberService from '../../services/teamMember'
|
||||
import type TeamMemberModel from '../../models/teamMember'
|
||||
import type UserModel from '../../models/user'
|
||||
import UserService from '../../services/user'
|
||||
import TeamService from '@/services/team'
|
||||
import TeamMemberService from '@/services/teamMember'
|
||||
import UserService from '@/services/user'
|
||||
import {RIGHTS as Rights} from '@/models/constants/rights'
|
||||
|
||||
import Multiselect from '@/components/input/multiselect.vue'
|
||||
import {useRoute, useRouter} from 'vue-router'
|
||||
import {useTitle} from '@/composables/useTitle'
|
||||
import {useI18n} from 'vue-i18n'
|
||||
import {success} from '@/message'
|
||||
import type { ITeam } from '@/models/team'
|
||||
import type { IUser } from '@/models/user'
|
||||
import type { ITeamMember } from '@/models/teamMember'
|
||||
|
||||
const store = useStore()
|
||||
const route = useRoute()
|
||||
@ -198,11 +198,11 @@ const teamService = ref<TeamService>(new TeamService())
|
||||
const teamMemberService = ref<TeamMemberService>(new TeamMemberService())
|
||||
const userService = ref<UserService>(new UserService())
|
||||
|
||||
const team = ref<TeamModel>()
|
||||
const team = ref<ITeam>()
|
||||
const teamId = computed(() => route.params.id)
|
||||
const memberToDelete = ref<TeamMemberModel>()
|
||||
const newMember = ref<UserModel>()
|
||||
const foundUsers = ref<UserModel[]>()
|
||||
const memberToDelete = ref<ITeamMember>()
|
||||
const newMember = ref<IUser>()
|
||||
const foundUsers = ref<IUser[]>()
|
||||
|
||||
const showDeleteModal = ref(false)
|
||||
const showUserDeleteModal = ref(false)
|
||||
@ -257,7 +257,7 @@ async function addUser() {
|
||||
success({message: t('team.edit.userAddedSuccess')})
|
||||
}
|
||||
|
||||
async function toggleUserType(member: TeamMemberModel) {
|
||||
async function toggleUserType(member: ITeamMember) {
|
||||
// FIXME: direct manipulation
|
||||
member.admin = !member.admin
|
||||
member.teamId = teamId.value
|
||||
@ -282,7 +282,7 @@ async function findUser(query: string) {
|
||||
}
|
||||
|
||||
const users = await userService.value.getAll({}, {s: query})
|
||||
foundUsers.value = users.filter((u: UserModel) => u.id !== userInfo.value.id)
|
||||
foundUsers.value = users.filter((u: IUser) => u.id !== userInfo.value.id)
|
||||
}
|
||||
</script>
|
||||
|
||||
|
@ -77,8 +77,8 @@ import {success} from '@/message'
|
||||
import BaseButton from '@/components/base/BaseButton.vue'
|
||||
import Message from '@/components/misc/message.vue'
|
||||
import CaldavTokenService from '@/services/caldavToken'
|
||||
import type CaldavTokenModel from '@/models/caldavToken'
|
||||
import { formatDateShort } from '@/helpers/time/formatDate'
|
||||
import type { ICaldavToken } from '@/models/caldavToken'
|
||||
|
||||
const copy = useCopyToClipboard()
|
||||
|
||||
@ -86,19 +86,19 @@ const {t} = useI18n({useScope: 'global'})
|
||||
useTitle(() => `${t('user.settings.caldav.title')} - ${t('user.settings.title')}`)
|
||||
|
||||
const service = shallowReactive(new CaldavTokenService())
|
||||
const tokens = ref<CaldavTokenModel[]>([])
|
||||
const tokens = ref<ICaldavToken[]>([])
|
||||
|
||||
service.getAll().then((result: CaldavTokenModel[]) => {
|
||||
service.getAll().then((result: ICaldavToken[]) => {
|
||||
tokens.value = result
|
||||
})
|
||||
|
||||
const newToken = ref<CaldavTokenModel>()
|
||||
const newToken = ref<ICaldavToken>()
|
||||
async function createToken() {
|
||||
newToken.value = await service.create({}) as CaldavTokenModel
|
||||
newToken.value = await service.create({}) as ICaldavToken
|
||||
tokens.value.push(newToken.value)
|
||||
}
|
||||
|
||||
async function deleteToken(token: CaldavTokenModel) {
|
||||
async function deleteToken(token: ICaldavToken) {
|
||||
const r = await service.delete(token)
|
||||
tokens.value = tokens.value.filter(({id}) => id !== token.id)
|
||||
success(r)
|
||||
|
Reference in New Issue
Block a user