feat: Fetch total posts of users on create/update

This commit is contained in:
Marie Piontek 2023-08-12 01:00:29 +00:00 committed by Kainoa Kanter
parent 1f2a1a337f
commit ee42edfccd

View File

@ -231,6 +231,21 @@ export async function createPerson(
} }
} }
let notesCount: number | undefined;
if (typeof person.outbox === "string") {
try {
let data = await fetch(person.outbox, {
headers: { Accept: "application/json" },
});
let json_data = JSON.parse(await data.text());
notesCount = json_data.totalItems;
} catch (e) {
notesCount = undefined;
}
}
// Create user // Create user
let user: IRemoteUser; let user: IRemoteUser;
try { try {
@ -274,6 +289,14 @@ export async function createPerson(
isCollectionOrOrderedCollection(person.following) isCollectionOrOrderedCollection(person.following)
? person.following.totalItems ? person.following.totalItems
: undefined, : undefined,
notesCount:
notesCount !== undefined
? notesCount
: person.outbox &&
typeof person.outbox !== "string" &&
isCollectionOrOrderedCollection(person.outbox)
? person.outbox.totalItems
: undefined,
featured: person.featured ? getApId(person.featured) : undefined, featured: person.featured ? getApId(person.featured) : undefined,
uri: person.id, uri: person.id,
tags, tags,
@ -472,6 +495,21 @@ export async function updatePerson(
} }
} }
let notesCount: number | undefined;
if (typeof person.outbox === "string") {
try {
let data = await fetch(person.outbox, {
headers: { Accept: "application/json" },
});
let json_data = JSON.parse(await data.text());
notesCount = json_data.totalItems;
} catch (e) {
notesCount = undefined;
}
}
const updates = { const updates = {
lastFetchedAt: new Date(), lastFetchedAt: new Date(),
inbox: person.inbox, inbox: person.inbox,
@ -495,6 +533,14 @@ export async function updatePerson(
isCollectionOrOrderedCollection(person.following) isCollectionOrOrderedCollection(person.following)
? person.following.totalItems ? person.following.totalItems
: undefined, : undefined,
notesCount:
notesCount !== undefined
? notesCount
: person.outbox &&
typeof person.outbox !== "string" &&
isCollectionOrOrderedCollection(person.outbox)
? person.outbox.totalItems
: undefined,
featured: person.featured, featured: person.featured,
emojis: emojiNames, emojis: emojiNames,
name: truncate(person.name, nameLength), name: truncate(person.name, nameLength),
@ -663,7 +709,7 @@ export async function updateFeatured(userId: User["id"], resolver?: Resolver) {
? collection.items ? collection.items
: collection.orderedItems; : collection.orderedItems;
const items = await Promise.all( const items = await Promise.all(
toArray(unresolvedItems).map((x) => resolver.resolve(x)), toArray(unresolvedItems).map((x) => resolver?.resolve(x)),
); );
// Resolve and regist Notes // Resolve and regist Notes