diff options
author | Paul Frazee <pfrazee@gmail.com> | 2023-09-20 19:47:56 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-20 19:47:56 -0700 |
commit | 5a945c2024855b89dfb99f81a2c4d226bb39dc32 (patch) | |
tree | 3a42e8e8d79c281606c2b7d9bff9380df596d8c7 /src/lib/api/feed-manip.ts | |
parent | 68dd3210d11bf8a15c319768d3e338c629a69d4b (diff) | |
download | voidsky-5a945c2024855b89dfb99f81a2c4d226bb39dc32.tar.zst |
Prefilter the mergefeed to ensure a better mix of following and custom feeds (#1498)
* Prefilter the mergefeed to ensure a better mix of following and custom feeds * Test suite improvements & tests for the mergefeed (#1499) * Disable invite codes test for now * Update test sim to latest iphone * Introduce TestCtrls driver * Add mergefeed tests
Diffstat (limited to 'src/lib/api/feed-manip.ts')
-rw-r--r-- | src/lib/api/feed-manip.ts | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/src/lib/api/feed-manip.ts b/src/lib/api/feed-manip.ts index ef57fc4f2..8f259a910 100644 --- a/src/lib/api/feed-manip.ts +++ b/src/lib/api/feed-manip.ts @@ -128,23 +128,32 @@ export class FeedTuner { tune( feed: FeedViewPost[], tunerFns: FeedTunerFn[] = [], - {dryRun}: {dryRun: boolean} = {dryRun: false}, + {dryRun, maintainOrder}: {dryRun: boolean; maintainOrder: boolean} = { + dryRun: false, + maintainOrder: false, + }, ): FeedViewPostsSlice[] { let slices: FeedViewPostsSlice[] = [] - // arrange the posts into thread slices - for (let i = feed.length - 1; i >= 0; i--) { - const item = feed[i] - - const selfReplyUri = getSelfReplyUri(item) - if (selfReplyUri) { - const parent = slices.find(item2 => item2.isNextInThread(selfReplyUri)) - if (parent) { - parent.insert(item) - continue + if (maintainOrder) { + slices = feed.map(item => new FeedViewPostsSlice([item])) + } else { + // arrange the posts into thread slices + for (let i = feed.length - 1; i >= 0; i--) { + const item = feed[i] + + const selfReplyUri = getSelfReplyUri(item) + if (selfReplyUri) { + const parent = slices.find(item2 => + item2.isNextInThread(selfReplyUri), + ) + if (parent) { + parent.insert(item) + continue + } } + slices.unshift(new FeedViewPostsSlice([item])) } - slices.unshift(new FeedViewPostsSlice([item])) } // run the custom tuners |