diff --git a/bun.lockb b/bun.lockb
index 2ac103e0..2fa0247f 100755
Binary files a/bun.lockb and b/bun.lockb differ
diff --git a/database/entities/Status.ts b/database/entities/Status.ts
index c82dad63..c41451f4 100644
--- a/database/entities/Status.ts
+++ b/database/entities/Status.ts
@@ -260,7 +260,7 @@ export const createNewStatus = async (data: {
.join("\n");
}
- let status = await client.status.create({
+ const status = await client.status.create({
data: {
authorId: data.account.id,
applicationId: data.application?.id,
@@ -290,12 +290,7 @@ export const createNewStatus = async (data: {
quotingPostId: data.quote?.id,
instanceId: data.account.instanceId || undefined,
isReblog: false,
- uri:
- data.uri ||
- new URL(
- `/statuses/FAKE-${crypto.randomUUID()}`,
- config.http.base_url,
- ).toString(),
+ uri: data.uri || null,
mentions: {
connect: mentions.map((mention) => {
return {
@@ -307,22 +302,6 @@ export const createNewStatus = async (data: {
include: statusAndUserRelations,
});
- // Update URI
- status = await client.status.update({
- where: {
- id: status.id,
- },
- data: {
- uri:
- data.uri ||
- new URL(
- `/statuses/${status.id}`,
- config.http.base_url,
- ).toString(),
- },
- include: statusAndUserRelations,
- });
-
// Create notification
if (status.inReplyToPost) {
await client.notification.create({
@@ -503,9 +482,19 @@ export const statusToAPI = async (
sensitive: status.sensitive,
spoiler_text: status.spoilerText,
tags: [],
- uri: new URL(`/statuses/${status.id}`, config.http.base_url).toString(),
+ uri:
+ status.uri ||
+ new URL(
+ `/@${status.author.username}/${status.id}`,
+ config.http.base_url,
+ ).toString(),
visibility: "public",
- url: new URL(`/statuses/${status.id}`, config.http.base_url).toString(),
+ url:
+ status.uri ||
+ new URL(
+ `/@${status.author.username}/${status.id}`,
+ config.http.base_url,
+ ).toString(),
bookmarked: false,
quote: status.quotingPost
? await statusToAPI(
@@ -584,8 +573,8 @@ export const statusToLysand = (status: StatusWithRelations): Note => {
// TODO: Add attachments
attachments: [],
is_sensitive: status.sensitive,
- mentions: status.mentions.map((mention) => mention.uri),
- quotes: status.quotingPost ? [status.quotingPost.uri] : [],
+ mentions: status.mentions.map((mention) => mention.uri || ""),
+ quotes: status.quotingPost ? [status.quotingPost.uri || ""] : [],
replies_to: status.inReplyToPostId ? [status.inReplyToPostId] : [],
subject: status.spoilerText,
extensions: {
diff --git a/database/entities/User.ts b/database/entities/User.ts
index 69d438d6..a70155f7 100644
--- a/database/entities/User.ts
+++ b/database/entities/User.ts
@@ -262,7 +262,6 @@ export const createNewLocalUser = async (data: {
avatar: data.avatar ?? config.defaults.avatar,
header: data.header ?? config.defaults.avatar,
isAdmin: data.admin ?? false,
- uri: "",
publicKey: keys.public_key,
privateKey: keys.private_key,
source: {
@@ -273,20 +272,13 @@ export const createNewLocalUser = async (data: {
fields: [],
},
},
+ include: userRelations,
});
// Add to Meilisearch
await addUserToMeilisearch(user);
- return await client.user.update({
- where: {
- id: user.id,
- },
- data: {
- uri: new URL(`/users/${user.id}`, config.http.base_url).toString(),
- },
- include: userRelations,
- });
+ return user;
};
/**
@@ -408,7 +400,9 @@ export const userToAPI = (
username: user.username,
display_name: user.displayName,
note: user.note,
- url: user.uri,
+ url:
+ user.uri ||
+ new URL(`/@${user.username}`, config.http.base_url).toString(),
avatar: getAvatarUrl(user, config),
header: getHeaderUrl(user, config),
locked: user.isLocked,
@@ -458,7 +452,7 @@ export const userToLysand = (user: UserWithRelations): LysandUser => {
return {
id: user.id,
type: "User",
- uri: user.uri,
+ uri: user.uri || "",
bio: [
{
content: user.note,
diff --git a/package.json b/package.json
index 9377f7c4..d4df4e96 100644
--- a/package.json
+++ b/package.json
@@ -61,10 +61,12 @@
"@types/jsonld": "^1.5.13",
"@typescript-eslint/eslint-plugin": "latest",
"@unocss/cli": "latest",
+ "@unocss/transformer-directives": "^0.59.0",
"@vitejs/plugin-vue": "latest",
"@vueuse/head": "^2.0.0",
"activitypub-types": "^1.0.3",
"bun-types": "latest",
+ "shiki": "^1.2.4",
"typescript": "latest",
"unocss": "latest",
"untyped": "^1.4.2",
diff --git a/pages/pages/[username]/[uuid].vue b/pages/pages/[username]/[uuid].vue
new file mode 100644
index 00000000..40b5e265
--- /dev/null
+++ b/pages/pages/[username]/[uuid].vue
@@ -0,0 +1,65 @@
+
+