Skip to content
This repository was archived by the owner on Aug 10, 2024. It is now read-only.

Commit 63bb17c

Browse files
committed
pinnedPosts support in worker.js
1 parent c538908 commit 63bb17c

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

cloudflare-worker/worker.js

+27-1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,25 @@ function jsonResponse(obj) {
3535
return response;
3636
}
3737

38+
function bucketTerms(allTerms, opts={}) {
39+
let maxSearchTerms = opts["maxSearchTerms"] || MAX_SEARCH_TERMS;
40+
let pinnedPosts = [];
41+
let searchTerms = [];
42+
43+
for (let term of allTerms) {
44+
if (term.startsWith("at://")) {
45+
pinnedPosts.push(term);
46+
} else {
47+
searchTerms.push(term);
48+
}
49+
}
50+
51+
return {
52+
pinnedPosts: pinnedPosts,
53+
searchTerms: searchTerms.slice(0, maxSearchTerms),
54+
}
55+
}
56+
3857
async function getFeedSkeleton(request) {
3958
let url = new URL(request.url);
4059
let feedAtUrl = url.searchParams.get("feed");
@@ -56,7 +75,11 @@ async function getFeedSkeleton(request) {
5675
limit = DEFAULT_LIMIT;
5776
}
5877

59-
let searchTerms = config.searchTerms.slice(0, MAX_SEARCH_TERMS);
78+
let allTerms = bucketTerms(config.searchTerms, {
79+
maxSearchTerms: MAX_SEARCH_TERMS,
80+
});
81+
let searchTerms = allTerms.searchTerms;
82+
let pinnedPosts = allTerms.pinnedPosts;
6083
let responsePromises = [];
6184

6285
for (let searchTerm of searchTerms) {
@@ -88,6 +111,9 @@ async function getFeedSkeleton(request) {
88111
a === b ? 0 : a < b ? -1 : 1
89112
);
90113
var feed = [];
114+
for (let pinnedPost of pinnedPosts) {
115+
feed.push({ post: pinnedPost });
116+
}
91117
for (let timestampUrl of timestampURLs) {
92118
let atUrl = timestampUrl[1];
93119
feed.push({ post: atUrl });

0 commit comments

Comments
 (0)