mirror of
https://github.com/sudoxnym/habitica-self-host.git
synced 2026-07-14 10:12:21 +00:00
Merge branch 'release' into develop
This commit is contained in:
commit
6e19a0ef2e
7 changed files with 28 additions and 18 deletions
|
|
@ -26,7 +26,7 @@ async function updateTeamTasks (team) {
|
|||
const userTask = find(teamUserTasks, task => task.userId === assignedUserId
|
||||
&& task.group.taskId === boardTask._id);
|
||||
if (!boardTask.group.assignedUsersDetail) boardTask.group.assignedUsersDetail = {};
|
||||
if (userTask) {
|
||||
if (userTask && assignedUser) {
|
||||
boardTask.group.assignedUsersDetail[assignedUserId] = {
|
||||
assignedDate: userTask.group.assignedDate,
|
||||
assignedUsername: assignedUser.auth.local.username,
|
||||
|
|
@ -34,8 +34,7 @@ async function updateTeamTasks (team) {
|
|||
completed: userTask.completed || false,
|
||||
completedDate: userTask.dateCompleted,
|
||||
};
|
||||
toSave.push(Tasks.Task.findByIdAndDelete(userTask._id));
|
||||
} else {
|
||||
} else if (assignedUser) {
|
||||
boardTask.group.assignedUsersDetail[assignedUserId] = {
|
||||
assignedDate: new Date(),
|
||||
assignedUsername: assignedUser.auth.local.username,
|
||||
|
|
@ -43,7 +42,11 @@ async function updateTeamTasks (team) {
|
|||
completed: false,
|
||||
completedDate: null,
|
||||
};
|
||||
} else {
|
||||
const taskIndex = boardTask.group.assignedUsers.indexOf(assignedUserId);
|
||||
boardTask.group.assignedUsers.splice(taskIndex, 1);
|
||||
}
|
||||
if (userTask) toSave.push(Tasks.Task.findByIdAndDelete(userTask._id));
|
||||
}
|
||||
boardTask.markModified('group');
|
||||
toSave.push(boardTask.save());
|
||||
|
|
|
|||
2
package-lock.json
generated
2
package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "habitica",
|
||||
"version": "4.241.0",
|
||||
"version": "4.241.2",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "habitica",
|
||||
"description": "A habit tracker app which treats your goals like a Role Playing Game.",
|
||||
"version": "4.241.0",
|
||||
"version": "4.241.2",
|
||||
"main": "./website/server/index.js",
|
||||
"dependencies": {
|
||||
"@babel/core": "^7.18.13",
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@
|
|||
hide-footer="hide-footer"
|
||||
:no-close-on-backdrop="true"
|
||||
:no-close-on-esc="true"
|
||||
:centered="true"
|
||||
>
|
||||
<div
|
||||
slot="modal-header"
|
||||
|
|
@ -96,8 +97,6 @@
|
|||
<style lang="scss">
|
||||
@import '~@/assets/scss/colors.scss';
|
||||
#group-plans-update {
|
||||
overflow-y: hidden;
|
||||
|
||||
.modal-content {
|
||||
border-top-left-radius: 10px;
|
||||
border-top-right-radius: 10px;
|
||||
|
|
@ -107,8 +106,7 @@
|
|||
|
||||
.modal-dialog {
|
||||
max-width: 566px;
|
||||
margin-top: 50vh;
|
||||
transform: translateY(-50%);
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
.modal-header {
|
||||
|
|
|
|||
|
|
@ -79,7 +79,6 @@
|
|||
<lockable-label
|
||||
class="mr-auto"
|
||||
:class-override="cssClass('headings')"
|
||||
:locked="challengeAccessRequired"
|
||||
:text="`${$t('notes')}`"
|
||||
/>
|
||||
<small
|
||||
|
|
@ -96,7 +95,6 @@
|
|||
v-model="task.notes"
|
||||
class="form-control input-notes"
|
||||
:class="cssClass('input')"
|
||||
:disabled="challengeAccessRequired"
|
||||
:placeholder="$t('addNotes')"
|
||||
></textarea>
|
||||
</div>
|
||||
|
|
@ -363,7 +361,7 @@
|
|||
</div>
|
||||
</div>
|
||||
<div
|
||||
v-if="!challengeAccessRequired && !groupId"
|
||||
v-if="!groupId"
|
||||
class="tags-select option mt-3"
|
||||
>
|
||||
<div class="tags-inline form-group row">
|
||||
|
|
|
|||
|
|
@ -961,7 +961,8 @@ api.scoreCheckListItem = {
|
|||
if (!task || (!task.userId && !task.group.id)) throw new NotFound(res.t('messageTaskNotFound'));
|
||||
if (task.userId && task.userId !== user._id) {
|
||||
throw new BadRequest('Cannot score task belonging to another user.');
|
||||
} else if (user.guilds.indexOf(task.group.id) === -1 && user.party._id !== task.group.id) {
|
||||
} else if (task.group.id && user.guilds.indexOf(task.group.id) === -1
|
||||
&& user.party._id !== task.group.id) {
|
||||
throw new BadRequest('Cannot score task belonging to another user.');
|
||||
}
|
||||
if (task.type !== 'daily' && task.type !== 'todo') throw new BadRequest(res.t('checklistOnlyDailyTodo'));
|
||||
|
|
|
|||
|
|
@ -156,6 +156,7 @@ async function getTasks (req, res, options = {}) {
|
|||
let limit;
|
||||
let sort;
|
||||
let upgradedGroups = [];
|
||||
const upgradedGroupIds = [];
|
||||
const owner = group || challenge || user;
|
||||
|
||||
if (challenge) {
|
||||
|
|
@ -179,15 +180,19 @@ async function getTasks (req, res, options = {}) {
|
|||
).exec();
|
||||
}
|
||||
if (upgradedGroups.length > 0) {
|
||||
const upgradedGroupIds = [];
|
||||
for (const upgradedGroup of upgradedGroups) {
|
||||
upgradedGroupIds.push(upgradedGroup._id);
|
||||
}
|
||||
query = {
|
||||
$or: [
|
||||
{ userId: user._id },
|
||||
{ 'group.assignedUsers': user._id },
|
||||
{ 'group.id': { $in: upgradedGroupIds }, 'group.assignedUsers.0': { $exists: false } },
|
||||
{
|
||||
'group.id': { $in: upgradedGroupIds },
|
||||
$or: [
|
||||
{ 'group.assignedUsers': user._id },
|
||||
{ 'group.assignedUsers.0': { $exists: false } },
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
} else {
|
||||
|
|
@ -214,8 +219,13 @@ async function getTasks (req, res, options = {}) {
|
|||
if (upgradedGroups.length > 0) {
|
||||
query.$or = [
|
||||
{ userId: user._id },
|
||||
{ 'group.assignedUsers': user._id },
|
||||
{ 'group.completedBy.userId': user._id },
|
||||
{
|
||||
'group.id': { $in: upgradedGroupIds },
|
||||
$or: [
|
||||
{ 'group.assignedUsers': user._id },
|
||||
{ 'group.completedBy.userId': user._id },
|
||||
],
|
||||
},
|
||||
];
|
||||
} else if (owner._id === user._id) {
|
||||
query.userId = user._id;
|
||||
|
|
|
|||
Loading…
Reference in a new issue