✌️
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…
	
	Add table
		Add a link
		
	
		Reference in a new issue