summaryrefslogtreecommitdiff
path: root/packages/backend/src/core
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2023-10-18 12:26:16 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2023-10-18 12:26:16 +0900
commit6cc02fee99d11d3866c6f5df8879d857d31f7f4c (patch)
treed781f185c17f2a44ace7af3d2ea170c79b3fbd6b /packages/backend/src/core
parentrefactor(backend): rename service (diff)
downloadsharkey-6cc02fee99d11d3866c6f5df8879d857d31f7f4c.tar.gz
sharkey-6cc02fee99d11d3866c6f5df8879d857d31f7f4c.tar.bz2
sharkey-6cc02fee99d11d3866c6f5df8879d857d31f7f4c.zip
enhance(backend): improve fanout tl
Resolve #11958 Resolve #12061
Diffstat (limited to 'packages/backend/src/core')
-rw-r--r--packages/backend/src/core/FunoutTimelineService.ts5
-rw-r--r--packages/backend/src/core/UserFollowingService.ts18
2 files changed, 21 insertions, 2 deletions
diff --git a/packages/backend/src/core/FunoutTimelineService.ts b/packages/backend/src/core/FunoutTimelineService.ts
index 512b2d9833..c633c329e5 100644
--- a/packages/backend/src/core/FunoutTimelineService.ts
+++ b/packages/backend/src/core/FunoutTimelineService.ts
@@ -77,4 +77,9 @@ export class FunoutTimelineService {
);
});
}
+
+ @bindThis
+ public purge(name: string) {
+ return this.redisForTimelines.del('list:' + name);
+ }
}
diff --git a/packages/backend/src/core/UserFollowingService.ts b/packages/backend/src/core/UserFollowingService.ts
index 7548e3d28f..4d7e14f683 100644
--- a/packages/backend/src/core/UserFollowingService.ts
+++ b/packages/backend/src/core/UserFollowingService.ts
@@ -29,6 +29,7 @@ import { CacheService } from '@/core/CacheService.js';
import type { Config } from '@/config.js';
import { AccountMoveService } from '@/core/AccountMoveService.js';
import { UtilityService } from '@/core/UtilityService.js';
+import { FunoutTimelineService } from '@/core/FunoutTimelineService.js';
import Logger from '../logger.js';
const logger = new Logger('following/create');
@@ -83,6 +84,7 @@ export class UserFollowingService implements OnModuleInit {
private webhookService: WebhookService,
private apRendererService: ApRendererService,
private accountMoveService: AccountMoveService,
+ private funoutTimelineService: FunoutTimelineService,
private perUserFollowingChart: PerUserFollowingChart,
private instanceChart: InstanceChart,
) {
@@ -288,8 +290,8 @@ export class UserFollowingService implements OnModuleInit {
this.perUserFollowingChart.update(follower, followee, true);
}
- // Publish follow event
if (this.userEntityService.isLocalUser(follower) && !silent) {
+ // Publish follow event
this.userEntityService.pack(followee.id, follower, {
detail: true,
}).then(async packed => {
@@ -302,6 +304,8 @@ export class UserFollowingService implements OnModuleInit {
});
}
});
+
+ this.funoutTimelineService.purge(`homeTimeline:${follower.id}`);
}
// Publish followed event
@@ -355,8 +359,8 @@ export class UserFollowingService implements OnModuleInit {
this.decrementFollowing(following.follower, following.followee);
- // Publish unfollow event
if (!silent && this.userEntityService.isLocalUser(follower)) {
+ // Publish unfollow event
this.userEntityService.pack(followee.id, follower, {
detail: true,
}).then(async packed => {
@@ -369,6 +373,8 @@ export class UserFollowingService implements OnModuleInit {
});
}
});
+
+ this.funoutTimelineService.purge(`homeTimeline:${follower.id}`);
}
if (this.userEntityService.isLocalUser(follower) && this.userEntityService.isRemoteUser(followee)) {
@@ -707,4 +713,12 @@ export class UserFollowingService implements OnModuleInit {
});
}
}
+
+ @bindThis
+ public getFollowees(userId: MiUser['id']) {
+ return this.followingsRepository.createQueryBuilder('following')
+ .select('following.followeeId')
+ .where('following.followerId = :followerId', { followerId: userId })
+ .getMany();
+ }
}