Compare commits

..

5 Commits

Author SHA1 Message Date
bedb0b9f56 fix(deps): update sentry-javascript monorepo to v7.92.0
Some checks failed
continuous-integration/drone/pr Build is failing
2024-01-04 19:29:17 +00:00
654806211e
fix(ci): use working image for crowdin update step
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-04 13:22:27 +01:00
09572dbe61
fix(ci): use working crowdin image
All checks were successful
continuous-integration/drone/push Build is passing
2023-12-27 15:44:36 +01:00
fae5b764dd
fix(notifications): unread indicator spacing
All checks were successful
continuous-integration/drone/push Build is passing
2023-12-23 15:53:17 +01:00
7f70471894
feat(reminders): show reminders in notifications bar
All checks were successful
continuous-integration/drone/push Build is passing
2023-12-23 15:48:29 +01:00
5 changed files with 23 additions and 8 deletions

View File

@ -486,7 +486,7 @@ trigger:
steps: steps:
- name: download - name: download
pull: always pull: always
image: git.lcomrade.su/root/drone-crowdin-v2 image: ghcr.io/lcomrade/lcomrade/drone-crowdin-v2:latest
settings: settings:
crowdin_key: crowdin_key:
from_secret: crowdin_key from_secret: crowdin_key
@ -513,14 +513,14 @@ steps:
author_name: Frederick [Bot] author_name: Frederick [Bot]
branch: main branch: main
commit: true commit: true
commit_message: "[skip ci] Updated translations via Crowdin" commit_message: "chore(i18n): update translations via Crowdin"
remote: "ssh://git@kolaente.dev:9022/vikunja/frontend.git" remote: "ssh://git@kolaente.dev:9022/vikunja/frontend.git"
ssh_key: ssh_key:
from_secret: git_push_ssh_key from_secret: git_push_ssh_key
- name: upload - name: upload
pull: always pull: always
image: git.lcomrade.su/root/drone-crowdin-v2 image: ghcr.io/lcomrade/lcomrade/drone-crowdin-v2:latest
depends_on: depends_on:
- clone - clone
settings: settings:
@ -532,6 +532,6 @@ steps:
src/i18n/lang/en.json: en.json src/i18n/lang/en.json: en.json
--- ---
kind: signature kind: signature
hmac: 3380c4283256eea047e6228817161991d23457d09abe9d99f06e018b1eb047f4 hmac: 1b78e92ee8a9aa94df14c35ea544abc0bec991ec59465c328a6aaa6cea4430b3
... ...

View File

@ -53,8 +53,8 @@
"@infectoone/vue-ganttastic": "2.2.0", "@infectoone/vue-ganttastic": "2.2.0",
"@intlify/unplugin-vue-i18n": "2.0.0", "@intlify/unplugin-vue-i18n": "2.0.0",
"@kyvg/vue3-notification": "3.1.2", "@kyvg/vue3-notification": "3.1.2",
"@sentry/tracing": "7.91.0", "@sentry/tracing": "7.92.0",
"@sentry/vue": "7.91.0", "@sentry/vue": "7.92.0",
"@tiptap/core": "2.1.13", "@tiptap/core": "2.1.13",
"@tiptap/extension-blockquote": "2.1.13", "@tiptap/extension-blockquote": "2.1.13",
"@tiptap/extension-bold": "2.1.13", "@tiptap/extension-bold": "2.1.13",

View File

@ -124,6 +124,7 @@ function to(n, index) {
switch (n.name) { switch (n.name) {
case names.TASK_COMMENT: case names.TASK_COMMENT:
case names.TASK_ASSIGNED: case names.TASK_ASSIGNED:
case names.TASK_REMINDER:
to.name = 'task.detail' to.name = 'task.detail'
to.params.id = n.notification.task.id to.params.id = n.notification.task.id
break break
@ -221,7 +222,7 @@ async function markAllRead() {
height: .35rem; height: .35rem;
background: var(--primary); background: var(--primary);
border-radius: 100%; border-radius: 100%;
margin-left: .5rem; margin: 0 .5rem;
&.read { &.read {
background: transparent; background: transparent;

View File

@ -9,6 +9,7 @@ export const NOTIFICATION_NAMES = {
'TASK_COMMENT': 'task.comment', 'TASK_COMMENT': 'task.comment',
'TASK_ASSIGNED': 'task.assigned', 'TASK_ASSIGNED': 'task.assigned',
'TASK_DELETED': 'task.deleted', 'TASK_DELETED': 'task.deleted',
'TASK_REMINDER': 'task.reminder',
'PROJECT_CREATED': 'project.created', 'PROJECT_CREATED': 'project.created',
'TEAM_MEMBER_ADDED': 'team.member.added', 'TEAM_MEMBER_ADDED': 'team.member.added',
} as const } as const
@ -35,6 +36,11 @@ interface NotificationCreated extends Notification {
project: IProject project: IProject
} }
interface NotificationTaskReminder extends Notification {
task: ITask
project: IProject
}
interface NotificationMemberAdded extends Notification { interface NotificationMemberAdded extends Notification {
member: IUser member: IUser
team: ITeam team: ITeam
@ -43,7 +49,7 @@ interface NotificationMemberAdded extends Notification {
export interface INotification extends IAbstract { export interface INotification extends IAbstract {
id: number id: number
name: string name: string
notification: NotificationTask | NotificationAssigned | NotificationDeleted | NotificationCreated | NotificationMemberAdded notification: NotificationTask | NotificationAssigned | NotificationDeleted | NotificationCreated | NotificationMemberAdded | NotificationTaskReminder
read: boolean read: boolean
readAt: Date | null readAt: Date | null

View File

@ -56,6 +56,12 @@ export default class NotificationModel extends AbstractModel<INotification> impl
team: new TeamModel(this.notification.team), team: new TeamModel(this.notification.team),
} }
break break
case NOTIFICATION_NAMES.TASK_REMINDER:
this.notification = {
task: new TaskModel(this.notification.task),
project: new ProjectModel(this.notification.project),
}
break
} }
this.created = new Date(this.created) this.created = new Date(this.created)
@ -88,6 +94,8 @@ export default class NotificationModel extends AbstractModel<INotification> impl
} }
return `added ${who} to the ${this.notification.team.name} team` return `added ${who} to the ${this.notification.team.name} team`
case NOTIFICATION_NAMES.TASK_REMINDER:
return `Reminder for ${this.notification.task.getTextIdentifier()} ${this.notification.task.title} (${this.notification.project.title})`
} }
return '' return ''