mirror of
https://iceshrimp.dev/limepotato/jormungandr-bite.git
synced 2025-03-04 07:18:50 -07:00
[backend] Don't recursively resolve user profile mentions
This commit is contained in:
parent
7c8881f1a8
commit
3b85491ee4
2 changed files with 8 additions and 6 deletions
packages/backend/src/remote
|
@ -170,6 +170,7 @@ export async function createPerson(
|
||||||
uri: string,
|
uri: string,
|
||||||
resolver?: Resolver,
|
resolver?: Resolver,
|
||||||
subjectHost?: string,
|
subjectHost?: string,
|
||||||
|
skipMentions: boolean = false
|
||||||
): Promise<User> {
|
): Promise<User> {
|
||||||
if (typeof uri !== "string") throw new Error("uri is not string");
|
if (typeof uri !== "string") throw new Error("uri is not string");
|
||||||
|
|
||||||
|
@ -399,7 +400,7 @@ export async function createPerson(
|
||||||
updateUsertags(user!, tags);
|
updateUsertags(user!, tags);
|
||||||
|
|
||||||
// Mentions update
|
// Mentions update
|
||||||
UserProfiles.updateMentions(user!.id);
|
if (!skipMentions) UserProfiles.updateMentions(user!.id);
|
||||||
|
|
||||||
//#region Fetch avatar and header image
|
//#region Fetch avatar and header image
|
||||||
const [avatar, banner] = await Promise.all(
|
const [avatar, banner] = await Promise.all(
|
||||||
|
|
|
@ -30,7 +30,8 @@ export async function resolveUser(
|
||||||
username: string,
|
username: string,
|
||||||
host: string | null,
|
host: string | null,
|
||||||
refresh: boolean = true,
|
refresh: boolean = true,
|
||||||
awaitRefresh: boolean = true
|
awaitRefresh: boolean = true,
|
||||||
|
skipMentionsOnCreate: boolean = false
|
||||||
): Promise<User> {
|
): Promise<User> {
|
||||||
const usernameLower = username.toLowerCase();
|
const usernameLower = username.toLowerCase();
|
||||||
|
|
||||||
|
@ -104,14 +105,14 @@ export async function resolveUser(
|
||||||
// Otherwise create and return new user
|
// Otherwise create and return new user
|
||||||
else {
|
else {
|
||||||
logger.succ(`return new remote user: ${chalk.magenta(finalAcctLower)}`);
|
logger.succ(`return new remote user: ${chalk.magenta(finalAcctLower)}`);
|
||||||
return await createPerson(fingerRes.self.href, undefined, subjectHost);
|
return await createPerson(fingerRes.self.href, undefined, subjectHost, skipMentionsOnCreate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not a split domain setup, so we can simply create and return the new user
|
// Not a split domain setup, so we can simply create and return the new user
|
||||||
logger.succ(`return new remote user: ${chalk.magenta(finalAcctLower)}`);
|
logger.succ(`return new remote user: ${chalk.magenta(finalAcctLower)}`);
|
||||||
return await createPerson(fingerRes.self.href, undefined, subjectHost);
|
return await createPerson(fingerRes.self.href, undefined, subjectHost, skipMentionsOnCreate);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If user information is out of date, return it by starting over from WebFinger
|
// If user information is out of date, return it by starting over from WebFinger
|
||||||
|
@ -187,7 +188,7 @@ export async function resolveUser(
|
||||||
} else if (refresh && !awaitRefresh && (user.lastFetchedAt == null || Date.now() - user.lastFetchedAt.getTime() > 1000 * 60 * 60 * 24)) {
|
} else if (refresh && !awaitRefresh && (user.lastFetchedAt == null || Date.now() - user.lastFetchedAt.getTime() > 1000 * 60 * 60 * 24)) {
|
||||||
// Run the refresh in the background
|
// Run the refresh in the background
|
||||||
// noinspection ES6MissingAwait
|
// noinspection ES6MissingAwait
|
||||||
resolveUser(username, host, true, true);
|
resolveUser(username, host, true, true, skipMentionsOnCreate);
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.info(`return existing remote user: ${acctLower}`);
|
logger.info(`return existing remote user: ${acctLower}`);
|
||||||
|
@ -197,7 +198,7 @@ export async function resolveUser(
|
||||||
export async function resolveMentionToUserAndProfile(username: string, host: string | null, objectHost: string | null) {
|
export async function resolveMentionToUserAndProfile(username: string, host: string | null, objectHost: string | null) {
|
||||||
return profileMentionCache.fetch(`${username}@${host ?? objectHost}`, async () => {
|
return profileMentionCache.fetch(`${username}@${host ?? objectHost}`, async () => {
|
||||||
try {
|
try {
|
||||||
const user = await resolveUser(username, host ?? objectHost, false);
|
const user = await resolveUser(username, host ?? objectHost, false, false, true);
|
||||||
const profile = await UserProfiles.findOneBy({ userId: user.id });
|
const profile = await UserProfiles.findOneBy({ userId: user.id });
|
||||||
const data = { username, host: host ?? objectHost };
|
const data = { username, host: host ?? objectHost };
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue