diff --git a/src/models/abstractModel.js b/src/models/abstractModel.js index 202ccde9d..f5fc93336 100644 --- a/src/models/abstractModel.js +++ b/src/models/abstractModel.js @@ -19,16 +19,7 @@ export default class AbstractModel { // Put all data in our model while overriding those with a value of null or undefined with their defaults Object.assign( this, - this.defaults(), omitBy(data, isNil), ) } - - /** - * Default attributes that define the "empty" state. - * @return {{}} - */ - defaults() { - return {} - } } \ No newline at end of file diff --git a/src/models/attachment.js b/src/models/attachment.js index e1ee9aa83..3f6a79074 100644 --- a/src/models/attachment.js +++ b/src/models/attachment.js @@ -3,20 +3,16 @@ import UserModel from './user' import FileModel from './file' export default class AttachmentModel extends AbstractModel { + id = 0 + taskId = 0 + file = FileModel + createdBy = UserModel + created = null + constructor(data) { super(data) this.createdBy = new UserModel(this.createdBy) this.file = new FileModel(this.file) this.created = new Date(this.created) } - - defaults() { - return { - id: 0, - taskId: 0, - file: FileModel, - createdBy: UserModel, - created: null, - } - } } diff --git a/src/models/avatar.js b/src/models/avatar.js index 33f3c4c1f..ce4e6e1c0 100644 --- a/src/models/avatar.js +++ b/src/models/avatar.js @@ -1,9 +1,5 @@ import AbstractModel from './abstractModel' export default class AvatarModel extends AbstractModel { - defaults() { - return { - avatarProvider: '', - } - } + avatarProvider = '' } \ No newline at end of file diff --git a/src/models/backgroundImage.js b/src/models/backgroundImage.js index 78bc29c30..f696a6b39 100644 --- a/src/models/backgroundImage.js +++ b/src/models/backgroundImage.js @@ -1,12 +1,8 @@ import AbstractModel from './abstractModel' export default class BackgroundImageModel extends AbstractModel { - defaults() { - return { - id: 0, - url: '', - thumb: '', - info: {}, - } - } + id = 0 + url = '' + thumb = '' + info = {} } \ No newline at end of file diff --git a/src/models/bucket.js b/src/models/bucket.js index 28d0558d1..ee94e3b53 100644 --- a/src/models/bucket.js +++ b/src/models/bucket.js @@ -3,6 +3,18 @@ import UserModel from './user' import TaskModel from './task' export default class BucketModel extends AbstractModel { + id = 0 + title = '' + listId = 0 + limit = 0 + tasks = [] + isDoneBucket = false + position = 0 + + createdBy = null + created = null + updated = null + constructor(bucket) { super(bucket) @@ -12,20 +24,4 @@ export default class BucketModel extends AbstractModel { this.created = new Date(this.created) this.updated = new Date(this.updated) } - - defaults() { - return { - id: 0, - title: '', - listId: 0, - limit: 0, - tasks: [], - isDoneBucket: false, - position: 0, - - createdBy: null, - created: null, - updated: null, - } - } } \ No newline at end of file diff --git a/src/models/emailUpdate.js b/src/models/emailUpdate.js index 42fe91e35..f1f6bf606 100644 --- a/src/models/emailUpdate.js +++ b/src/models/emailUpdate.js @@ -1,10 +1,6 @@ import AbstractModel from './abstractModel' export default class EmailUpdateModel extends AbstractModel { - defaults() { - return { - newEmail: '', - passwort: '', - } - } + newEmail = '' + password = '' } \ No newline at end of file diff --git a/src/models/file.js b/src/models/file.js index 094979639..9ace8a17e 100644 --- a/src/models/file.js +++ b/src/models/file.js @@ -1,21 +1,17 @@ import AbstractModel from './abstractModel' export default class FileModel extends AbstractModel { + id = 0 + mime = '' + name = '' + size = 0 + created = null + constructor(data) { super(data) this.created = new Date(this.created) } - defaults() { - return { - id: 0, - mime: '', - name: '', - size: 0, - created: null, - } - } - getHumanSize() { const sizes = { 0: 'B', diff --git a/src/models/label.js b/src/models/label.js index be7abb44b..3e9084a71 100644 --- a/src/models/label.js +++ b/src/models/label.js @@ -4,6 +4,17 @@ import {colorIsDark} from '@/helpers/color/colorIsDark' const DEFAULT_LABEL_BACKGROUND_COLOR = 'e8e8e8' export default class LabelModel extends AbstractModel { + id = 0 + title = '' + hexColor = '' + description = '' + createdBy = UserModel + listId = 0 + textColor = '' + + created = null + updated = null + constructor(data) { super(data) // FIXME: this should be empty and be definied in the client. @@ -21,19 +32,4 @@ export default class LabelModel extends AbstractModel { this.created = new Date(this.created) this.updated = new Date(this.updated) } - - defaults() { - return { - id: 0, - title: '', - hexColor: '', - description: '', - createdBy: UserModel, - listId: 0, - textColor: '', - - created: null, - updated: null, - } - } } \ No newline at end of file diff --git a/src/models/labelTask.js b/src/models/labelTask.js index 9363cc735..bc28a0b32 100644 --- a/src/models/labelTask.js +++ b/src/models/labelTask.js @@ -1,11 +1,7 @@ import AbstractModel from './abstractModel' export default class LabelTask extends AbstractModel { - defaults() { - return { - id: 0, - taskId: 0, - labelId: 0, - } - } + id = 0 + taskId = 0 + labelId = 0 } \ No newline at end of file diff --git a/src/models/linkShare.js b/src/models/linkShare.js index 4681600ad..9e04bde66 100644 --- a/src/models/linkShare.js +++ b/src/models/linkShare.js @@ -2,6 +2,17 @@ import AbstractModel from './abstractModel' import UserModel from './user' export default class ListModel extends AbstractModel { + id = 0 + hash = '' + right = 0 + sharedBy = UserModel + sharingType = 0 + listId = 0 + name = '' + password = '' + + created = null + updated = null constructor(data) { // The constructor of AbstractModel handles all the default parsing. @@ -12,21 +23,4 @@ export default class ListModel extends AbstractModel { this.created = new Date(this.created) this.updated = new Date(this.updated) } - - // Default attributes that define the "empty" state. - defaults() { - return { - id: 0, - hash: '', - right: 0, - sharedBy: UserModel, - sharingType: 0, - listId: 0, - name: '', - password: '', - - created: null, - updated: null, - } - } } \ No newline at end of file diff --git a/src/models/list.js b/src/models/list.js index b5a08e814..7d96fe562 100644 --- a/src/models/list.js +++ b/src/models/list.js @@ -5,6 +5,22 @@ import {getSavedFilterIdFromListId} from '@/helpers/savedFilter' import SubscriptionModel from '@/models/subscription' export default class ListModel extends AbstractModel { + id = 0 + title = '' + description = '' + owner = UserModel + tasks = [] + namespaceId = 0 + isArchived = false + hexColor = '' + identifier = '' + backgroundInformation = null + isFavorite = false + subscription = null + position = 0 + + created = null + updated = null constructor(data) { super(data) @@ -28,28 +44,6 @@ export default class ListModel extends AbstractModel { this.updated = new Date(this.updated) } - // Default attributes that define the "empty" state. - defaults() { - return { - id: 0, - title: '', - description: '', - owner: UserModel, - tasks: [], - namespaceId: 0, - isArchived: false, - hexColor: '', - identifier: '', - backgroundInformation: null, - isFavorite: false, - subscription: null, - position: 0, - - created: null, - updated: null, - } - } - isSavedFilter() { return this.getSavedFilterId() > 0 } diff --git a/src/models/listDuplicateModel.js b/src/models/listDuplicateModel.js index 28444185a..94859ff8f 100644 --- a/src/models/listDuplicateModel.js +++ b/src/models/listDuplicateModel.js @@ -2,16 +2,12 @@ import AbstractModel from './abstractModel' import ListModel from './list' export default class ListDuplicateModel extends AbstractModel { + listId = 0 + namespaceId = 0 + list = ListModel + constructor(data) { super(data) this.list = new ListModel(this.list) } - - defaults() { - return { - listId: 0, - namespaceId: 0, - list: ListModel, - } - } } \ No newline at end of file diff --git a/src/models/namespace.js b/src/models/namespace.js index 823ccf08a..bf85e6a17 100644 --- a/src/models/namespace.js +++ b/src/models/namespace.js @@ -4,6 +4,18 @@ import UserModel from './user' import SubscriptionModel from '@/models/subscription' export default class NamespaceModel extends AbstractModel { + id = 0 + title = '' + description = '' + owner = UserModel + lists = [] + isArchived = false + hexColor = '' + subscription = null + + created = null + updated = null + constructor(data) { super(data) @@ -24,21 +36,4 @@ export default class NamespaceModel extends AbstractModel { this.created = new Date(this.created) this.updated = new Date(this.updated) } - - // Default attributes that define the 'empty' state. - defaults() { - return { - id: 0, - title: '', - description: '', - owner: UserModel, - lists: [], - isArchived: false, - hexColor: '', - subscription: null, - - created: null, - updated: null, - } - } } diff --git a/src/models/notification.js b/src/models/notification.js index ab522dc76..4f64c0e75 100644 --- a/src/models/notification.js +++ b/src/models/notification.js @@ -8,6 +8,12 @@ import TeamModel from '@/models/team' import names from './constants/notificationNames.json' export default class NotificationModel extends AbstractModel { + id = 0 + name = '' + notification = null + read = false + readAt = null + constructor(data) { super(data) @@ -41,16 +47,6 @@ export default class NotificationModel extends AbstractModel { this.readAt = parseDateOrNull(this.readAt) } - defaults() { - return { - id: 0, - name: '', - notification: null, - read: false, - readAt: null, - } - } - toText(user = null) { let who = '' diff --git a/src/models/passwordReset.js b/src/models/passwordReset.js index b84df22d5..cd2cbc7a2 100644 --- a/src/models/passwordReset.js +++ b/src/models/passwordReset.js @@ -1,17 +1,13 @@ import AbstractModel from './abstractModel' export default class PasswordResetModel extends AbstractModel { + token = '' + newPassword = '' + email = '' + constructor(data) { super(data) this.token = localStorage.getItem('passwordResetToken') } - - defaults() { - return { - token: '', - newPassword: '', - email: '', - } - } } \ No newline at end of file diff --git a/src/models/passwordUpdate.js b/src/models/passwordUpdate.js index c98692976..09c032ff2 100644 --- a/src/models/passwordUpdate.js +++ b/src/models/passwordUpdate.js @@ -1,10 +1,6 @@ import AbstractModel from './abstractModel' export default class PasswordUpdateModel extends AbstractModel { - defaults() { - return { - newPassword: '', - oldPassword: '', - } - } + newPassword = '' + oldPassword = '' } \ No newline at end of file diff --git a/src/models/savedFilter.js b/src/models/savedFilter.js index f0896b08e..e8aae64fc 100644 --- a/src/models/savedFilter.js +++ b/src/models/savedFilter.js @@ -2,6 +2,23 @@ import AbstractModel from '@/models/abstractModel' import UserModel from '@/models/user' export default class SavedFilterModel extends AbstractModel { + id = 0 + title = '' + description = '' + filters = { + sortBy: ['done', 'id'], + orderBy: ['asc', 'desc'], + filterBy: ['done'], + filterValue: ['false'], + filterComparator: ['equals'], + filterConcat: 'and', + filterIncludeNulls: true, + } + + owner = {} + created = null + updated = null + constructor(data) { super(data) @@ -11,27 +28,6 @@ export default class SavedFilterModel extends AbstractModel { this.updated = new Date(this.updated) } - defaults() { - return { - id: 0, - title: '', - description: '', - filters: { - sortBy: ['done', 'id'], - orderBy: ['asc', 'desc'], - filterBy: ['done'], - filterValue: ['false'], - filterComparator: ['equals'], - filterConcat: 'and', - filterIncludeNulls: true, - }, - - owner: {}, - created: null, - updated: null, - } - } - /** * Calculates the corresponding list id to this saved filter. * This function matches the one in the api. diff --git a/src/models/subscription.js b/src/models/subscription.js index 68d0be855..ea023fb93 100644 --- a/src/models/subscription.js +++ b/src/models/subscription.js @@ -2,19 +2,15 @@ import AbstractModel from '@/models/abstractModel' import UserModel from '@/models/user' export default class SubscriptionModel extends AbstractModel { + id = 0 + entity = '' + entityId = 0 + created = null + user = {} + constructor(data) { super(data) this.user = new UserModel(this.user) this.created = new Date(this.created) } - - defaults() { - return { - id: 0, - entity: '', - entityId: 0, - created: null, - user: {}, - } - } } diff --git a/src/models/task.js b/src/models/task.js index c03342370..1ee2f81c6 100644 --- a/src/models/task.js +++ b/src/models/task.js @@ -10,6 +10,41 @@ import {parseDateOrNull} from '@/helpers/parseDateOrNull' const SUPPORTS_TRIGGERED_NOTIFICATION = 'Notification' in window && 'showTrigger' in Notification.prototype export default class TaskModel extends AbstractModel { + id = 0 + title = '' + description = '' + done = false + doneAt = null + priority = 0 + labels = [] + assignees = [] + + dueDate = 0 + startDate = 0 + endDate = 0 + repeatAfter = 0 + repeatFromCurrentDate = false + repeatMode = REPEAT_MODE_DEFAULT + reminderDates = [] + parentTaskId = 0 + hexColor = '' + percentDone = 0 + relatedTasks = {} + attachments = [] + identifier = '' + index = 0 + isFavorite = false + subscription = null + + position = 0 + kanbanPosition = 0 + + createdBy = UserModel + created = null + updated = null + + listId = 0 // Meta, only used when creating a new task + defaultColor = '198CFF' @@ -76,45 +111,6 @@ export default class TaskModel extends AbstractModel { this.updated = new Date(this.updated) } - defaults() { - return { - id: 0, - title: '', - description: '', - done: false, - doneAt: null, - priority: 0, - labels: [], - assignees: [], - - dueDate: 0, - startDate: 0, - endDate: 0, - repeatAfter: 0, - repeatFromCurrentDate: false, - repeatMode: REPEAT_MODE_DEFAULT, - reminderDates: [], - parentTaskId: 0, - hexColor: '', - percentDone: 0, - relatedTasks: {}, - attachments: [], - identifier: '', - index: 0, - isFavorite: false, - subscription: null, - - position: 0, - kanbanPosition: 0, - - createdBy: UserModel, - created: null, - updated: null, - - listId: 0, // Meta, only used when creating a new task - } - } - getTextIdentifier() { if (this.identifier === '') { return `#${this.index}` diff --git a/src/models/taskAssignee.js b/src/models/taskAssignee.js index ee697b9d7..d66bdfd0c 100644 --- a/src/models/taskAssignee.js +++ b/src/models/taskAssignee.js @@ -1,16 +1,12 @@ import AbstractModel from './abstractModel' export default class TaskAssigneeModel extends AbstractModel { + created = null + userId = 0 + taskId = 0 + constructor(data) { super(data) this.created = new Date(this.created) } - - defaults() { - return { - created: null, - userId: 0, - taskId: 0, - } - } } diff --git a/src/models/taskComment.js b/src/models/taskComment.js index 376195a98..64b4785d0 100644 --- a/src/models/taskComment.js +++ b/src/models/taskComment.js @@ -2,21 +2,17 @@ import AbstractModel from './abstractModel' import UserModel from './user' export default class TaskCommentModel extends AbstractModel { + id = 0 + taskId = 0 + comment = '' + author = UserModel + created = null + update = null + constructor(data) { super(data) this.author = new UserModel(this.author) this.created = new Date(this.created) this.updated = new Date(this.updated) } - - defaults() { - return { - id: 0, - taskId: 0, - comment: '', - author: UserModel, - created: null, - update: null, - } - } } diff --git a/src/models/taskRelation.js b/src/models/taskRelation.js index 63fcda0a7..531fd0e56 100644 --- a/src/models/taskRelation.js +++ b/src/models/taskRelation.js @@ -2,21 +2,17 @@ import AbstractModel from './abstractModel' import UserModel from './user' export default class TaskRelationModel extends AbstractModel { + id = 0 + otherTaskId = 0 + taskId = 0 + relationKind = '' + + createdBy = UserModel + created = null + constructor(data) { super(data) this.createdBy = new UserModel(this.createdBy) this.created = new Date(this.created) } - - defaults() { - return { - id: 0, - otherTaskId: 0, - taskId: 0, - relationKind: '', - - createdBy: UserModel, - created: null, - } - } } \ No newline at end of file diff --git a/src/models/team.js b/src/models/team.js index d9217926f..b95ae94ac 100644 --- a/src/models/team.js +++ b/src/models/team.js @@ -3,6 +3,16 @@ import UserModel from './user' import TeamMemberModel from './teamMember' export default class TeamModel extends AbstractModel { + id = 0 + name = '' + description = '' + members = [] + right = 0 + + createdBy = {} + created = null + updated = null + constructor(data) { super(data) @@ -15,18 +25,4 @@ export default class TeamModel extends AbstractModel { this.created = new Date(this.created) this.updated = new Date(this.updated) } - - defaults() { - return { - id: 0, - name: '', - description: '', - members: [], - right: 0, - - createdBy: {}, - created: null, - updated: null, - } - } } \ No newline at end of file diff --git a/src/models/teamList.js b/src/models/teamList.js index d000a01b1..4cb9aebbf 100644 --- a/src/models/teamList.js +++ b/src/models/teamList.js @@ -1,10 +1,5 @@ import TeamShareBaseModel from './teamShareBase' export default class TeamListModel extends TeamShareBaseModel { - defaults() { - return { - ...super.defaults(), - listId: 0, - } - } + listId = 0 } \ No newline at end of file diff --git a/src/models/teamMember.js b/src/models/teamMember.js index 2e5e236ae..f189ae9ea 100644 --- a/src/models/teamMember.js +++ b/src/models/teamMember.js @@ -1,11 +1,6 @@ import UserModel from './user' export default class TeamMemberModel extends UserModel { - defaults() { - return { - ...super.defaults(), - admin: false, - teamId: 0, - } - } + admin = false + teamId = 0 } \ No newline at end of file diff --git a/src/models/teamNamespace.js b/src/models/teamNamespace.js index 4c1c7521d..585de34fa 100644 --- a/src/models/teamNamespace.js +++ b/src/models/teamNamespace.js @@ -1,10 +1,5 @@ import TeamShareBaseModel from './teamShareBase' export default class TeamNamespaceModel extends TeamShareBaseModel { - defaults() { - return { - ...super.defaults(), - namespaceId: 0, - } - } + namespaceId = 0 } \ No newline at end of file diff --git a/src/models/teamShareBase.js b/src/models/teamShareBase.js index 08b3dc80f..8bc220d62 100644 --- a/src/models/teamShareBase.js +++ b/src/models/teamShareBase.js @@ -5,19 +5,15 @@ import AbstractModel from './abstractModel' * It is extended in a way so it can be used for namespaces as well for lists. */ export default class TeamShareBaseModel extends AbstractModel { + teamId = 0 + right = 0 + + created = null + updated = null + constructor(data) { super(data) this.created = new Date(this.created) this.updated = new Date(this.updated) } - - defaults() { - return { - teamId: 0, - right: 0, - - created: null, - updated: null, - } - } } \ No newline at end of file diff --git a/src/models/totp.js b/src/models/totp.js index 17de13b6b..111f5c88e 100644 --- a/src/models/totp.js +++ b/src/models/totp.js @@ -1,11 +1,7 @@ import AbstractModel from './abstractModel' export default class TotpModel extends AbstractModel { - defaults() { - return { - secret: '', - enabled: false, - url: '', - } - } + secret = '' + enabled = false + url = '' } \ No newline at end of file diff --git a/src/models/user.js b/src/models/user.js index ef6a48ef2..c3046df6b 100644 --- a/src/models/user.js +++ b/src/models/user.js @@ -2,6 +2,14 @@ import AbstractModel from './abstractModel' import UserSettingsModel from '@/models/userSettings' export default class UserModel extends AbstractModel { + id = 0 + email = '' + username = '' + name = '' + created = null + updated = null + settings = null + constructor(data) { super(data) @@ -13,18 +21,6 @@ export default class UserModel extends AbstractModel { this.updated = new Date(this.updated) } - defaults() { - return { - id: 0, - email: '', - username: '', - name: '', - created: null, - updated: null, - settings: null, - } - } - getAvatarUrl(size = 50) { return `${window.API_URL}/avatar/${this.username}?size=${size}` } diff --git a/src/models/userList.js b/src/models/userList.js index 42bde509c..7b93294bc 100644 --- a/src/models/userList.js +++ b/src/models/userList.js @@ -2,10 +2,5 @@ import UserShareBaseModel from './userShareBase' // This class extends the user share model with a 'rights' parameter which is used in sharing export default class UserListModel extends UserShareBaseModel { - defaults() { - return { - ...super.defaults(), - listId: 0, - } - } + listId = 0 } \ No newline at end of file diff --git a/src/models/userNamespace.js b/src/models/userNamespace.js index 085ece650..4f9514d1c 100644 --- a/src/models/userNamespace.js +++ b/src/models/userNamespace.js @@ -2,10 +2,5 @@ import UserShareBaseModel from './userShareBase' // This class extends the user share model with a 'rights' parameter which is used in sharing export default class UserNamespaceModel extends UserShareBaseModel { - defaults() { - return { - ...super.defaults(), - namespaceId: 0, - } - } + namespaceId = 0 } \ No newline at end of file diff --git a/src/models/userSettings.js b/src/models/userSettings.js index 6ed0ffe58..01585b89e 100644 --- a/src/models/userSettings.js +++ b/src/models/userSettings.js @@ -2,15 +2,11 @@ import AbstractModel from './abstractModel' export default class UserSettingsModel extends AbstractModel { - defaults() { - return { - name: '', - emailRemindersEnabled: true, - discoverableByName: false, - discoverableByEmail: false, - overdueTasksRemindersEnabled: true, - defaultListId: undefined, - weekStart: 0, - } - } + name = '' + emailRemindersEnabled = true + discoverableByName = false + discoverableByEmail = false + overdueTasksRemindersEnabled = true + defaultListId = undefined + weekStart = 0 } \ No newline at end of file diff --git a/src/models/userShareBase.js b/src/models/userShareBase.js index 171643a06..e590accb9 100644 --- a/src/models/userShareBase.js +++ b/src/models/userShareBase.js @@ -1,19 +1,15 @@ import AbstractModel from './abstractModel' export default class UserShareBaseModel extends AbstractModel { + userId = '' + right = 0 + + created = null + updated = null + constructor(data) { super(data) this.created = new Date(this.created) this.updated = new Date(this.updated) } - - defaults() { - return { - userId: '', - right: 0, - - created: null, - updated: null, - } - } } \ No newline at end of file