mirror of
https://iceshrimp.dev/limepotato/jormungandr-bite.git
synced 2024-11-29 05:17:39 -07:00
[backend] Improve updateUserProfileData
Now only runs updateMentions once, and correctly triggers prewarmCacheById
This commit is contained in:
parent
58d70d005f
commit
683e01d286
1 changed files with 8 additions and 4 deletions
|
@ -14,6 +14,7 @@ import acceptAllFollowRequests from "@/services/following/requests/accept-all.js
|
||||||
import { UserProfile } from "@/models/entities/user-profile.js";
|
import { UserProfile } from "@/models/entities/user-profile.js";
|
||||||
import mfm from "mfm-js";
|
import mfm from "mfm-js";
|
||||||
import { promiseEarlyReturn } from "@/prelude/promise.js";
|
import { promiseEarlyReturn } from "@/prelude/promise.js";
|
||||||
|
import { UserConverter } from "@/server/api/mastodon/converters/user.js";
|
||||||
|
|
||||||
export async function updateUserProfileData(user: User, profile: UserProfile | null, updates: Partial<User>, profileUpdates: Partial<UserProfile>, isSecure: boolean) {
|
export async function updateUserProfileData(user: User, profile: UserProfile | null, updates: Partial<User>, profileUpdates: Partial<UserProfile>, isSecure: boolean) {
|
||||||
if (!profile) profile = await UserProfiles.findOneByOrFail({ userId: user.id });
|
if (!profile) profile = await UserProfiles.findOneByOrFail({ userId: user.id });
|
||||||
|
@ -46,10 +47,11 @@ export async function updateUserProfileData(user: User, profile: UserProfile | n
|
||||||
|
|
||||||
updateUsertags(user, tags);
|
updateUsertags(user, tags);
|
||||||
|
|
||||||
|
const oldProfile = await UserProfiles.findOneBy({ userId: user.id });
|
||||||
|
|
||||||
if (Object.keys(updates).length > 0) await Users.update(user.id, updates);
|
if (Object.keys(updates).length > 0) await Users.update(user.id, updates);
|
||||||
if (Object.keys(profileUpdates).length > 0) {
|
if (Object.keys(profileUpdates).length > 0) {
|
||||||
await UserProfiles.update(user.id, profileUpdates);
|
await UserProfiles.update(user.id, profileUpdates);
|
||||||
await promiseEarlyReturn(UserProfiles.updateMentions(user.id), 1500);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const iObj = await Users.pack<true, true>(user.id, user, {
|
const iObj = await Users.pack<true, true>(user.id, user, {
|
||||||
|
@ -68,9 +70,11 @@ export async function updateUserProfileData(user: User, profile: UserProfile | n
|
||||||
acceptAllFollowRequests(user);
|
acceptAllFollowRequests(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
UserProfiles.updateMentions(user.id).finally(() => {
|
await promiseEarlyReturn(UserProfiles.updateMentions(user.id)
|
||||||
|
.finally(() => {
|
||||||
|
UserConverter.prewarmCacheById(user.id, oldProfile);
|
||||||
publishToFollowers(user.id);
|
publishToFollowers(user.id);
|
||||||
});
|
}), 1500);
|
||||||
|
|
||||||
return iObj;
|
return iObj;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue