mirror of
https://github.com/versia-pub/server.git
synced 2025-12-06 16:38:19 +01:00
fix(federation): 🐛 Fix profile edits not being federated
This commit is contained in:
parent
4c22b0edcc
commit
32cb0ea733
|
|
@ -521,7 +521,7 @@ export class User {
|
||||||
) {
|
) {
|
||||||
// Get followers
|
// Get followers
|
||||||
const followers = await User.manyFromSql(
|
const followers = await User.manyFromSql(
|
||||||
sql`EXISTS (SELECT 1 FROM "Relationships" WHERE "Relationships"."subjectId" = ${Users.id} AND "Relationships"."ownerId" = ${this.id} AND "Relationships"."following" = true)`,
|
sql`EXISTS (SELECT 1 FROM "Relationships" WHERE "Relationships"."subjectId" = ${this.id} AND "Relationships"."ownerId" = ${Users.id} AND "Relationships"."following" = true)`,
|
||||||
);
|
);
|
||||||
|
|
||||||
for (const follower of followers) {
|
for (const follower of followers) {
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import { getUrl } from "~/database/entities/Attachment";
|
||||||
import { type EmojiWithInstance, parseEmojis } from "~/database/entities/Emoji";
|
import { type EmojiWithInstance, parseEmojis } from "~/database/entities/Emoji";
|
||||||
import { contentToHtml } from "~/database/entities/Status";
|
import { contentToHtml } from "~/database/entities/Status";
|
||||||
import { db } from "~/drizzle/db";
|
import { db } from "~/drizzle/db";
|
||||||
import { EmojiToUser, Users } from "~/drizzle/schema";
|
import { EmojiToUser } from "~/drizzle/schema";
|
||||||
import { User } from "~/packages/database-interface/user";
|
import { User } from "~/packages/database-interface/user";
|
||||||
|
|
||||||
export const meta = applyConfig({
|
export const meta = applyConfig({
|
||||||
|
|
@ -283,22 +283,8 @@ export default (app: Hono) =>
|
||||||
self.findIndex((e) => e.id === emoji.id) === index,
|
self.findIndex((e) => e.id === emoji.id) === index,
|
||||||
);
|
);
|
||||||
|
|
||||||
await db
|
|
||||||
.update(Users)
|
|
||||||
.set({
|
|
||||||
displayName: self.displayName,
|
|
||||||
note: self.note,
|
|
||||||
avatar: self.avatar,
|
|
||||||
header: self.header,
|
|
||||||
fields: self.fields,
|
|
||||||
isLocked: self.isLocked,
|
|
||||||
isBot: self.isBot,
|
|
||||||
isDiscoverable: self.isDiscoverable,
|
|
||||||
source: self.source || undefined,
|
|
||||||
})
|
|
||||||
.where(eq(Users.id, self.id));
|
|
||||||
|
|
||||||
// Connect emojis, if any
|
// Connect emojis, if any
|
||||||
|
// Do it before updating user, so that federation takes that into account
|
||||||
for (const emoji of self.emojis) {
|
for (const emoji of self.emojis) {
|
||||||
await db
|
await db
|
||||||
.delete(EmojiToUser)
|
.delete(EmojiToUser)
|
||||||
|
|
@ -319,6 +305,18 @@ export default (app: Hono) =>
|
||||||
.execute();
|
.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await user.update({
|
||||||
|
displayName: self.displayName,
|
||||||
|
note: self.note,
|
||||||
|
avatar: self.avatar,
|
||||||
|
header: self.header,
|
||||||
|
fields: self.fields,
|
||||||
|
isLocked: self.isLocked,
|
||||||
|
isBot: self.isBot,
|
||||||
|
isDiscoverable: self.isDiscoverable,
|
||||||
|
source: self.source || undefined,
|
||||||
|
});
|
||||||
|
|
||||||
const output = await User.fromId(self.id);
|
const output = await User.fromId(self.id);
|
||||||
if (!output) return errorResponse("Couldn't edit user", 500);
|
if (!output) return errorResponse("Couldn't edit user", 500);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
import { applyConfig, auth } from "@/api";
|
import { applyConfig, auth } from "@/api";
|
||||||
import { errorResponse, jsonResponse } from "@/response";
|
import { errorResponse, jsonResponse } from "@/response";
|
||||||
import { eq } from "drizzle-orm";
|
|
||||||
import type { Hono } from "hono";
|
import type { Hono } from "hono";
|
||||||
import { db } from "~/drizzle/db";
|
|
||||||
import { Users } from "~/drizzle/schema";
|
|
||||||
import { User } from "~/packages/database-interface/user";
|
|
||||||
|
|
||||||
export const meta = applyConfig({
|
export const meta = applyConfig({
|
||||||
allowedMethods: ["DELETE"],
|
allowedMethods: ["DELETE"],
|
||||||
|
|
@ -28,14 +24,10 @@ export default (app: Hono) =>
|
||||||
|
|
||||||
if (!self) return errorResponse("Unauthorized", 401);
|
if (!self) return errorResponse("Unauthorized", 401);
|
||||||
|
|
||||||
await db
|
await self.update({
|
||||||
.update(Users)
|
|
||||||
.set({ avatar: "" })
|
|
||||||
.where(eq(Users.id, self.id));
|
|
||||||
|
|
||||||
return jsonResponse({
|
|
||||||
...(await User.fromId(self.id))?.toAPI(),
|
|
||||||
avatar: "",
|
avatar: "",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return jsonResponse(self.toAPI(true));
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
import { applyConfig, auth } from "@/api";
|
import { applyConfig, auth } from "@/api";
|
||||||
import { errorResponse, jsonResponse } from "@/response";
|
import { errorResponse, jsonResponse } from "@/response";
|
||||||
import { eq } from "drizzle-orm";
|
|
||||||
import type { Hono } from "hono";
|
import type { Hono } from "hono";
|
||||||
import { db } from "~/drizzle/db";
|
|
||||||
import { Users } from "~/drizzle/schema";
|
|
||||||
import { User } from "~/packages/database-interface/user";
|
|
||||||
|
|
||||||
export const meta = applyConfig({
|
export const meta = applyConfig({
|
||||||
allowedMethods: ["DELETE"],
|
allowedMethods: ["DELETE"],
|
||||||
|
|
@ -28,14 +24,10 @@ export default (app: Hono) =>
|
||||||
|
|
||||||
if (!self) return errorResponse("Unauthorized", 401);
|
if (!self) return errorResponse("Unauthorized", 401);
|
||||||
|
|
||||||
await db
|
await self.update({
|
||||||
.update(Users)
|
|
||||||
.set({ header: "" })
|
|
||||||
.where(eq(Users.id, self.id));
|
|
||||||
|
|
||||||
return jsonResponse({
|
|
||||||
...(await User.fromId(self.id))?.toAPI(),
|
|
||||||
header: "",
|
header: "",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return jsonResponse(self.toAPI(true));
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue