refactor (backend): port renderTombstone to backend-rs
This commit is contained in:
parent
5035eb6849
commit
35564ceecc
7 changed files with 46 additions and 19 deletions
10
packages/backend-rs/index.d.ts
vendored
10
packages/backend-rs/index.d.ts
vendored
|
@ -129,7 +129,8 @@ export interface ApFollow {
|
|||
export type ApObject = 'Accept'|
|
||||
'Emoji'|
|
||||
'Follow'|
|
||||
'Image';
|
||||
'Image'|
|
||||
'Tombstone';
|
||||
|
||||
export interface App {
|
||||
id: string
|
||||
|
@ -142,6 +143,11 @@ export interface App {
|
|||
callbackUrl: string | null
|
||||
}
|
||||
|
||||
export interface ApTombstone {
|
||||
id: string
|
||||
type: ApObject
|
||||
}
|
||||
|
||||
export interface AttestationChallenge {
|
||||
id: string
|
||||
userId: string
|
||||
|
@ -1299,6 +1305,8 @@ export declare function renderFollow(follower: UserLike, followee: UserLike, req
|
|||
|
||||
export declare function renderFollowRelay(relayId: string): Promise<ApFollow>
|
||||
|
||||
export declare function renderTombstone(noteId: string): ApTombstone
|
||||
|
||||
export interface RenoteMuting {
|
||||
id: string
|
||||
createdAt: DateTimeWithTimeZone
|
||||
|
|
|
@ -442,6 +442,7 @@ module.exports.renderAccept = nativeBinding.renderAccept
|
|||
module.exports.renderEmoji = nativeBinding.renderEmoji
|
||||
module.exports.renderFollow = nativeBinding.renderFollow
|
||||
module.exports.renderFollowRelay = nativeBinding.renderFollowRelay
|
||||
module.exports.renderTombstone = nativeBinding.renderTombstone
|
||||
module.exports.safeForSql = nativeBinding.safeForSql
|
||||
module.exports.sendPushNotification = nativeBinding.sendPushNotification
|
||||
module.exports.shouldNyaify = nativeBinding.shouldNyaify
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
pub mod accept;
|
||||
pub mod emoji;
|
||||
pub mod follow;
|
||||
pub mod tombstone;
|
||||
|
||||
pub trait ActivityPubObject {}
|
||||
|
||||
|
@ -10,6 +11,7 @@ pub enum ApObject {
|
|||
Emoji,
|
||||
Follow,
|
||||
Image,
|
||||
Tombstone,
|
||||
}
|
||||
|
||||
const AS_PUBLIC_URL: &str = "https://www.w3.org/ns/activitystreams#Public";
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
use super::*;
|
||||
use crate::config::CONFIG;
|
||||
|
||||
#[macros::export(object)]
|
||||
pub struct ApTombstone {
|
||||
pub id: String,
|
||||
pub r#type: ApObject,
|
||||
}
|
||||
|
||||
impl ActivityPubObject for ApTombstone {}
|
||||
|
||||
impl ApTombstone {
|
||||
#[allow(dead_code)] // TODO: remove this line
|
||||
fn new(note_id: String) -> Self {
|
||||
Self {
|
||||
id: format!("{}/notes/{}", CONFIG.url, note_id),
|
||||
r#type: ApObject::Tombstone,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[macros::ts_export]
|
||||
pub fn render_tombstone(note_id: String) -> ApTombstone {
|
||||
ApTombstone::new(note_id)
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
export default (id: string) => ({
|
||||
id,
|
||||
type: "Tombstone",
|
||||
});
|
|
@ -1,10 +1,12 @@
|
|||
import { config } from "@/config.js";
|
||||
import { MessagingMessages, Users } from "@/models/index.js";
|
||||
import type { MessagingMessage } from "@/models/entities/messaging-message.js";
|
||||
import { publishToChatStream, publishToGroupChatStream } from "backend-rs";
|
||||
import {
|
||||
publishToChatStream,
|
||||
publishToGroupChatStream,
|
||||
renderTombstone,
|
||||
} from "backend-rs";
|
||||
import { renderActivity } from "@/remote/activitypub/renderer/index.js";
|
||||
import renderDelete from "@/remote/activitypub/renderer/delete.js";
|
||||
import renderTombstone from "@/remote/activitypub/renderer/tombstone.js";
|
||||
import { deliver } from "@/queue/index.js";
|
||||
|
||||
export async function deleteMessage(message: MessagingMessage) {
|
||||
|
@ -36,10 +38,7 @@ async function postDeleteMessage(message: MessagingMessage) {
|
|||
|
||||
if (Users.isLocalUser(user) && Users.isRemoteUser(recipient)) {
|
||||
const activity = renderActivity(
|
||||
renderDelete(
|
||||
renderTombstone(`${config.url}/notes/${message.id}`),
|
||||
user,
|
||||
),
|
||||
renderDelete(renderTombstone(message.id), user),
|
||||
);
|
||||
deliver(user.id, activity, recipient.inbox);
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@ import renderDelete from "@/remote/activitypub/renderer/delete.js";
|
|||
import renderAnnounce from "@/remote/activitypub/renderer/announce.js";
|
||||
import { renderUndo } from "@/remote/activitypub/renderer/undo.js";
|
||||
import { renderActivity } from "@/remote/activitypub/renderer/index.js";
|
||||
import renderTombstone from "@/remote/activitypub/renderer/tombstone.js";
|
||||
import { config } from "@/config.js";
|
||||
import type { User, ILocalUser, IRemoteUser } from "@/models/entities/user.js";
|
||||
import type { Note, IMentionedRemoteUsers } from "@/models/entities/note.js";
|
||||
|
@ -16,7 +15,7 @@ import { countSameRenotes } from "@/misc/count-same-renotes.js";
|
|||
import { registerOrFetchInstanceDoc } from "@/services/register-or-fetch-instance-doc.js";
|
||||
import { deliverToRelays } from "@/services/relay.js";
|
||||
import type { IActivity } from "@/remote/activitypub/type.js";
|
||||
import { NoteEvent, publishToNoteStream } from "backend-rs";
|
||||
import { NoteEvent, publishToNoteStream, renderTombstone } from "backend-rs";
|
||||
|
||||
async function recalculateNotesCountOfLocalUser(user: {
|
||||
id: User["id"];
|
||||
|
@ -102,7 +101,7 @@ export default async function (
|
|||
),
|
||||
user.id,
|
||||
)
|
||||
: renderDelete(renderTombstone(`${config.url}/notes/${note.id}`), user),
|
||||
: renderDelete(renderTombstone(note.id), user),
|
||||
);
|
||||
|
||||
deliverToConcerned(user, note, content);
|
||||
|
@ -127,10 +126,7 @@ export default async function (
|
|||
affectedLocalUsers[cascadingNote.user.id] ??= cascadingNote.user;
|
||||
if (cascadingNote.localOnly) continue; // filter out local-only notes
|
||||
const content = renderActivity(
|
||||
renderDelete(
|
||||
renderTombstone(`${config.url}/notes/${cascadingNote.id}`),
|
||||
cascadingNote.user,
|
||||
),
|
||||
renderDelete(renderTombstone(cascadingNote.id), cascadingNote.user),
|
||||
);
|
||||
deliverToConcerned(cascadingNote.user, cascadingNote, content);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue