Fix bug
This commit is contained in:
parent
4c160869b8
commit
120474ec6a
2 changed files with 26 additions and 6 deletions
|
@ -611,19 +611,21 @@ function incNotesCount(user: IUser) {
|
|||
async function extractMentionedUsers(tokens: ReturnType<typeof parse>): Promise<IUser[]> {
|
||||
if (tokens == null) return [];
|
||||
|
||||
const mentionTokens = unique(
|
||||
tokens
|
||||
.filter(t => t.type == 'mention') as TextElementMention[]
|
||||
);
|
||||
const mentionTokens = tokens
|
||||
.filter(t => t.type == 'mention') as TextElementMention[];
|
||||
|
||||
const mentionedUsers = unique(
|
||||
let mentionedUsers =
|
||||
erase(null, await Promise.all(mentionTokens.map(async m => {
|
||||
try {
|
||||
return await resolveUser(m.username, m.host);
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
})))
|
||||
})));
|
||||
|
||||
// Drop duplicate users
|
||||
mentionedUsers = mentionedUsers.filter((u, i, self) =>
|
||||
i === self.findIndex(u2 => u._id.equals(u2._id))
|
||||
);
|
||||
|
||||
return mentionedUsers;
|
||||
|
|
18
test/api.ts
18
test/api.ts
|
@ -508,6 +508,24 @@ describe('API', () => {
|
|||
}, me);
|
||||
expect(res).have.status(400);
|
||||
}));
|
||||
|
||||
it('同じユーザーに複数メンションしても内部的にまとめられる', async(async () => {
|
||||
const alice = await signup({ username: 'alice' });
|
||||
const bob = await signup({ username: 'bob' });
|
||||
const post = {
|
||||
text: '@bob @bob @bob yo'
|
||||
};
|
||||
|
||||
const res = await request('/notes/create', post, alice);
|
||||
|
||||
expect(res).have.status(200);
|
||||
expect(res.body).be.a('object');
|
||||
expect(res.body).have.property('createdNote');
|
||||
expect(res.body.createdNote).have.property('text').eql(post.text);
|
||||
|
||||
const noteDoc = await db.get('notes').findOne({ _id: res.body.createdNote.id });
|
||||
expect(noteDoc.mentions.map((id: any) => id.toString())).eql([bob.id.toString()]);
|
||||
}));
|
||||
});
|
||||
|
||||
describe('notes/show', () => {
|
||||
|
|
Loading…
Reference in a new issue