summaryrefslogtreecommitdiff
path: root/packages/backend/src/core/NoteCreateService.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/core/NoteCreateService.ts')
-rw-r--r--packages/backend/src/core/NoteCreateService.ts34
1 files changed, 6 insertions, 28 deletions
diff --git a/packages/backend/src/core/NoteCreateService.ts b/packages/backend/src/core/NoteCreateService.ts
index 29f7dd917d..41c1e3f66f 100644
--- a/packages/backend/src/core/NoteCreateService.ts
+++ b/packages/backend/src/core/NoteCreateService.ts
@@ -14,7 +14,7 @@ import { extractHashtags } from '@/misc/extract-hashtags.js';
import type { IMentionedRemoteUsers } from '@/models/Note.js';
import { MiNote } from '@/models/Note.js';
import { LatestNote } from '@/models/LatestNote.js';
-import type { ChannelFollowingsRepository, ChannelsRepository, FollowingsRepository, InstancesRepository, LatestNotesRepository, MiFollowing, MiMeta, MutingsRepository, NotesRepository, NoteThreadMutingsRepository, UserListMembershipsRepository, UserProfilesRepository, UsersRepository } from '@/models/_.js';
+import type { ChannelFollowingsRepository, ChannelsRepository, FollowingsRepository, InstancesRepository, MiFollowing, MiMeta, MutingsRepository, NotesRepository, NoteThreadMutingsRepository, UserListMembershipsRepository, UserProfilesRepository, UsersRepository } from '@/models/_.js';
import type { MiDriveFile } from '@/models/DriveFile.js';
import type { MiApp } from '@/models/App.js';
import { concat } from '@/misc/prelude/array.js';
@@ -58,7 +58,7 @@ import { isReply } from '@/misc/is-reply.js';
import { trackPromise } from '@/misc/promise-tracker.js';
import { isUserRelated } from '@/misc/is-user-related.js';
import { IdentifiableError } from '@/misc/identifiable-error.js';
-import { isQuote, isRenote } from '@/misc/is-renote.js';
+import { LatestNoteService } from '@/core/LatestNoteService.js';
import { CollapsedQueue } from '@/misc/collapsed-queue.js';
type NotificationType = 'reply' | 'renote' | 'quote' | 'mention';
@@ -172,9 +172,6 @@ export class NoteCreateService implements OnApplicationShutdown {
@Inject(DI.notesRepository)
private notesRepository: NotesRepository,
- @Inject(DI.latestNotesRepository)
- private latestNotesRepository: LatestNotesRepository,
-
@Inject(DI.mutingsRepository)
private mutingsRepository: MutingsRepository,
@@ -225,6 +222,7 @@ export class NoteCreateService implements OnApplicationShutdown {
private utilityService: UtilityService,
private userBlockingService: UserBlockingService,
private cacheService: CacheService,
+ private latestNoteService: LatestNoteService,
) {
this.updateNotesCountQueue = new CollapsedQueue(60 * 1000 * 5, this.collapseNotesCount, this.performUpdateNotesCount);
}
@@ -530,8 +528,6 @@ export class NoteCreateService implements OnApplicationShutdown {
await this.notesRepository.insert(insert);
}
- await this.updateLatestNote(insert);
-
return insert;
} catch (e) {
// duplicate key error
@@ -812,6 +808,9 @@ export class NoteCreateService implements OnApplicationShutdown {
});
}
+ // Update the Latest Note index / following feed
+ this.latestNoteService.handleCreatedNoteBG(note);
+
// Register to search database
if (!user.noindex) this.index(note);
}
@@ -1151,25 +1150,4 @@ export class NoteCreateService implements OnApplicationShutdown {
public async onApplicationShutdown(signal?: string | undefined): Promise<void> {
await this.dispose();
}
-
- private async updateLatestNote(note: MiNote) {
- // Ignore DMs.
- // Followers-only posts are *included*, as this table is used to back the "following" feed.
- if (note.visibility === 'specified') return;
-
- // Ignore pure renotes
- if (isRenote(note) && !isQuote(note)) return;
-
- // Make sure that this isn't an *older* post.
- // We can get older posts through replies, lookups, etc.
- const currentLatest = await this.latestNotesRepository.findOneBy({ userId: note.userId });
- if (currentLatest != null && currentLatest.noteId >= note.id) return;
-
- // Record this as the latest note for the given user
- const latestNote = new LatestNote({
- userId: note.userId,
- noteId: note.id,
- });
- await this.latestNotesRepository.upsert(latestNote, ['userId']);
- }
}