feat(dashboard-v2): setup loading indicators for main screen panels
This commit is contained in:
parent
5fec31a3a5
commit
623a4b816b
|
@ -3,6 +3,7 @@ import relativeTime from "dayjs/plugin/relativeTime";
|
||||||
|
|
||||||
import { useUser } from "../../contexts/user";
|
import { useUser } from "../../contexts/user";
|
||||||
import useActivePlan from "../../hooks/useActivePlan";
|
import useActivePlan from "../../hooks/useActivePlan";
|
||||||
|
import { ContainerLoadingIndicator } from "../LoadingIndicator";
|
||||||
|
|
||||||
import LatestPayment from "./LatestPayment";
|
import LatestPayment from "./LatestPayment";
|
||||||
import SuggestedPlan from "./SuggestedPlan";
|
import SuggestedPlan from "./SuggestedPlan";
|
||||||
|
@ -14,10 +15,7 @@ const CurrentPlan = () => {
|
||||||
const { plans, activePlan, error: plansError } = useActivePlan(user);
|
const { plans, activePlan, error: plansError } = useActivePlan(user);
|
||||||
|
|
||||||
if (!user || !activePlan) {
|
if (!user || !activePlan) {
|
||||||
return (
|
return <ContainerLoadingIndicator />;
|
||||||
// TODO: a nicer loading indicator
|
|
||||||
<div className="flex flex-col space-y-4 h-full justify-center items-center">Loading...</div>
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (userError || plansError) {
|
if (userError || plansError) {
|
||||||
|
|
|
@ -2,6 +2,7 @@ import * as React from "react";
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
|
|
||||||
import { Table, TableBody, TableCell, TableRow } from "../Table";
|
import { Table, TableBody, TableCell, TableRow } from "../Table";
|
||||||
|
import { ContainerLoadingIndicator } from "../LoadingIndicator";
|
||||||
|
|
||||||
import useFormattedActivityData from "./useFormattedActivityData";
|
import useFormattedActivityData from "./useFormattedActivityData";
|
||||||
|
|
||||||
|
@ -12,8 +13,8 @@ export default function ActivityTable({ type }) {
|
||||||
if (!items.length) {
|
if (!items.length) {
|
||||||
return (
|
return (
|
||||||
<div className="flex w-full h-full justify-center items-center text-palette-400">
|
<div className="flex w-full h-full justify-center items-center text-palette-400">
|
||||||
{/* TODO: proper loading indicator / error message */}
|
{/* TODO: proper error message */}
|
||||||
{!data && !error && <p>Loading...</p>}
|
{!data && !error && <ContainerLoadingIndicator />}
|
||||||
{!data && error && <p>An error occurred while loading this data.</p>}
|
{!data && error && <p>An error occurred while loading this data.</p>}
|
||||||
{data && <p>No files found.</p>}
|
{data && <p>No files found.</p>}
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -8,6 +8,7 @@ import { PageContainer } from "../components/PageContainer";
|
||||||
import { NavBar } from "../components/Navbar";
|
import { NavBar } from "../components/Navbar";
|
||||||
import { Footer } from "../components/Footer";
|
import { Footer } from "../components/Footer";
|
||||||
import { UserProvider, useUser } from "../contexts/user";
|
import { UserProvider, useUser } from "../contexts/user";
|
||||||
|
import { ContainerLoadingIndicator } from "../components/LoadingIndicator";
|
||||||
|
|
||||||
const Wrapper = styled.div.attrs({
|
const Wrapper = styled.div.attrs({
|
||||||
className: "min-h-screen overflow-hidden",
|
className: "min-h-screen overflow-hidden",
|
||||||
|
@ -25,7 +26,7 @@ const Layout = ({ children }) => {
|
||||||
<Wrapper>
|
<Wrapper>
|
||||||
{!user && (
|
{!user && (
|
||||||
<div className="fixed inset-0 flex justify-center items-center bg-palette-100/50">
|
<div className="fixed inset-0 flex justify-center items-center bg-palette-100/50">
|
||||||
<p>Loading...</p> {/* TODO: Do something nicer here */}
|
<ContainerLoadingIndicator className="!text-palette-200/50" />
|
||||||
</div>
|
</div>
|
||||||
)}
|
)}
|
||||||
{user && <>{children}</>}
|
{user && <>{children}</>}
|
||||||
|
|
Reference in New Issue