fix(federation): 🐛 Fix profile edits not being federated

This commit is contained in:
Jesse Wierzbinski 2024-06-05 19:08:34 -10:00
parent 4c22b0edcc
commit 32cb0ea733
No known key found for this signature in database
4 changed files with 21 additions and 39 deletions

View file

@ -521,7 +521,7 @@ export class User {
) {
// Get followers
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) {

View file

@ -14,7 +14,7 @@ import { getUrl } from "~/database/entities/Attachment";
import { type EmojiWithInstance, parseEmojis } from "~/database/entities/Emoji";
import { contentToHtml } from "~/database/entities/Status";
import { db } from "~/drizzle/db";
import { EmojiToUser, Users } from "~/drizzle/schema";
import { EmojiToUser } from "~/drizzle/schema";
import { User } from "~/packages/database-interface/user";
export const meta = applyConfig({
@ -283,22 +283,8 @@ export default (app: Hono) =>
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
// Do it before updating user, so that federation takes that into account
for (const emoji of self.emojis) {
await db
.delete(EmojiToUser)
@ -319,6 +305,18 @@ export default (app: Hono) =>
.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);
if (!output) return errorResponse("Couldn't edit user", 500);

View file

@ -1,10 +1,6 @@
import { applyConfig, auth } from "@/api";
import { errorResponse, jsonResponse } from "@/response";
import { eq } from "drizzle-orm";
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({
allowedMethods: ["DELETE"],
@ -28,14 +24,10 @@ export default (app: Hono) =>
if (!self) return errorResponse("Unauthorized", 401);
await db
.update(Users)
.set({ avatar: "" })
.where(eq(Users.id, self.id));
return jsonResponse({
...(await User.fromId(self.id))?.toAPI(),
await self.update({
avatar: "",
});
return jsonResponse(self.toAPI(true));
},
);

View file

@ -1,10 +1,6 @@
import { applyConfig, auth } from "@/api";
import { errorResponse, jsonResponse } from "@/response";
import { eq } from "drizzle-orm";
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({
allowedMethods: ["DELETE"],
@ -28,14 +24,10 @@ export default (app: Hono) =>
if (!self) return errorResponse("Unauthorized", 401);
await db
.update(Users)
.set({ header: "" })
.where(eq(Users.id, self.id));
return jsonResponse({
...(await User.fromId(self.id))?.toAPI(),
await self.update({
header: "",
});
return jsonResponse(self.toAPI(true));
},
);