mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
96 lines
2.4 KiB
Vue
96 lines
2.4 KiB
Vue
<template>
|
|
<base-notification
|
|
:can-remove="canRemove"
|
|
:has-icon="false"
|
|
:notification="notification"
|
|
@click="action"
|
|
>
|
|
<div slot="content">
|
|
<div v-html="notification.data.message"></div>
|
|
<div class="notifications-buttons">
|
|
<div
|
|
class="btn btn-small btn-success"
|
|
@click.stop="approve()"
|
|
>
|
|
{{ $t('approve') }}
|
|
</div>
|
|
<div
|
|
class="btn btn-small btn-warning"
|
|
@click.stop="needsWork()"
|
|
>
|
|
{{ $t('needsWork') }}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</base-notification>
|
|
</template>
|
|
|
|
<script>
|
|
import BaseNotification from './base';
|
|
import { mapState } from '@/libs/store';
|
|
import sync from '@/mixins/sync';
|
|
|
|
export default {
|
|
components: {
|
|
BaseNotification,
|
|
},
|
|
mixins: [sync],
|
|
props: ['notification', 'canRemove'],
|
|
computed: {
|
|
...mapState({ user: 'user.data' }),
|
|
// Check that the notification has all the necessary data (old ones are missing some fields)
|
|
notificationHasData () {
|
|
return Boolean(this.notification.data.groupTaskId && this.notification.data.userId);
|
|
},
|
|
},
|
|
methods: {
|
|
action () {
|
|
const groupId = this.notification.data.group.id;
|
|
this.$router.push({ name: 'groupPlanDetailTaskInformation', params: { groupId } });
|
|
},
|
|
async approve () {
|
|
// Redirect users to the group tasks page if the notification doesn't have data
|
|
if (!this.notificationHasData) {
|
|
this.$router.push({
|
|
name: 'groupPlanDetailTaskInformation',
|
|
params: {
|
|
groupId: this.notification.data.groupId,
|
|
},
|
|
});
|
|
|
|
return;
|
|
}
|
|
|
|
await this.$store.dispatch('tasks:approve', {
|
|
taskId: this.notification.data.groupTaskId,
|
|
userId: this.notification.data.userId,
|
|
});
|
|
|
|
this.sync();
|
|
},
|
|
async needsWork () {
|
|
// Redirect users to the group tasks page if the notification doesn't have data
|
|
if (!this.notificationHasData) {
|
|
this.$router.push({
|
|
name: 'groupPlanDetailTaskInformation',
|
|
params: {
|
|
groupId: this.notification.data.groupId,
|
|
},
|
|
});
|
|
|
|
return;
|
|
}
|
|
|
|
if (!window.confirm(this.$t('confirmNeedsWork'))) return;
|
|
|
|
await this.$store.dispatch('tasks:needsWork', {
|
|
taskId: this.notification.data.groupTaskId,
|
|
userId: this.notification.data.userId,
|
|
});
|
|
|
|
this.sync();
|
|
},
|
|
},
|
|
};
|
|
</script>
|