summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-06-06 17:24:42 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-06-09 11:03:02 -0400
commitaefd94c0b0e2c7a9e6fd34c85fbdb0f2ca8c276c (patch)
tree98e7f44d5560a862b3ff9fedb1ccdd63c205a032
parentpull out ILink interface (diff)
downloadsharkey-aefd94c0b0e2c7a9e6fd34c85fbdb0f2ca8c276c.tar.gz
sharkey-aefd94c0b0e2c7a9e6fd34c85fbdb0f2ca8c276c.tar.bz2
sharkey-aefd94c0b0e2c7a9e6fd34c85fbdb0f2ca8c276c.zip
render fep-e232 "tag" quotes in notes
-rw-r--r--packages/backend/src/core/activitypub/ApRendererService.ts28
1 files changed, 25 insertions, 3 deletions
diff --git a/packages/backend/src/core/activitypub/ApRendererService.ts b/packages/backend/src/core/activitypub/ApRendererService.ts
index 079023284b..23a52a248a 100644
--- a/packages/backend/src/core/activitypub/ApRendererService.ts
+++ b/packages/backend/src/core/activitypub/ApRendererService.ts
@@ -34,7 +34,7 @@ import { UtilityService } from '@/core/UtilityService.js';
import { JsonLdService } from './JsonLdService.js';
import { ApMfmService } from './ApMfmService.js';
import { CONTEXT } from './misc/contexts.js';
-import { getApId, IOrderedCollection, IOrderedCollectionPage } from './type.js';
+import { getApId, ILink, IOrderedCollection, IOrderedCollectionPage } from './type.js';
import type { IAccept, IActivity, IAdd, IAnnounce, IApDocument, IApEmoji, IApHashtag, IApImage, IApMention, IBlock, ICreate, IDelete, IFlag, IFollow, IKey, ILike, IMove, IObject, IPost, IQuestion, IReject, IRemove, ITombstone, IUndo, IUpdate } from './type.js';
@Injectable()
@@ -500,12 +500,22 @@ export class ApRendererService {
const emojis = await this.getEmojis(note.emojis);
const apemojis = emojis.filter(emoji => !emoji.localOnly).map(emoji => this.renderEmoji(emoji));
- const tag = [
+ const tag: IObject[] = [
...hashtagTags,
...mentionTags,
...apemojis,
];
+ // https://codeberg.org/fediverse/fep/src/branch/main/fep/e232/fep-e232.md
+ if (quote) {
+ tag.push({
+ type: 'Link',
+ mediaType: 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
+ rel: 'https://misskey-hub.net/ns#_misskey_quote',
+ href: quote,
+ } satisfies ILink);
+ }
+
const asPoll = poll ? {
type: 'Question',
[poll.expiresAt && poll.expiresAt < new Date() ? 'closed' : 'endTime']: poll.expiresAt,
@@ -537,6 +547,7 @@ export class ApRendererService {
_misskey_quote: quote,
quoteUrl: quote,
quoteUri: quote,
+ // https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md
quote: quote,
published: this.idService.parse(note.id).date.toISOString(),
to,
@@ -853,12 +864,22 @@ export class ApRendererService {
const emojis = await this.getEmojis(note.emojis);
const apemojis = emojis.filter(emoji => !emoji.localOnly).map(emoji => this.renderEmoji(emoji));
- const tag = [
+ const tag: IObject[] = [
...hashtagTags,
...mentionTags,
...apemojis,
];
+ // https://codeberg.org/fediverse/fep/src/branch/main/fep/e232/fep-e232.md
+ if (quote) {
+ tag.push({
+ type: 'Link',
+ mediaType: 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
+ rel: 'https://misskey-hub.net/ns#_misskey_quote',
+ href: quote,
+ } satisfies ILink);
+ }
+
const asPoll = poll ? {
type: 'Question',
[poll.expiresAt && poll.expiresAt < new Date() ? 'closed' : 'endTime']: poll.expiresAt,
@@ -887,6 +908,7 @@ export class ApRendererService {
_misskey_quote: quote,
quoteUrl: quote,
quoteUri: quote,
+ // https://codeberg.org/fediverse/fep/src/branch/main/fep/044f/fep-044f.md
quote: quote,
published: this.idService.parse(note.id).date.toISOString(),
to,