🏡 index : ~doyle/blocks.ls.git

<script context="module">
  export async function load({ fetch, url }) {
    const offset = Math.max(0, Number.parseInt(url.searchParams.get("offset") || 0));
    const limit = 20;

    let res = await fetch(`http://localhost:3001/block?limit=${limit}&offset=${offset}`);

    if (res.ok) {
      return {
        props: {
          blocks: await res.json(),
          offset,
          limit,
        },
      };
    }
    return {
      status: res.status,
      error: new Error(),
    };
  }
</script>

<script>
  import Blocks from "$lib/Blocks.svelte";

  export let blocks;
  export let offset;
  export let limit;
</script>

<div class="mb-4">
  <section class="mb-3">
    <h2>Blocks</h2>

    <div class="table-responsive">
      <Blocks {blocks} />
    </div>
  </section>

  <section class="!bg-transparent !mt-0 mb-3 flex">
    {#if offset > 0}
      {#if offset - limit <= 0}
        <a
          href="/block"
          class="!text-slate-200 text-base rounded-lg bg-gray-800 p-3 cursor-pointer"
        >
          ← Previous
        </a>
      {:else}
        <a
          href="/block?offset={Math.max(0, offset - limit)}"
          class="!text-slate-200 text-base rounded-lg bg-gray-800 p-3 cursor-pointer"
        >
          ← Previous
        </a>
      {/if}
    {/if}

    <div class="flex-grow" />

    {#if blocks.length >= limit}
      <a
        href="/block?offset={offset + limit}"
        class="!text-slate-200 text-base rounded-lg bg-gray-800 p-3 cursor-pointer"
      >
        Next →
      </a>
    {/if}
  </section>
</div>

<style lang="scss">
  @import "../../_section.scss";

  section {
    @apply text-xs;
  }
</style>