Fixed 267U.pre2
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
import { MastodonStream } from "../channel.js";
|
||||
import { NoteConverter } from "../../converters/note.js";
|
||||
import { NoteHelpers } from "../../helpers/note.js";
|
||||
export class MastodonStreamDirect extends MastodonStream {
|
||||
static shouldShare = true;
|
||||
static requireCredential = true;
|
||||
static requiredScopes = [
|
||||
'read:statuses'
|
||||
];
|
||||
constructor(connection, name){
|
||||
super(connection, name);
|
||||
this.onNote = this.onNote.bind(this);
|
||||
this.onNoteEvent = this.onNoteEvent.bind(this);
|
||||
}
|
||||
get user() {
|
||||
return this.connection.user;
|
||||
}
|
||||
async init() {
|
||||
this.subscriber.on("notesStream", this.onNote);
|
||||
this.subscriber.on("noteUpdatesStream", this.onNoteEvent);
|
||||
}
|
||||
async onNote(note) {
|
||||
if (!this.shouldProcessNote(note)) return;
|
||||
NoteConverter.encodeEvent(note, this.user).then((encoded)=>{
|
||||
this.connection.send(this.chName, "update", encoded);
|
||||
});
|
||||
NoteHelpers.getConversationFromEvent(note.id, this.user).then((conversation)=>{
|
||||
this.connection.send(this.chName, "conversation", conversation);
|
||||
});
|
||||
}
|
||||
async onNoteEvent(data) {
|
||||
const note = data.body;
|
||||
if (!this.shouldProcessNote(note)) return;
|
||||
NoteHelpers.getConversationFromEvent(note.id, this.user).then((conversation)=>{
|
||||
this.connection.send(this.chName, "conversation", conversation);
|
||||
});
|
||||
switch(data.type){
|
||||
case "updated":
|
||||
NoteConverter.encodeEvent(note, this.user).then((encoded)=>{
|
||||
this.connection.send(this.chName, "status.update", encoded);
|
||||
});
|
||||
break;
|
||||
case "deleted":
|
||||
this.connection.send(this.chName, "delete", note.id);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
shouldProcessNote(note) {
|
||||
if (note.visibility !== "specified") return false;
|
||||
if (note.userId !== this.user.id && !note.visibleUserIds?.includes(this.user.id)) return false;
|
||||
return true;
|
||||
}
|
||||
dispose() {
|
||||
this.subscriber.off("notesStream", this.onNote);
|
||||
this.subscriber.off("noteUpdatesStream", this.onNoteEvent);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user