Implement issues for v1.1.0 #20
@ -13,22 +13,35 @@ let interval: NodeJS.Timer | null = null;
|
||||
let moreOlderPostsAvailable = true;
|
||||
let loadingOlderPosts = false;
|
||||
|
||||
function refresh() {
|
||||
async function fetchPosts(filter: { since?: string, before?: string }): Promise<Post[]> {
|
||||
const params = new URLSearchParams();
|
||||
if (data.posts.length > 0) {
|
||||
params.set('since', data.posts[0].created_at);
|
||||
if (filter?.since !== undefined) {
|
||||
params.set('since', filter.since);
|
||||
}
|
||||
fetch(`/api/posts?${params}`)
|
||||
.then(r => r.json())
|
||||
.then((resp: Post[]) => {
|
||||
if (filter?.before !== undefined) {
|
||||
params.set('before', filter.before);
|
||||
}
|
||||
|
||||
const response = await fetch(`/api/posts?${params}`);
|
||||
return await response.json();
|
||||
}
|
||||
|
||||
function filterDuplicates(posts: Post[]): Post[] {
|
||||
return posts.filter((obj, index, arr) => {
|
||||
return arr.map(mapObj => mapObj.url).indexOf(obj.url) === index;
|
||||
});
|
||||
}
|
||||
|
||||
function refresh() {
|
||||
let filter = {};
|
||||
if (data.posts.length > 0) {
|
||||
filter = { since: data.posts[0].created_at };
|
||||
}
|
||||
fetchPosts(filter).then(resp => {
|
||||
if (resp.length > 0) {
|
||||
// Prepend new posts, filter dupes
|
||||
// There shouldn't be any duplicates, but better be safe than sorry
|
||||
const combined = resp.concat(data.posts);
|
||||
const filteredPosts = combined.filter((obj, index, arr) => {
|
||||
return arr.map(mapObj => mapObj.url).indexOf(obj.url) === index;
|
||||
});
|
||||
data.posts = filteredPosts;
|
||||
data.posts = filterDuplicates(resp.concat(data.posts));
|
||||
}
|
||||
})
|
||||
.catch(e => {
|
||||
@ -57,23 +70,19 @@ onMount(async () => {
|
||||
}
|
||||
});
|
||||
|
||||
async function loadOlderPosts() {
|
||||
function loadOlderPosts() {
|
||||
loadingOlderPosts = true;
|
||||
const params = new URLSearchParams();
|
||||
let filter = {};
|
||||
if (data.posts.length > 0) {
|
||||
params.set('before', data.posts[data.posts.length - 1].created_at);
|
||||
filter = { before: data.posts[data.posts.length - 1].created_at };
|
||||
}
|
||||
await fetch(`/api/posts?${params}`)
|
||||
.then(r => r.json())
|
||||
.then((resp: Post[]) => {
|
||||
|
||||
|
||||
fetchPosts(filter).then(resp => {
|
||||
if (resp.length > 0) {
|
||||
// Append old posts, filter dupes
|
||||
// There shouldn't be any duplicates, but better be safe than sorry
|
||||
const combined = data.posts.concat(resp);
|
||||
const filteredPosts = combined.filter((obj, index, arr) => {
|
||||
return arr.map(mapObj => mapObj.url).indexOf(obj.url) === index;
|
||||
});
|
||||
data.posts = filteredPosts;
|
||||
data.posts = filterDuplicates(data.posts.concat(resp));
|
||||
moreOlderPostsAvailable = true;
|
||||
} else {
|
||||
moreOlderPostsAvailable = false;
|
||||
|
Loading…
Reference in New Issue
Block a user