mirror of
				https://codeberg.org/yeentown/barkey.git
				synced 2025-11-03 23:14:13 +00:00 
			
		
		
		
	tweak
This commit is contained in:
		
							parent
							
								
									610b68c8ff
								
							
						
					
					
						commit
						3dd84f7824
					
				
					 2 changed files with 54 additions and 31 deletions
				
			
		| 
						 | 
				
			
			@ -481,12 +481,10 @@ export class NoteCreateService implements OnApplicationShutdown {
 | 
			
		|||
		// Increment notes count (user)
 | 
			
		||||
		this.incNotesCountOfUser(user);
 | 
			
		||||
 | 
			
		||||
		if (data.visibility === 'public' || data.visibility === 'home') {
 | 
			
		||||
		if (data.visibility === 'specified') {
 | 
			
		||||
			// TODO?
 | 
			
		||||
		} else {
 | 
			
		||||
			this.pushToTl(note, user);
 | 
			
		||||
		} else if (data.visibility === 'followers') {
 | 
			
		||||
			this.pushToTl(note, user);
 | 
			
		||||
		} else if (data.visibility === 'specified') {
 | 
			
		||||
			// TODO
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		this.antennaService.addNoteToAntennas(note, user);
 | 
			
		||||
| 
						 | 
				
			
			@ -913,44 +911,42 @@ export class NoteCreateService implements OnApplicationShutdown {
 | 
			
		|||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			if (note.visibility === 'public' || note.visibility === 'home') {
 | 
			
		||||
				// 自分自身以外への返信
 | 
			
		||||
				if (note.replyId && note.replyUserId !== note.userId) {
 | 
			
		||||
			// 自分自身以外への返信
 | 
			
		||||
			if (note.replyId && note.replyUserId !== note.userId) {
 | 
			
		||||
				redisPipeline.xadd(
 | 
			
		||||
					`userTimelineWithReplies:${user.id}`,
 | 
			
		||||
					'MAXLEN', '~', note.userHost == null ? meta.perLocalUserUserTimelineCacheMax.toString() : meta.perRemoteUserUserTimelineCacheMax.toString(),
 | 
			
		||||
					'*',
 | 
			
		||||
					'note', note.id);
 | 
			
		||||
			} else {
 | 
			
		||||
				redisPipeline.xadd(
 | 
			
		||||
					`userTimeline:${user.id}`,
 | 
			
		||||
					'MAXLEN', '~', note.userHost == null ? meta.perLocalUserUserTimelineCacheMax.toString() : meta.perRemoteUserUserTimelineCacheMax.toString(),
 | 
			
		||||
					'*',
 | 
			
		||||
					'note', note.id);
 | 
			
		||||
 | 
			
		||||
				if (note.fileIds.length > 0) {
 | 
			
		||||
					redisPipeline.xadd(
 | 
			
		||||
						`userTimelineWithReplies:${user.id}`,
 | 
			
		||||
						'MAXLEN', '~', note.userHost == null ? meta.perLocalUserUserTimelineCacheMax.toString() : meta.perRemoteUserUserTimelineCacheMax.toString(),
 | 
			
		||||
						`userTimelineWithFiles:${user.id}`,
 | 
			
		||||
						'MAXLEN', '~', note.userHost == null ? (meta.perLocalUserUserTimelineCacheMax / 2).toString() : (meta.perRemoteUserUserTimelineCacheMax / 2).toString(),
 | 
			
		||||
						'*',
 | 
			
		||||
						'note', note.id);
 | 
			
		||||
				} else {
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if (note.visibility === 'public' && note.userHost == null) {
 | 
			
		||||
					redisPipeline.xadd(
 | 
			
		||||
						`userTimeline:${user.id}`,
 | 
			
		||||
						'MAXLEN', '~', note.userHost == null ? meta.perLocalUserUserTimelineCacheMax.toString() : meta.perRemoteUserUserTimelineCacheMax.toString(),
 | 
			
		||||
						'localTimeline',
 | 
			
		||||
						'MAXLEN', '~', '1000',
 | 
			
		||||
						'*',
 | 
			
		||||
						'note', note.id);
 | 
			
		||||
 | 
			
		||||
					if (note.fileIds.length > 0) {
 | 
			
		||||
						redisPipeline.xadd(
 | 
			
		||||
							`userTimelineWithFiles:${user.id}`,
 | 
			
		||||
							'MAXLEN', '~', note.userHost == null ? (meta.perLocalUserUserTimelineCacheMax / 2).toString() : (meta.perRemoteUserUserTimelineCacheMax / 2).toString(),
 | 
			
		||||
							'localTimelineWithFiles',
 | 
			
		||||
							'MAXLEN', '~', '500',
 | 
			
		||||
							'*',
 | 
			
		||||
							'note', note.id);
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					if (note.visibility === 'public' && note.userHost == null) {
 | 
			
		||||
						redisPipeline.xadd(
 | 
			
		||||
							'localTimeline',
 | 
			
		||||
							'MAXLEN', '~', '1000',
 | 
			
		||||
							'*',
 | 
			
		||||
							'note', note.id);
 | 
			
		||||
 | 
			
		||||
						if (note.fileIds.length > 0) {
 | 
			
		||||
							redisPipeline.xadd(
 | 
			
		||||
								'localTimelineWithFiles',
 | 
			
		||||
								'MAXLEN', '~', '500',
 | 
			
		||||
								'*',
 | 
			
		||||
								'note', note.id);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -701,6 +701,18 @@ describe('Timelines', () => {
 | 
			
		|||
	});
 | 
			
		||||
 | 
			
		||||
	describe('User TL', () => {
 | 
			
		||||
		test.concurrent('ノートが含まれる', async () => {
 | 
			
		||||
			const [alice, bob] = await Promise.all([signup(), signup()]);
 | 
			
		||||
 | 
			
		||||
			const bobNote = await post(bob, { text: 'hi' });
 | 
			
		||||
 | 
			
		||||
			await sleep(100); // redisに追加されるのを待つ
 | 
			
		||||
 | 
			
		||||
			const res = await api('/users/notes', { userId: bob.id }, alice);
 | 
			
		||||
 | 
			
		||||
			assert.strictEqual(res.body.some((note: any) => note.id === bobNote.id), true);
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		test.concurrent('フォローしていないユーザーの visibility: followers なノートが含まれない', async () => {
 | 
			
		||||
			const [alice, bob] = await Promise.all([signup(), signup()]);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -756,6 +768,21 @@ describe('Timelines', () => {
 | 
			
		|||
			assert.strictEqual(res.body.some((note: any) => note.id === bobNote1.id), true);
 | 
			
		||||
			assert.strictEqual(res.body.some((note: any) => note.id === bobNote2.id), true);
 | 
			
		||||
		});
 | 
			
		||||
 | 
			
		||||
		test.concurrent('[withFiles: true] ファイル付きノートのみ含まれる', async () => {
 | 
			
		||||
			const [alice, bob] = await Promise.all([signup(), signup()]);
 | 
			
		||||
 | 
			
		||||
			const file = await uploadUrl(bob, 'https://raw.githubusercontent.com/misskey-dev/assets/main/icon.png');
 | 
			
		||||
			const bobNote1 = await post(bob, { text: 'hi' });
 | 
			
		||||
			const bobNote2 = await post(bob, { fileIds: [file.id] });
 | 
			
		||||
 | 
			
		||||
			await sleep(100); // redisに追加されるのを待つ
 | 
			
		||||
 | 
			
		||||
			const res = await api('/users/notes', { userId: bob.id, withFiles: true }, alice);
 | 
			
		||||
 | 
			
		||||
			assert.strictEqual(res.body.some((note: any) => note.id === bobNote1.id), false);
 | 
			
		||||
			assert.strictEqual(res.body.some((note: any) => note.id === bobNote2.id), true);
 | 
			
		||||
		}, 1000 * 10);
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	// TODO: リノートミュート済みユーザーのテスト
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		
		Reference in a new issue