diff options
author | SnackpackWayne <49062420+snackpackwayne@users.noreply.github.com> | 2023-12-27 22:38:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-12-27 22:38:01 +0100 |
commit | 52cb777c9432354302b3285e141aa96632af34d5 (patch) | |
tree | 0b823b5816f040990af0ee2fc7815a2f1a063fca /src/lib/api/feed-manip.ts | |
parent | 538c67cc332a6b909f83dd382843667dcced0fe9 (diff) | |
parent | f402f33a024ea59ea9bd2decfc0444e6836a934c (diff) | |
download | voidsky-52cb777c9432354302b3285e141aa96632af34d5.tar.zst |
Merge branch 'main' into patch-1
Diffstat (limited to 'src/lib/api/feed-manip.ts')
-rw-r--r-- | src/lib/api/feed-manip.ts | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/lib/api/feed-manip.ts b/src/lib/api/feed-manip.ts index 9a050fd3e..c964693c4 100644 --- a/src/lib/api/feed-manip.ts +++ b/src/lib/api/feed-manip.ts @@ -117,11 +117,7 @@ export class FeedViewPostsSlice { } export class NoopFeedTuner { - private keyCounter = 0 - - reset() { - this.keyCounter = 0 - } + reset() {} tune( feed: FeedViewPost[], _opts?: {dryRun: boolean; maintainOrder: boolean}, @@ -131,13 +127,13 @@ export class NoopFeedTuner { } export class FeedTuner { - private keyCounter = 0 + seenKeys: Set<string> = new Set() seenUris: Set<string> = new Set() constructor(public tunerFns: FeedTunerFn[]) {} reset() { - this.keyCounter = 0 + this.seenKeys.clear() this.seenUris.clear() } @@ -218,11 +214,16 @@ export class FeedTuner { } if (!dryRun) { - for (const slice of slices) { + slices = slices.filter(slice => { + if (this.seenKeys.has(slice._reactKey)) { + return false + } for (const item of slice.items) { this.seenUris.add(item.post.uri) } - } + this.seenKeys.add(slice._reactKey) + return true + }) } return slices |