refactor (backend): port renderHashtag to backend-rs

This commit is contained in:
naskya 2024-08-04 21:52:22 +09:00
parent 306723fd53
commit fcfe6c877b
No known key found for this signature in database
GPG key ID: 712D413B3A9FED5C
7 changed files with 41 additions and 11 deletions

View file

@ -133,6 +133,12 @@ export interface ApFollow {
object: string
}
export interface ApHashtag {
id: string
type: ApObject
name: string
}
export interface ApMention {
type: ApObject
href: string
@ -143,6 +149,7 @@ export type ApObject = 'Accept'|
'Emoji'|
'Flag'|
'Follow'|
'Hashtag'|
'Mention'|
'Image'|
'Read'|
@ -1329,6 +1336,8 @@ export declare function renderFollow(follower: UserLike, followee: UserLike, req
export declare function renderFollowRelay(relayId: string): Promise<ApFollow>
export declare function renderHashtag(tagName: string): ApHashtag
export declare function renderMention(user: UserLike): ApMention
export declare function renderRead(userId: string, messageUri: string): ApRead

View file

@ -443,6 +443,7 @@ module.exports.renderEmoji = nativeBinding.renderEmoji
module.exports.renderFlag = nativeBinding.renderFlag
module.exports.renderFollow = nativeBinding.renderFollow
module.exports.renderFollowRelay = nativeBinding.renderFollowRelay
module.exports.renderHashtag = nativeBinding.renderHashtag
module.exports.renderMention = nativeBinding.renderMention
module.exports.renderRead = nativeBinding.renderRead
module.exports.renderTombstone = nativeBinding.renderTombstone

View file

@ -0,0 +1,27 @@
use super::*;
use crate::config::CONFIG;
#[macros::export(object)]
pub struct ApHashtag {
pub id: String,
pub r#type: ApObject,
pub name: String,
}
impl ActivityPubObject for ApHashtag {}
impl ApHashtag {
#[allow(dead_code)] // TODO: remove this line
fn new(tag_name: &str) -> Self {
Self {
id: format!("{}/tags/{}", CONFIG.url, urlencoding::encode(tag_name)),
r#type: ApObject::Hashtag,
name: format!("#{}", tag_name),
}
}
}
#[macros::ts_export]
pub fn render_hashtag(tag_name: &str) -> ApHashtag {
ApHashtag::new(tag_name)
}

View file

@ -2,6 +2,7 @@ pub mod accept;
pub mod emoji;
pub mod flag;
pub mod follow;
pub mod hashtag;
pub mod mention;
pub mod read;
pub mod tombstone;
@ -14,6 +15,7 @@ pub enum ApObject {
Emoji,
Flag,
Follow,
Hashtag,
Mention,
Image,
Read,

View file

@ -1,7 +0,0 @@
import { config } from "@/config.js";
export default (tag: string) => ({
type: "Hashtag",
href: `${config.url}/tags/${encodeURIComponent(tag)}`,
name: `#${tag}`,
});

View file

@ -6,8 +6,7 @@ import { DriveFiles, Notes, Users, Emojis, Polls } from "@/models/index.js";
import type { Emoji } from "@/models/entities/emoji.js";
import type { Poll } from "@/models/entities/poll.js";
import toHtml from "@/remote/activitypub/misc/get-note-html.js";
import { renderEmoji, renderMention } from "backend-rs";
import renderHashtag from "./hashtag.js";
import { renderEmoji, renderHashtag, renderMention } from "backend-rs";
import renderDocument from "./document.js";
export default async function renderNote(

View file

@ -8,8 +8,7 @@ import { toHtml } from "@/mfm/to-html.js";
import renderImage from "./image.js";
import renderKey from "./key.js";
import { getEmojis } from "./note.js";
import { renderEmoji } from "backend-rs";
import renderHashtag from "./hashtag.js";
import { renderEmoji, renderHashtag } from "backend-rs";
import type { IIdentifier } from "../models/identifier.js";
export async function renderPerson(user: ILocalUser) {