enhance(backend): improve cache
This commit is contained in:
		| @@ -35,11 +35,11 @@ class AntennaChannel extends Channel { | ||||
| 			const note = await this.noteEntityService.pack(data.body.id, this.user, { detail: true }); | ||||
|  | ||||
| 			// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する | ||||
| 			if (isUserRelated(note, this.muting)) return; | ||||
| 			if (isUserRelated(note, this.userIdsWhoMeMuting)) return; | ||||
| 			// 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する | ||||
| 			if (isUserRelated(note, this.blocking)) return; | ||||
| 			if (isUserRelated(note, this.userIdsWhoBlockingMe)) return; | ||||
|  | ||||
| 			if (note.renote && !note.text && isUserRelated(note, this.renoteMuting)) return; | ||||
| 			if (note.renote && !note.text && isUserRelated(note, this.userIdsWhoMeMutingRenotes)) return; | ||||
|  | ||||
| 			this.connection.cacheNote(note); | ||||
|  | ||||
|   | ||||
| @@ -47,11 +47,11 @@ class ChannelChannel extends Channel { | ||||
| 		} | ||||
|  | ||||
| 		// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.muting)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoMeMuting)) return; | ||||
| 		// 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.blocking)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoBlockingMe)) return; | ||||
|  | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.renoteMuting)) return; | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.userIdsWhoMeMutingRenotes)) return; | ||||
|  | ||||
| 		this.connection.cacheNote(note); | ||||
|  | ||||
|   | ||||
| @@ -64,11 +64,11 @@ class GlobalTimelineChannel extends Channel { | ||||
| 		if (isInstanceMuted(note, new Set<string>(this.userProfile?.mutedInstances ?? []))) return; | ||||
|  | ||||
| 		// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.muting)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoMeMuting)) return; | ||||
| 		// 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.blocking)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoBlockingMe)) return; | ||||
|  | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.renoteMuting)) return; | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.userIdsWhoMeMutingRenotes)) return; | ||||
|  | ||||
| 		// 流れてきたNoteがミュートすべきNoteだったら無視する | ||||
| 		// TODO: 将来的には、単にMutedNoteテーブルにレコードがあるかどうかで判定したい(以下の理由により難しそうではある) | ||||
|   | ||||
| @@ -46,11 +46,11 @@ class HashtagChannel extends Channel { | ||||
| 		} | ||||
|  | ||||
| 		// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.muting)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoMeMuting)) return; | ||||
| 		// 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.blocking)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoBlockingMe)) return; | ||||
| 		 | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.renoteMuting)) return; | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.userIdsWhoMeMutingRenotes)) return; | ||||
|  | ||||
| 		this.connection.cacheNote(note); | ||||
|  | ||||
|   | ||||
| @@ -24,7 +24,6 @@ class HomeTimelineChannel extends Channel { | ||||
|  | ||||
| 	@bindThis | ||||
| 	public async init(params: any) { | ||||
| 		// Subscribe events | ||||
| 		this.subscriber.on('notesStream', this.onNote); | ||||
| 	} | ||||
|  | ||||
| @@ -38,7 +37,7 @@ class HomeTimelineChannel extends Channel { | ||||
| 		} | ||||
|  | ||||
| 		// Ignore notes from instances the user has muted | ||||
| 		if (isInstanceMuted(note, new Set<string>(this.userProfile?.mutedInstances ?? []))) return; | ||||
| 		if (isInstanceMuted(note, new Set<string>(this.userProfile!.mutedInstances ?? []))) return; | ||||
|  | ||||
| 		if (['followers', 'specified'].includes(note.visibility)) { | ||||
| 			note = await this.noteEntityService.pack(note.id, this.user!, { | ||||
| @@ -71,18 +70,18 @@ class HomeTimelineChannel extends Channel { | ||||
| 		} | ||||
|  | ||||
| 		// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.muting)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoMeMuting)) return; | ||||
| 		// 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.blocking)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoBlockingMe)) return; | ||||
|  | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.renoteMuting)) return; | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.userIdsWhoMeMutingRenotes)) return; | ||||
|  | ||||
| 		// 流れてきたNoteがミュートすべきNoteだったら無視する | ||||
| 		// TODO: 将来的には、単にMutedNoteテーブルにレコードがあるかどうかで判定したい(以下の理由により難しそうではある) | ||||
| 		// 現状では、ワードミュートにおけるMutedNoteレコードの追加処理はストリーミングに流す処理と並列で行われるため、 | ||||
| 		// レコードが追加されるNoteでも追加されるより先にここのストリーミングの処理に到達することが起こる。 | ||||
| 		// そのためレコードが存在するかのチェックでは不十分なので、改めてcheckWordMuteを呼んでいる | ||||
| 		if (this.userProfile && await checkWordMute(note, this.user, this.userProfile.mutedWords)) return; | ||||
| 		if (await checkWordMute(note, this.user, this.userProfile!.mutedWords)) return; | ||||
|  | ||||
| 		this.connection.cacheNote(note); | ||||
|  | ||||
|   | ||||
| @@ -72,7 +72,7 @@ class HybridTimelineChannel extends Channel { | ||||
| 		} | ||||
|  | ||||
| 		// Ignore notes from instances the user has muted | ||||
| 		if (isInstanceMuted(note, new Set<string>(this.userProfile?.mutedInstances ?? []))) return; | ||||
| 		if (isInstanceMuted(note, new Set<string>(this.userProfile!.mutedInstances ?? []))) return; | ||||
|  | ||||
| 		// 関係ない返信は除外 | ||||
| 		if (note.reply && !this.user!.showTimelineReplies) { | ||||
| @@ -82,11 +82,11 @@ class HybridTimelineChannel extends Channel { | ||||
| 		} | ||||
|  | ||||
| 		// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.muting)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoMeMuting)) return; | ||||
| 		// 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.blocking)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoBlockingMe)) return; | ||||
|  | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.renoteMuting)) return; | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.userIdsWhoMeMutingRenotes)) return; | ||||
|  | ||||
| 		// 流れてきたNoteがミュートすべきNoteだったら無視する | ||||
| 		// TODO: 将来的には、単にMutedNoteテーブルにレコードがあるかどうかで判定したい(以下の理由により難しそうではある) | ||||
|   | ||||
| @@ -61,11 +61,11 @@ class LocalTimelineChannel extends Channel { | ||||
| 		} | ||||
|  | ||||
| 		// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.muting)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoMeMuting)) return; | ||||
| 		// 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.blocking)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoBlockingMe)) return; | ||||
|  | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.renoteMuting)) return; | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.userIdsWhoMeMutingRenotes)) return; | ||||
|  | ||||
| 		// 流れてきたNoteがミュートすべきNoteだったら無視する | ||||
| 		// TODO: 将来的には、単にMutedNoteテーブルにレコードがあるかどうかで判定したい(以下の理由により難しそうではある) | ||||
|   | ||||
| @@ -26,7 +26,7 @@ class MainChannel extends Channel { | ||||
| 				case 'notification': { | ||||
| 					// Ignore notifications from instances the user has muted | ||||
| 					if (isUserFromMutedInstance(data.body, new Set<string>(this.userProfile?.mutedInstances ?? []))) return; | ||||
| 					if (data.body.userId && this.muting.has(data.body.userId)) return; | ||||
| 					if (data.body.userId && this.userIdsWhoMeMuting.has(data.body.userId)) return; | ||||
|  | ||||
| 					if (data.body.note && data.body.note.isHidden) { | ||||
| 						const note = await this.noteEntityService.pack(data.body.note.id, this.user, { | ||||
| @@ -40,7 +40,7 @@ class MainChannel extends Channel { | ||||
| 				case 'mention': { | ||||
| 					if (isInstanceMuted(data.body, new Set<string>(this.userProfile?.mutedInstances ?? []))) return; | ||||
|  | ||||
| 					if (this.muting.has(data.body.userId)) return; | ||||
| 					if (this.userIdsWhoMeMuting.has(data.body.userId)) return; | ||||
| 					if (data.body.isHidden) { | ||||
| 						const note = await this.noteEntityService.pack(data.body.id, this.user, { | ||||
| 							detail: true, | ||||
|   | ||||
| @@ -89,11 +89,11 @@ class UserListChannel extends Channel { | ||||
| 		} | ||||
|  | ||||
| 		// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.muting)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoMeMuting)) return; | ||||
| 		// 流れてきたNoteがブロックされているユーザーが関わるものだったら無視する | ||||
| 		if (isUserRelated(note, this.blocking)) return; | ||||
| 		if (isUserRelated(note, this.userIdsWhoBlockingMe)) return; | ||||
|  | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.renoteMuting)) return; | ||||
| 		if (note.renote && !note.text && isUserRelated(note, this.userIdsWhoMeMutingRenotes)) return; | ||||
|  | ||||
| 		this.send('note', note); | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo