import dayjs from "dayjs"; import relativeTime from "dayjs/plugin/relativeTime"; import prettyBytes from "pretty-bytes"; import Link from "next/link"; import Layout from "../components/Layout"; import authServerSideProps from "../services/authServerSideProps"; import { SkynetClient } from "skynet-js"; import config from "../config"; import useAccountsApi from "../services/useAccountsApi"; import { isFreeTier } from "../services/tiers"; import { write } from "clipboardy"; dayjs.extend(relativeTime); const skynetClient = new SkynetClient(process.env.NEXT_PUBLIC_SKYNET_PORTAL_API); const apiPrefix = process.env.NODE_ENV === "development" ? "/api/stubs" : ""; export const getServerSideProps = authServerSideProps(async (context, api) => { const stripe = await api.get("stripe/prices").json(); const plans = [config.tiers.starter, ...stripe].sort((a, b) => a.tier - b.tier); return { props: { plans } }; }); function SkylinkList({ items = [], timestamp }) { return ( ); } export default function Home({ plans }) { const { data: user } = useAccountsApi(`${apiPrefix}/user`); const { data: stats } = useAccountsApi(`${apiPrefix}/user/stats`); const { data: downloads } = useAccountsApi(`${apiPrefix}/user/downloads?pageSize=3&offset=0`); const { data: uploads } = useAccountsApi(`${apiPrefix}/user/uploads?pageSize=3&offset=0`); const activePlan = plans.find(({ tier }) => (user ? user.tier === tier : isFreeTier(tier))); return (
{/* Heroicon name: outline/users */}
Current plan
{activePlan.name}
Storage used
{prettyBytes(stats?.totalUploadsSize ?? 0)}
{/*
Bandwidth used
{prettyBytes(stats?.bwDownloads ?? 0)}
*/}
{/* ============ */}

Recent downloads

{/* This example requires Tailwind CSS v2.0+ */}

Recent uploads

{/* This example requires Tailwind CSS v2.0+ */}
); }