Fixed 267U.pre2
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
import { resolveNote } from "../models/note.js";
|
||||
import renderAcceptQuoteRequest from "../renderer/accept-quote-request.js";
|
||||
import { deliverToUser } from "../deliver-manager.js";
|
||||
import { renderActivity } from "../renderer/index.js";
|
||||
import { parseUri } from "../db-resolver.js";
|
||||
import { InteractionStamps, Notes } from "../../../models/index.js";
|
||||
import { genId } from "../../../misc/gen-id.js";
|
||||
export default (async (actor, activity)=>{
|
||||
const localParsed = parseUri(activity.object);
|
||||
if (!localParsed.local) return "skip: local note not local";
|
||||
const [note, targetNote] = await Promise.all([
|
||||
resolveNote(activity.instrument),
|
||||
Notes.findOneBy({
|
||||
id: localParsed.id
|
||||
})
|
||||
]);
|
||||
if (note === null) return "skip: note not found";
|
||||
if (note.userId !== actor.id) return "skip: actor is requesting authorization for a quote they didn't make";
|
||||
if (targetNote === null) return "skip: target note not found";
|
||||
if (!await Notes.isVisibleForMe(targetNote, actor.id)) return "skip: target note is not visible for remote user";
|
||||
let stamp = await InteractionStamps.findOneBy({
|
||||
noteId: note.id,
|
||||
targetNoteId: targetNote.id
|
||||
});
|
||||
if (stamp === null) {
|
||||
stamp = {
|
||||
id: genId(),
|
||||
type: "quote",
|
||||
noteId: note.id,
|
||||
targetNoteId: targetNote.id
|
||||
};
|
||||
await InteractionStamps.insert(stamp);
|
||||
}
|
||||
stamp.note = note;
|
||||
stamp.targetNote = targetNote;
|
||||
await deliverToUser({
|
||||
id: targetNote.userId,
|
||||
host: null
|
||||
}, renderActivity(await renderAcceptQuoteRequest(activity, stamp)), actor);
|
||||
return "ok";
|
||||
});
|
||||
Reference in New Issue
Block a user