mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-03 23:14:13 +00:00 
			
		
		
		
	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
		
		Reference in a new issue