add MiUser.lastFetchedFeaturedAt
This commit is contained in:
parent
c647481b22
commit
94c4df602f
5 changed files with 30 additions and 2 deletions
|
|
@ -0,0 +1,14 @@
|
|||
/*
|
||||
* SPDX-FileCopyrightText: hazelnoot and other Sharkey contributors
|
||||
* SPDX-License-Identifier: AGPL-3.0-only
|
||||
*/
|
||||
|
||||
export class AddUserLastFetchedFeaturedAt1758129782800 {
|
||||
async up(queryRunner) {
|
||||
await queryRunner.query(`ALTER TABLE "user" ADD "lastFetchedFeaturedAt" DATE`);
|
||||
}
|
||||
|
||||
async down(queryRunner) {
|
||||
await queryRunner.query(`ALTER TABLE "user" DROP COLUMN "lastFetchedFeaturedAt"`);
|
||||
}
|
||||
}
|
||||
|
|
@ -587,6 +587,7 @@ export class ReversiService implements OnApplicationShutdown, OnModuleInit {
|
|||
updatedAt: parsed.user1.updatedAt != null ? new Date(parsed.user1.updatedAt) : null,
|
||||
lastActiveDate: parsed.user1.lastActiveDate != null ? new Date(parsed.user1.lastActiveDate) : null,
|
||||
lastFetchedAt: parsed.user1.lastFetchedAt != null ? new Date(parsed.user1.lastFetchedAt) : null,
|
||||
lastFetchedFeaturedAt: parsed.user1.lastFetchedFeaturedAt != null ? new Date(parsed.user1.lastFetchedFeaturedAt) : null,
|
||||
movedAt: parsed.user1.movedAt != null ? new Date(parsed.user1.movedAt) : null,
|
||||
instance: null,
|
||||
userProfile: null,
|
||||
|
|
@ -599,6 +600,7 @@ export class ReversiService implements OnApplicationShutdown, OnModuleInit {
|
|||
updatedAt: parsed.user2.updatedAt != null ? new Date(parsed.user2.updatedAt) : null,
|
||||
lastActiveDate: parsed.user2.lastActiveDate != null ? new Date(parsed.user2.lastActiveDate) : null,
|
||||
lastFetchedAt: parsed.user2.lastFetchedAt != null ? new Date(parsed.user2.lastFetchedAt) : null,
|
||||
lastFetchedFeaturedAt: parsed.user2.lastFetchedFeaturedAt != null ? new Date(parsed.user2.lastFetchedFeaturedAt) : null,
|
||||
movedAt: parsed.user2.movedAt != null ? new Date(parsed.user2.movedAt) : null,
|
||||
instance: null,
|
||||
userProfile: null,
|
||||
|
|
|
|||
|
|
@ -701,13 +701,16 @@ export class ApPersonService implements OnModuleInit {
|
|||
|
||||
const profileUrls = url ? [url, person.id] : [person.id];
|
||||
const verifiedLinks = await verifyFieldLinks(fields, profileUrls, this.httpRequestService);
|
||||
const featuredUri = person.featured ? getApId(person.featured) : undefined;
|
||||
|
||||
const updates = {
|
||||
lastFetchedAt: this.timeService.date,
|
||||
inbox: person.inbox,
|
||||
sharedInbox: person.sharedInbox ?? person.endpoints?.sharedInbox ?? null,
|
||||
followersUri: person.followers ? getApId(person.followers) : undefined,
|
||||
featured: person.featured ? getApId(person.featured) : undefined,
|
||||
// If the featured collection changes, then reset the fetch timeout.
|
||||
lastFetchedFeaturedAt: featuredUri !== exist.featured ? null : undefined,
|
||||
featured: featuredUri,
|
||||
emojis: emojiNames,
|
||||
name: truncate(person.name, nameLength),
|
||||
tags,
|
||||
|
|
@ -948,6 +951,10 @@ export class ApPersonService implements OnModuleInit {
|
|||
|
||||
resolver ??= this.apResolverService.createResolver();
|
||||
|
||||
// Mark as updated
|
||||
await this.usersRepository.update({ id: userId }, { lastFetchedFeaturedAt: new Date() });
|
||||
await this.internalEventService.emit('remoteUserUpdated', { id: userId });
|
||||
|
||||
// Resolve and regist Notes
|
||||
const maxPinned = (await this.roleService.getUserPolicies(user.id)).pinLimit;
|
||||
const items = await resolver.resolveCollectionItems(user.featured, true, user.uri, maxPinned, 2);
|
||||
|
|
|
|||
|
|
@ -28,6 +28,11 @@ export class MiUser {
|
|||
})
|
||||
public lastFetchedAt: Date | null;
|
||||
|
||||
@Column('timestamp with time zone', {
|
||||
nullable: true,
|
||||
})
|
||||
public lastFetchedFeaturedAt?: Date | null;
|
||||
|
||||
@Index()
|
||||
@Column('timestamp with time zone', {
|
||||
nullable: true,
|
||||
|
|
|
|||
|
|
@ -129,7 +129,7 @@ export class BackgroundTaskProcessorService {
|
|||
if (!isRemoteUser(user)) return `Skipping update-featured task: user ${task.userId} is local`;
|
||||
if (!user.featured) return `Skipping update-featured task: user ${task.userId} has no featured collection`;
|
||||
|
||||
if (user.lastFetchedAt && Date.now() - user.lastFetchedAt.getTime() < 1000 * 60 * 60 * 24) {
|
||||
if (user.lastFetchedFeaturedAt && Date.now() - user.lastFetchedFeaturedAt.getTime() < 1000 * 60 * 60 * 24) {
|
||||
return `Skipping update-featured task: user ${task.userId} was recently updated`;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue