mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 14:47:53 +01:00
* Updated from origin and added invite error fixes * Update test for capitalization issue * New error display Changed app.vue to display error message using error.response.data.message
This commit is contained in:
committed by
Matteo Pagliazzi
parent
80e4f5e745
commit
f592103754
@@ -322,18 +322,18 @@ describe('Post /groups/:groupId/invite', () => {
|
|||||||
|
|
||||||
describe('guild invites', () => {
|
describe('guild invites', () => {
|
||||||
it('returns an error when invited user is already invited to the group', async () => {
|
it('returns an error when invited user is already invited to the group', async () => {
|
||||||
let userToInivite = await generateUser();
|
let userToInvite = await generateUser();
|
||||||
await inviter.post(`/groups/${group._id}/invite`, {
|
await inviter.post(`/groups/${group._id}/invite`, {
|
||||||
uuids: [userToInivite._id],
|
uuids: [userToInvite._id],
|
||||||
});
|
});
|
||||||
|
|
||||||
await expect(inviter.post(`/groups/${group._id}/invite`, {
|
await expect(inviter.post(`/groups/${group._id}/invite`, {
|
||||||
uuids: [userToInivite._id],
|
uuids: [userToInvite._id],
|
||||||
}))
|
}))
|
||||||
.to.eventually.be.rejected.and.eql({
|
.to.eventually.be.rejected.and.eql({
|
||||||
code: 401,
|
code: 401,
|
||||||
error: 'NotAuthorized',
|
error: 'NotAuthorized',
|
||||||
message: t('userAlreadyInvitedToGroup'),
|
message: t('userAlreadyInvitedToGroup', { userId: userToInvite._id, username: userToInvite.profile.name}),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -350,7 +350,7 @@ describe('Post /groups/:groupId/invite', () => {
|
|||||||
.to.eventually.be.rejected.and.eql({
|
.to.eventually.be.rejected.and.eql({
|
||||||
code: 401,
|
code: 401,
|
||||||
error: 'NotAuthorized',
|
error: 'NotAuthorized',
|
||||||
message: t('userAlreadyInGroup'),
|
message: t('userAlreadyInGroup', { userId: userToInvite._id, username: userToInvite.profile.name}),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -410,7 +410,7 @@ describe('Post /groups/:groupId/invite', () => {
|
|||||||
.to.eventually.be.rejected.and.eql({
|
.to.eventually.be.rejected.and.eql({
|
||||||
code: 401,
|
code: 401,
|
||||||
error: 'NotAuthorized',
|
error: 'NotAuthorized',
|
||||||
message: t('userAlreadyPendingInvitation'),
|
message: t('userAlreadyPendingInvitation', { userId: userToInvite._id, username: userToInvite.profile.name}),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -429,7 +429,7 @@ describe('Post /groups/:groupId/invite', () => {
|
|||||||
.to.eventually.be.rejected.and.eql({
|
.to.eventually.be.rejected.and.eql({
|
||||||
code: 401,
|
code: 401,
|
||||||
error: 'NotAuthorized',
|
error: 'NotAuthorized',
|
||||||
message: t('userAlreadyInAParty'),
|
message: t('userAlreadyInAParty', { userId: userToInvite._id, username: userToInvite.profile.name}),
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -229,9 +229,12 @@ export default {
|
|||||||
return Promise.resolve(error);
|
return Promise.resolve(error);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const errorData = error.response.data;
|
||||||
|
const errorMessage = errorData.message || errorData;
|
||||||
|
|
||||||
this.$store.dispatch('snackbars:add', {
|
this.$store.dispatch('snackbars:add', {
|
||||||
title: 'Habitica',
|
title: 'Habitica',
|
||||||
text: error.response.data,
|
text: errorMessage,
|
||||||
type: 'error',
|
type: 'error',
|
||||||
timeout: true,
|
timeout: true,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -222,11 +222,11 @@
|
|||||||
"inviteMissingUuid": "Missing user id in invite",
|
"inviteMissingUuid": "Missing user id in invite",
|
||||||
"inviteMustNotBeEmpty": "Invite must not be empty.",
|
"inviteMustNotBeEmpty": "Invite must not be empty.",
|
||||||
"partyMustbePrivate": "Parties must be private",
|
"partyMustbePrivate": "Parties must be private",
|
||||||
"userAlreadyInGroup": "User already in that group.",
|
"userAlreadyInGroup": "UserID: <%= userId %>, User \"<%= username %>\" already in that group.",
|
||||||
"cannotInviteSelfToGroup": "You cannot invite yourself to a group.",
|
"cannotInviteSelfToGroup": "You cannot invite yourself to a group.",
|
||||||
"userAlreadyInvitedToGroup": "User already invited to that group.",
|
"userAlreadyInvitedToGroup": "UserID: <%= userId %>, User \"<%= username %>\" already invited to that group.",
|
||||||
"userAlreadyPendingInvitation": "User already pending invitation.",
|
"userAlreadyPendingInvitation": "UserID: <%= userId %>, User \"<%= username %>\" already pending invitation.",
|
||||||
"userAlreadyInAParty": "User already in a Party.",
|
"userAlreadyInAParty": "UserID: <%= userId %>, User \"<%= username %>\" already in a party. ",
|
||||||
"userWithIDNotFound": "User with id \"<%= userId %>\" not found.",
|
"userWithIDNotFound": "User with id \"<%= userId %>\" not found.",
|
||||||
"userHasNoLocalRegistration": "User does not have a local registration (username, email, password).",
|
"userHasNoLocalRegistration": "User does not have a local registration (username, email, password).",
|
||||||
"uuidsMustBeAnArray": "User ID invites must be an array.",
|
"uuidsMustBeAnArray": "User ID invites must be an array.",
|
||||||
|
|||||||
@@ -935,10 +935,10 @@ async function _inviteByUUID (uuid, group, inviter, req, res) {
|
|||||||
|
|
||||||
if (group.type === 'guild') {
|
if (group.type === 'guild') {
|
||||||
if (_.includes(userToInvite.guilds, group._id)) {
|
if (_.includes(userToInvite.guilds, group._id)) {
|
||||||
throw new NotAuthorized(res.t('userAlreadyInGroup'));
|
throw new NotAuthorized(res.t('userAlreadyInGroup', { userId: uuid, username: userToInvite.profile.name}));
|
||||||
}
|
}
|
||||||
if (_.find(userToInvite.invitations.guilds, {id: group._id})) {
|
if (_.find(userToInvite.invitations.guilds, {id: group._id})) {
|
||||||
throw new NotAuthorized(res.t('userAlreadyInvitedToGroup'));
|
throw new NotAuthorized(res.t('userAlreadyInvitedToGroup', { userId: uuid, username: userToInvite.profile.name}));
|
||||||
}
|
}
|
||||||
|
|
||||||
let guildInvite = {
|
let guildInvite = {
|
||||||
@@ -952,14 +952,14 @@ async function _inviteByUUID (uuid, group, inviter, req, res) {
|
|||||||
} else if (group.type === 'party') {
|
} else if (group.type === 'party') {
|
||||||
// Do not add to invitations.parties array if the user is already invited to that party
|
// Do not add to invitations.parties array if the user is already invited to that party
|
||||||
if (_.find(userToInvite.invitations.parties, {id: group._id})) {
|
if (_.find(userToInvite.invitations.parties, {id: group._id})) {
|
||||||
throw new NotAuthorized(res.t('userAlreadyPendingInvitation'));
|
throw new NotAuthorized(res.t('userAlreadyPendingInvitation', { userId: uuid, username: userToInvite.profile.name}));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userToInvite.party._id) {
|
if (userToInvite.party._id) {
|
||||||
let userParty = await Group.getGroup({user: userToInvite, groupId: 'party', fields: 'memberCount'});
|
let userParty = await Group.getGroup({user: userToInvite, groupId: 'party', fields: 'memberCount'});
|
||||||
|
|
||||||
// Allow user to be invited to a new party when they're partying solo
|
// Allow user to be invited to a new party when they're partying solo
|
||||||
if (userParty && userParty.memberCount !== 1) throw new NotAuthorized(res.t('userAlreadyInAParty'));
|
if (userParty && userParty.memberCount !== 1) throw new NotAuthorized(res.t('userAlreadyInAParty', { userId: uuid, username: userToInvite.profile.name}));
|
||||||
}
|
}
|
||||||
|
|
||||||
let partyInvite = {id: group._id, name: group.name, inviter: inviter._id};
|
let partyInvite = {id: group._id, name: group.name, inviter: inviter._id};
|
||||||
|
|||||||
Reference in New Issue
Block a user