diff --git a/src/components/CatalogLoader.jsx b/src/components/CatalogLoader.jsx
new file mode 100644
index 00000000..f302866a
--- /dev/null
+++ b/src/components/CatalogLoader.jsx
@@ -0,0 +1,51 @@
+import React from 'react';
+import ContentLoader from 'react-content-loader';
+import useBoardStore from '../useBoardStore';
+
+
+const SingleRectLoader = () => {
+ const selectedStyle = useBoardStore((state) => state.selectedStyle);
+ const backgroundColor = selectedStyle === 'Tomorrow' ? '#333' : '#f3f3f3';
+ const foregroundColor = selectedStyle === 'Tomorrow' ? '#555' : '#ecebeb';
+
+ return (
+
+
+
+
+
+ );
+};
+
+
+const CatalogLoader = () => {
+ return (
+
+ {[...Array(24)].map((_, index) => (
+
+ ))}
+
+ );
+};
+
+export default CatalogLoader;
diff --git a/src/components/PostLoader.jsx b/src/components/PostLoader.jsx
new file mode 100644
index 00000000..1980b19c
--- /dev/null
+++ b/src/components/PostLoader.jsx
@@ -0,0 +1,44 @@
+import React from 'react';
+import ContentLoader from 'react-content-loader';
+import useBoardStore from '../useBoardStore';
+
+const SinglePostLoader = () => {
+ const selectedStyle = useBoardStore((state) => state.selectedStyle);
+ const backgroundColor = selectedStyle === 'Tomorrow' ? '#333' : '#f3f3f3';
+ const foregroundColor = selectedStyle === 'Tomorrow' ? '#555' : '#ecebeb';
+
+ return (
+
+
+
+
+
+
+
+ );
+};
+
+const PostLoader = () => {
+ return (
+
+ {[...Array(5)].map((_, index) => (
+
+ ))}
+
+ );
+};
+
+export default PostLoader;
diff --git a/src/components/views/Board.jsx b/src/components/views/Board.jsx
index 40294896..1373042b 100644
--- a/src/components/views/Board.jsx
+++ b/src/components/views/Board.jsx
@@ -2,8 +2,9 @@ import React, { useState, useEffect, Fragment } from 'react';
import { Link, useNavigate, useParams, useLocation } from 'react-router-dom';
import useBoardStore from '../../useBoardStore';
import { Container, NavBar, Header, Break, PostFormLink, PostFormTable, PostForm, TopBar, BoardForm } from './styles/Board.styled';
-import ImageBanner from '../ImageBanner';
import CaptchaModal from '../CaptchaModal';
+import ImageBanner from '../ImageBanner';
+import PostLoader from '../PostLoader';
import ReplyModal from '../ReplyModal';
import SettingsModal from '../SettingsModal';
import { useFeed, useAccountsActions } from '@plebbit/plebbit-react-hooks';
@@ -554,7 +555,7 @@ const Board = ({ setBodyStyle }) => {
pageStart={0}
loadMore={tryLoadMore}
hasMore={hasMore}
- loader={Loading...
}
+ loader={}
>
{renderedFeed.map(thread => {
const { replies: { pages: { topAll: { comments } } } } = thread;
diff --git a/src/components/views/Catalog.jsx b/src/components/views/Catalog.jsx
index f0bd33cf..8c602ab6 100644
--- a/src/components/views/Catalog.jsx
+++ b/src/components/views/Catalog.jsx
@@ -7,6 +7,7 @@ import { Threads } from './styles/Catalog.styled';
import { useFeed, useAccountsActions } from '@plebbit/plebbit-react-hooks';
import ImageBanner from '../ImageBanner';
import CaptchaModal from '../CaptchaModal';
+import CatalogLoader from '../CatalogLoader';
import SettingsModal from '../SettingsModal';
import onError from '../../utils/onError';
import onSuccess from '../../utils/onSuccess';
@@ -205,9 +206,6 @@ const Catalog = ({ setBodyStyle }) => {
- const handleVoidClick = () => {}
-
-
const handleClickTitle = (title, address) => {
setSelectedTitle(title);
setSelectedAddress(address);
@@ -500,7 +498,7 @@ const Catalog = ({ setBodyStyle }) => {
pageStart={0}
loadMore={tryLoadMore}
hasMore={hasMore}
- loader={Loading...
}
+ loader={}
>
{feed.map(thread => {
return (
diff --git a/src/components/views/Thread.jsx b/src/components/views/Thread.jsx
index 0f3c617b..9304096f 100644
--- a/src/components/views/Thread.jsx
+++ b/src/components/views/Thread.jsx
@@ -4,8 +4,9 @@ import useBoardStore from '../../useBoardStore';
import { Container, NavBar, Header, Break, PostForm, PostFormTable, BoardForm } from './styles/Board.styled';
import { ReplyFormLink, TopBar, BottomBar } from './styles/Thread.styled';
import { useComment, useAccountsActions } from '@plebbit/plebbit-react-hooks';
-import ImageBanner from '../ImageBanner';
import CaptchaModal from '../CaptchaModal';
+import ImageBanner from '../ImageBanner';
+import PostLoader from '../PostLoader';
import ReplyModal from '../ReplyModal';
import SettingsModal from '../SettingsModal';
import { Tooltip } from 'react-tooltip';
@@ -648,6 +649,7 @@ const Thread = ({ setBodyStyle }) => {
+ {comment.replyCount ?? }
{comment.replyCount > 0 &&
Object.keys(comment.replies.pages.topAll.comments).map(() => {
const renderedComments = renderThreadComments(comment.replies.pages.topAll.comments);
@@ -806,6 +808,7 @@ const Thread = ({ setBodyStyle }) => {
+ {comment.replyCount ?? }
{comment.replyCount > 0 &&
Object.keys(comment.replies.pages.topAll.comments).map(() => {
const renderedComments = renderThreadComments(comment.replies.pages.topAll.comments);
@@ -962,7 +965,7 @@ const Thread = ({ setBodyStyle }) => {
>
) : (
- Loading...
+
)}