2022-11-20 22:15:22 +00:00
|
|
|
import { DAY } from '@/const.js';
|
2022-03-25 07:27:41 +00:00
|
|
|
import { CacheableRemoteUser } from '@/models/entities/user.js';
|
2022-12-11 14:33:03 +00:00
|
|
|
import { Resolver } from '@/remote/activitypub/resolver.js';
|
2022-08-03 11:18:33 +00:00
|
|
|
import { IObject } from './type.js';
|
2022-02-27 02:07:39 +00:00
|
|
|
import { performActivity } from './kernel/index.js';
|
2022-03-25 07:27:41 +00:00
|
|
|
import { updatePerson } from './models/person.js';
|
2018-04-08 20:02:52 +00:00
|
|
|
|
2022-12-11 14:35:31 +00:00
|
|
|
export async function perform(actor: CacheableRemoteUser, activity: IObject, resolver: Resolver): Promise<void> {
|
2022-12-03 23:29:45 +00:00
|
|
|
await performActivity(actor, activity, resolver);
|
2022-03-25 07:27:41 +00:00
|
|
|
|
2022-11-20 22:15:22 +00:00
|
|
|
// And while I'm at it, I'll update the remote user information if it's out of date.
|
2022-03-25 07:27:41 +00:00
|
|
|
if (actor.uri) {
|
2022-11-20 22:15:22 +00:00
|
|
|
if (actor.lastFetchedAt == null || Date.now() - actor.lastFetchedAt.getTime() > DAY) {
|
2022-03-25 07:27:41 +00:00
|
|
|
setImmediate(() => {
|
2022-12-03 23:29:45 +00:00
|
|
|
updatePerson(actor.uri!, resolver);
|
2022-03-25 07:27:41 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
2018-04-08 20:02:52 +00:00
|
|
|
};
|