V10 (#2826)
* wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * Update CHANGELOG.md * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * Update CHANGELOG.md * Update CHANGELOG.md * wip * Update CHANGELOG.md * wip * wip * wip * wip
This commit is contained in:
parent
0b98a2364b
commit
d0570d7fe3
126 changed files with 1812 additions and 2273 deletions
39
src/server/api/stream/channels/home-timeline.ts
Normal file
39
src/server/api/stream/channels/home-timeline.ts
Normal file
|
@ -0,0 +1,39 @@
|
|||
import autobind from 'autobind-decorator';
|
||||
import Mute from '../../../../models/mute';
|
||||
import { pack } from '../../../../models/note';
|
||||
import shouldMuteThisNote from '../../../../misc/should-mute-this-note';
|
||||
import Channel from '../channel';
|
||||
|
||||
export default class extends Channel {
|
||||
private mutedUserIds: string[] = [];
|
||||
|
||||
@autobind
|
||||
public async init(params: any) {
|
||||
// Subscribe events
|
||||
this.subscriber.on(`homeTimeline:${this.user._id}`, this.onNote);
|
||||
|
||||
const mute = await Mute.find({ muterId: this.user._id });
|
||||
this.mutedUserIds = mute.map(m => m.muteeId.toString());
|
||||
}
|
||||
|
||||
@autobind
|
||||
private async onNote(note: any) {
|
||||
// Renoteなら再pack
|
||||
if (note.renoteId != null) {
|
||||
note.renote = await pack(note.renoteId, this.user, {
|
||||
detail: true
|
||||
});
|
||||
}
|
||||
|
||||
// 流れてきたNoteがミュートしているユーザーが関わるものだったら無視する
|
||||
if (shouldMuteThisNote(note, this.mutedUserIds)) return;
|
||||
|
||||
this.send('note', note);
|
||||
}
|
||||
|
||||
@autobind
|
||||
public dispose() {
|
||||
// Unsubscribe events
|
||||
this.subscriber.off(`homeTimeline:${this.user._id}`, this.onNote);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue