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…
	
	Add table
		Add a link
		
	
		Reference in a new issue