mirror of
https://git.joinsharkey.org/Sharkey/Sharkey.git
synced 2024-12-24 16:13:08 +02:00
✌️
This commit is contained in:
parent
631ffc8cf6
commit
4cc71d2443
8 changed files with 45 additions and 17 deletions
|
@ -22,7 +22,7 @@ export class FederatedInstanceService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@bindThis
|
@bindThis
|
||||||
public async registerOrFetchInstanceDoc(host: string): Promise<Instance> {
|
public async fetch(host: string): Promise<Instance> {
|
||||||
host = this.utilityService.toPuny(host);
|
host = this.utilityService.toPuny(host);
|
||||||
|
|
||||||
const cached = this.cache.get(host);
|
const cached = this.cache.get(host);
|
||||||
|
@ -44,4 +44,17 @@ export class FederatedInstanceService {
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@bindThis
|
||||||
|
public async updateCachePartial(host: string, data: Partial<Instance>): Promise<void> {
|
||||||
|
host = this.utilityService.toPuny(host);
|
||||||
|
|
||||||
|
const cached = this.cache.get(host);
|
||||||
|
if (cached == null) return;
|
||||||
|
|
||||||
|
this.cache.set(host, {
|
||||||
|
...cached,
|
||||||
|
...data,
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -428,7 +428,7 @@ export class NoteCreateService {
|
||||||
|
|
||||||
// Register host
|
// Register host
|
||||||
if (this.userEntityService.isRemoteUser(user)) {
|
if (this.userEntityService.isRemoteUser(user)) {
|
||||||
this.federatedInstanceService.registerOrFetchInstanceDoc(user.host).then(i => {
|
this.federatedInstanceService.fetch(user.host).then(i => {
|
||||||
this.instancesRepository.increment({ id: i.id }, 'notesCount', 1);
|
this.instancesRepository.increment({ id: i.id }, 'notesCount', 1);
|
||||||
this.instanceChart.updateNote(i.host, note, true);
|
this.instanceChart.updateNote(i.host, note, true);
|
||||||
});
|
});
|
||||||
|
|
|
@ -100,7 +100,7 @@ export class NoteDeleteService {
|
||||||
this.perUserNotesChart.update(user, note, false);
|
this.perUserNotesChart.update(user, note, false);
|
||||||
|
|
||||||
if (this.userEntityService.isRemoteUser(user)) {
|
if (this.userEntityService.isRemoteUser(user)) {
|
||||||
this.federatedInstanceService.registerOrFetchInstanceDoc(user.host).then(i => {
|
this.federatedInstanceService.fetch(user.host).then(i => {
|
||||||
this.instancesRepository.decrement({ id: i.id }, 'notesCount', 1);
|
this.instancesRepository.decrement({ id: i.id }, 'notesCount', 1);
|
||||||
this.instanceChart.updateNote(i.host, note, false);
|
this.instanceChart.updateNote(i.host, note, false);
|
||||||
});
|
});
|
||||||
|
|
|
@ -205,12 +205,12 @@ export class UserFollowingService {
|
||||||
|
|
||||||
//#region Update instance stats
|
//#region Update instance stats
|
||||||
if (this.userEntityService.isRemoteUser(follower) && this.userEntityService.isLocalUser(followee)) {
|
if (this.userEntityService.isRemoteUser(follower) && this.userEntityService.isLocalUser(followee)) {
|
||||||
this.federatedInstanceService.registerOrFetchInstanceDoc(follower.host).then(i => {
|
this.federatedInstanceService.fetch(follower.host).then(i => {
|
||||||
this.instancesRepository.increment({ id: i.id }, 'followingCount', 1);
|
this.instancesRepository.increment({ id: i.id }, 'followingCount', 1);
|
||||||
this.instanceChart.updateFollowing(i.host, true);
|
this.instanceChart.updateFollowing(i.host, true);
|
||||||
});
|
});
|
||||||
} else if (this.userEntityService.isLocalUser(follower) && this.userEntityService.isRemoteUser(followee)) {
|
} else if (this.userEntityService.isLocalUser(follower) && this.userEntityService.isRemoteUser(followee)) {
|
||||||
this.federatedInstanceService.registerOrFetchInstanceDoc(followee.host).then(i => {
|
this.federatedInstanceService.fetch(followee.host).then(i => {
|
||||||
this.instancesRepository.increment({ id: i.id }, 'followersCount', 1);
|
this.instancesRepository.increment({ id: i.id }, 'followersCount', 1);
|
||||||
this.instanceChart.updateFollowers(i.host, true);
|
this.instanceChart.updateFollowers(i.host, true);
|
||||||
});
|
});
|
||||||
|
@ -323,12 +323,12 @@ export class UserFollowingService {
|
||||||
|
|
||||||
//#region Update instance stats
|
//#region Update instance stats
|
||||||
if (this.userEntityService.isRemoteUser(follower) && this.userEntityService.isLocalUser(followee)) {
|
if (this.userEntityService.isRemoteUser(follower) && this.userEntityService.isLocalUser(followee)) {
|
||||||
this.federatedInstanceService.registerOrFetchInstanceDoc(follower.host).then(i => {
|
this.federatedInstanceService.fetch(follower.host).then(i => {
|
||||||
this.instancesRepository.decrement({ id: i.id }, 'followingCount', 1);
|
this.instancesRepository.decrement({ id: i.id }, 'followingCount', 1);
|
||||||
this.instanceChart.updateFollowing(i.host, false);
|
this.instanceChart.updateFollowing(i.host, false);
|
||||||
});
|
});
|
||||||
} else if (this.userEntityService.isLocalUser(follower) && this.userEntityService.isRemoteUser(followee)) {
|
} else if (this.userEntityService.isLocalUser(follower) && this.userEntityService.isRemoteUser(followee)) {
|
||||||
this.federatedInstanceService.registerOrFetchInstanceDoc(followee.host).then(i => {
|
this.federatedInstanceService.fetch(followee.host).then(i => {
|
||||||
this.instancesRepository.decrement({ id: i.id }, 'followersCount', 1);
|
this.instancesRepository.decrement({ id: i.id }, 'followersCount', 1);
|
||||||
this.instanceChart.updateFollowers(i.host, false);
|
this.instanceChart.updateFollowers(i.host, false);
|
||||||
});
|
});
|
||||||
|
|
|
@ -348,7 +348,7 @@ export class ApPersonService implements OnModuleInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Register host
|
// Register host
|
||||||
this.federatedInstanceService.registerOrFetchInstanceDoc(host).then(i => {
|
this.federatedInstanceService.fetch(host).then(i => {
|
||||||
this.instancesRepository.increment({ id: i.id }, 'usersCount', 1);
|
this.instancesRepository.increment({ id: i.id }, 'usersCount', 1);
|
||||||
this.instanceChart.newUser(i.host);
|
this.instanceChart.newUser(i.host);
|
||||||
this.fetchInstanceMetadataService.fetchInstanceMetadata(i);
|
this.fetchInstanceMetadataService.fetchInstanceMetadata(i);
|
||||||
|
|
|
@ -83,10 +83,15 @@ export class DeliverProcessorService {
|
||||||
await this.apRequestService.signedPost(job.data.user, job.data.to, job.data.content);
|
await this.apRequestService.signedPost(job.data.user, job.data.to, job.data.content);
|
||||||
|
|
||||||
// Update stats
|
// Update stats
|
||||||
this.federatedInstanceService.registerOrFetchInstanceDoc(host).then(i => {
|
this.federatedInstanceService.fetch(host).then(i => {
|
||||||
this.instancesRepository.update(i.id, {
|
if (i.isNotResponding) {
|
||||||
isNotResponding: false,
|
this.instancesRepository.update(i.id, {
|
||||||
});
|
isNotResponding: false,
|
||||||
|
});
|
||||||
|
this.federatedInstanceService.updateCachePartial(host, {
|
||||||
|
isNotResponding: false,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
this.fetchInstanceMetadataService.fetchInstanceMetadata(i);
|
this.fetchInstanceMetadataService.fetchInstanceMetadata(i);
|
||||||
|
|
||||||
|
@ -98,10 +103,15 @@ export class DeliverProcessorService {
|
||||||
return 'Success';
|
return 'Success';
|
||||||
} catch (res) {
|
} catch (res) {
|
||||||
// Update stats
|
// Update stats
|
||||||
this.federatedInstanceService.registerOrFetchInstanceDoc(host).then(i => {
|
this.federatedInstanceService.fetch(host).then(i => {
|
||||||
this.instancesRepository.update(i.id, {
|
if (!i.isNotResponding) {
|
||||||
isNotResponding: true,
|
this.instancesRepository.update(i.id, {
|
||||||
});
|
isNotResponding: true,
|
||||||
|
});
|
||||||
|
this.federatedInstanceService.updateCachePartial(host, {
|
||||||
|
isNotResponding: true,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
this.instanceChart.requestSent(i.host, false);
|
this.instanceChart.requestSent(i.host, false);
|
||||||
this.apRequestChart.deliverFail();
|
this.apRequestChart.deliverFail();
|
||||||
|
|
|
@ -176,11 +176,14 @@ export class InboxProcessorService {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update stats
|
// Update stats
|
||||||
this.federatedInstanceService.registerOrFetchInstanceDoc(authUser.user.host).then(i => {
|
this.federatedInstanceService.fetch(authUser.user.host).then(i => {
|
||||||
this.instancesRepository.update(i.id, {
|
this.instancesRepository.update(i.id, {
|
||||||
latestRequestReceivedAt: new Date(),
|
latestRequestReceivedAt: new Date(),
|
||||||
isNotResponding: false,
|
isNotResponding: false,
|
||||||
});
|
});
|
||||||
|
this.federatedInstanceService.updateCachePartial(host, {
|
||||||
|
isNotResponding: false,
|
||||||
|
});
|
||||||
|
|
||||||
this.fetchInstanceMetadataService.fetchInstanceMetadata(i);
|
this.fetchInstanceMetadataService.fetchInstanceMetadata(i);
|
||||||
|
|
||||||
|
|
|
@ -64,6 +64,8 @@ export default class extends Endpoint<typeof meta, typeof paramDef> {
|
||||||
case '-followers': query.orderBy('instance.followersCount', 'ASC'); break;
|
case '-followers': query.orderBy('instance.followersCount', 'ASC'); break;
|
||||||
case '+caughtAt': query.orderBy('instance.caughtAt', 'DESC'); break;
|
case '+caughtAt': query.orderBy('instance.caughtAt', 'DESC'); break;
|
||||||
case '-caughtAt': query.orderBy('instance.caughtAt', 'ASC'); break;
|
case '-caughtAt': query.orderBy('instance.caughtAt', 'ASC'); break;
|
||||||
|
case '+latestRequestReceivedAt': query.orderBy('instance.latestRequestReceivedAt', 'DESC'); break;
|
||||||
|
case '-latestRequestReceivedAt': query.orderBy('instance.latestRequestReceivedAt', 'ASC'); break;
|
||||||
|
|
||||||
default: query.orderBy('instance.id', 'DESC'); break;
|
default: query.orderBy('instance.id', 'DESC'); break;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue