✌️
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 | ||||
| 	public async registerOrFetchInstanceDoc(host: string): Promise<Instance> { | ||||
| 	public async fetch(host: string): Promise<Instance> { | ||||
| 		host = this.utilityService.toPuny(host); | ||||
| 	 | ||||
| 		const cached = this.cache.get(host); | ||||
|  | @ -44,4 +44,17 @@ export class FederatedInstanceService { | |||
| 			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
 | ||||
| 		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.instanceChart.updateNote(i.host, note, true); | ||||
| 			}); | ||||
|  |  | |||
|  | @ -100,7 +100,7 @@ export class NoteDeleteService { | |||
| 			this.perUserNotesChart.update(user, note, false); | ||||
| 
 | ||||
| 			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.instanceChart.updateNote(i.host, note, false); | ||||
| 				}); | ||||
|  |  | |||
|  | @ -205,12 +205,12 @@ export class UserFollowingService { | |||
| 	 | ||||
| 		//#region Update instance stats
 | ||||
| 		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.instanceChart.updateFollowing(i.host, true); | ||||
| 			}); | ||||
| 		} 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.instanceChart.updateFollowers(i.host, true); | ||||
| 			}); | ||||
|  | @ -323,12 +323,12 @@ export class UserFollowingService { | |||
| 	 | ||||
| 		//#region Update instance stats
 | ||||
| 		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.instanceChart.updateFollowing(i.host, false); | ||||
| 			}); | ||||
| 		} 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.instanceChart.updateFollowers(i.host, false); | ||||
| 			}); | ||||
|  |  | |||
|  | @ -348,7 +348,7 @@ export class ApPersonService implements OnModuleInit { | |||
| 		} | ||||
| 
 | ||||
| 		// Register host
 | ||||
| 		this.federatedInstanceService.registerOrFetchInstanceDoc(host).then(i => { | ||||
| 		this.federatedInstanceService.fetch(host).then(i => { | ||||
| 			this.instancesRepository.increment({ id: i.id }, 'usersCount', 1); | ||||
| 			this.instanceChart.newUser(i.host); | ||||
| 			this.fetchInstanceMetadataService.fetchInstanceMetadata(i); | ||||
|  |  | |||
|  | @ -83,10 +83,15 @@ export class DeliverProcessorService { | |||
| 			await this.apRequestService.signedPost(job.data.user, job.data.to, job.data.content); | ||||
| 
 | ||||
| 			// Update stats
 | ||||
| 			this.federatedInstanceService.registerOrFetchInstanceDoc(host).then(i => { | ||||
| 			this.federatedInstanceService.fetch(host).then(i => { | ||||
| 				if (i.isNotResponding) { | ||||
| 					this.instancesRepository.update(i.id, { | ||||
| 						isNotResponding: false, | ||||
| 					}); | ||||
| 					this.federatedInstanceService.updateCachePartial(host, { | ||||
| 						isNotResponding: false, | ||||
| 					}); | ||||
| 				} | ||||
| 
 | ||||
| 				this.fetchInstanceMetadataService.fetchInstanceMetadata(i); | ||||
| 
 | ||||
|  | @ -98,10 +103,15 @@ export class DeliverProcessorService { | |||
| 			return 'Success'; | ||||
| 		} catch (res) { | ||||
| 			// Update stats
 | ||||
| 			this.federatedInstanceService.registerOrFetchInstanceDoc(host).then(i => { | ||||
| 			this.federatedInstanceService.fetch(host).then(i => { | ||||
| 				if (!i.isNotResponding) { | ||||
| 					this.instancesRepository.update(i.id, { | ||||
| 						isNotResponding: true, | ||||
| 					}); | ||||
| 					this.federatedInstanceService.updateCachePartial(host, { | ||||
| 						isNotResponding: true, | ||||
| 					}); | ||||
| 				} | ||||
| 
 | ||||
| 				this.instanceChart.requestSent(i.host, false); | ||||
| 				this.apRequestChart.deliverFail(); | ||||
|  |  | |||
|  | @ -176,11 +176,14 @@ export class InboxProcessorService { | |||
| 		} | ||||
| 
 | ||||
| 		// Update stats
 | ||||
| 		this.federatedInstanceService.registerOrFetchInstanceDoc(authUser.user.host).then(i => { | ||||
| 		this.federatedInstanceService.fetch(authUser.user.host).then(i => { | ||||
| 			this.instancesRepository.update(i.id, { | ||||
| 				latestRequestReceivedAt: new Date(), | ||||
| 				isNotResponding: false, | ||||
| 			}); | ||||
| 			this.federatedInstanceService.updateCachePartial(host, { | ||||
| 				isNotResponding: false, | ||||
| 			}); | ||||
| 
 | ||||
| 			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 '+caughtAt': query.orderBy('instance.caughtAt', 'DESC'); 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; | ||||
| 			} | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue