phoebe/web/app/src/routes/Posts.svelte

43 lines
1.1 KiB
Svelte
Raw Normal View History

2021-05-10 22:47:35 +07:00
<script>
2021-05-09 22:07:23 +07:00
import { onMount } from "svelte";
import { getPosts } from "../api.js";
2021-05-10 22:47:35 +07:00
import { Link } from "svelte-routing";
2021-05-10 09:45:40 +07:00
import queryString from "query-string";
2021-05-11 00:37:27 +07:00
import PostPaginator from "../PostPaginator.svelte";
2021-05-10 09:45:40 +07:00
export let location;
2021-05-09 22:07:23 +07:00
let page = 1;
let totalPages = 1;
let posts = [];
const getData = async () => {
2021-05-10 22:47:35 +07:00
const data = await getPosts({ page });
if (Array.isArray(data.posts)) {
2021-05-10 09:45:40 +07:00
posts = data.posts;
2021-05-10 09:47:19 +07:00
totalPages = data.totalPage;
2021-05-10 09:45:40 +07:00
}
2021-05-10 22:47:35 +07:00
};
onMount(() => {
let queryParams;
queryParams = queryString.parse(location.search);
if (queryParams.page) {
page = parseInt(queryParams.page);
}
2021-05-10 09:45:40 +07:00
getData();
2021-05-10 22:47:35 +07:00
});
2021-05-10 09:45:40 +07:00
const handlePage = (i) => {
return () => {
2021-05-10 10:17:42 +07:00
page = i;
2021-05-10 09:45:40 +07:00
getData();
2021-05-10 22:47:35 +07:00
};
};
2021-05-09 22:07:23 +07:00
</script>
<section class="hero is-primary">
<div class="hero-body">
2021-05-10 22:47:35 +07:00
<p class="title">Posts</p>
2021-05-09 22:07:23 +07:00
</div>
</section>
2021-05-11 00:37:27 +07:00
<PostPaginator url="/posts" posts={posts} page={page} totalPages={totalPages} handlePage={handlePage} />