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} />
|