From 2face1790f3e193581e05a6ee014fbf215d4b694 Mon Sep 17 00:00:00 2001 From: Trirst <abeces968@gmail.com> Date: Mon, 18 Oct 2021 00:39:48 +0700 Subject: [PATCH] Persistent paging route --- src/App.svelte | 1 + src/lib/PaginationBar.svelte | 6 ++++++ src/routes.js | 2 ++ src/routes/Browse.svelte | 32 ++++++++++++++++++++++++++++++++ src/routes/Home.svelte | 29 ----------------------------- 5 files changed, 41 insertions(+), 29 deletions(-) create mode 100644 src/routes/Browse.svelte diff --git a/src/App.svelte b/src/App.svelte index b7c7266..13e1f2f 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -7,6 +7,7 @@ <div class="flex flex-row space-x-4 m-1.5"> <a href="#/" class="">Home</a> + <a href="#/browse?p=1">Browse</a> <a href="#/upload">Upload</a> <a href="#/tag">Tag</a> <span>:|:</span> diff --git a/src/lib/PaginationBar.svelte b/src/lib/PaginationBar.svelte index 598e174..f554986 100644 --- a/src/lib/PaginationBar.svelte +++ b/src/lib/PaginationBar.svelte @@ -1,6 +1,9 @@ <script> + import { push } from "svelte-spa-router"; + export let currentPage = 1; export let lastPage = 1; + $: queryPageNumber(currentPage); function pagePrompt() { try { @@ -18,6 +21,9 @@ alert(error); } } + function queryPageNumber(currentPage) { + push(`#/browse?p=${currentPage}`); + } </script> <nav class="flex justify-center"> diff --git a/src/routes.js b/src/routes.js index 65ea066..c2ff3c5 100644 --- a/src/routes.js +++ b/src/routes.js @@ -2,10 +2,12 @@ import Home from '@/routes/Home.svelte'; import Upload from '@/routes/Upload.svelte'; import ImagePost from '@/routes/ImagePost.svelte'; import Tag from '@/routes/Tag.svelte'; +import Browse from '@/routes/Browse.svelte'; export default { '/': Home, '/upload': Upload, '/image/:snowflake': ImagePost, '/tag': Tag, + '/browse': Browse, } \ No newline at end of file diff --git a/src/routes/Browse.svelte b/src/routes/Browse.svelte new file mode 100644 index 0000000..0b6de17 --- /dev/null +++ b/src/routes/Browse.svelte @@ -0,0 +1,32 @@ +<script> + import { onMount } from "svelte"; + import { paths } from "@/static/js/paths"; + import { fetchAPI } from "@/static/js/helper"; + import ImageList from "@/lib/ImageList.svelte"; + import PaginationBar from "@/lib/PaginationBar.svelte"; + import { querystring } from "svelte-spa-router"; + + let pageSnowflakes = []; + let currentPage; + let lastPage; + $: if ($querystring !== "") + currentPage = parseInt(new URLSearchParams($querystring).get("p")); + $: getPageSnowflakes(currentPage - 1).then( + (snowflakes) => (pageSnowflakes = snowflakes || []) + ); + + async function getPageSnowflakes(pageNumber) { + return await fetchAPI(paths.ImagePageField(pageNumber)); + } + async function getTotalPages() { + return await fetchAPI(paths.ImagePage); + } + + onMount(async () => { + lastPage = await getTotalPages(); + }); +</script> + +<PaginationBar bind:currentPage bind:lastPage /> +<ImageList snowflakes={pageSnowflakes} /> +<PaginationBar bind:currentPage bind:lastPage /> diff --git a/src/routes/Home.svelte b/src/routes/Home.svelte index 6b9c899..e69de29 100644 --- a/src/routes/Home.svelte +++ b/src/routes/Home.svelte @@ -1,29 +0,0 @@ -<script> - import { onMount } from "svelte"; - import { paths } from "@/static/js/paths"; - import { fetchAPI } from "@/static/js/helper"; - import ImageList from "@/lib/ImageList.svelte"; - import PaginationBar from "@/lib/PaginationBar.svelte"; - - let pageSnowflakes = []; - let currentPage = 1; - let lastPage = 1; - $: getPageSnowflakes(currentPage - 1).then( - (snowflakes) => (pageSnowflakes = snowflakes || []) - ); - - async function getPageSnowflakes(pageNumber) { - return await fetchAPI(paths.ImagePageField(pageNumber)); - } - async function getTotalPages() { - return await fetchAPI(paths.ImagePage); - } - - onMount(async () => { - lastPage = await getTotalPages(); - }); -</script> - -<PaginationBar bind:currentPage {lastPage} /> -<ImageList snowflakes={pageSnowflakes} /> -<PaginationBar bind:currentPage {lastPage} /> -- GitLab