diff --git a/package.json b/package.json index 61ee7f05..ff6ce55b 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "eslint": "^8.34.0", "eslint-config-react-app": "^7.0.1", "ext-name": "^5.0.0", + "moment": "^2.29.4", "postcss": "^8.4.21", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/src/components/Board.jsx b/src/components/Board.jsx index 679e405b..5839d504 100644 --- a/src/components/Board.jsx +++ b/src/components/Board.jsx @@ -6,6 +6,7 @@ import ImageBanner from './ImageBanner'; import { useFeed, useAccountsActions } from '@plebbit/plebbit-react-hooks'; import InfiniteScroll from 'react-infinite-scroller'; import { Tooltip } from 'react-tooltip'; +import moment from 'moment'; const Board = ({ setBodyStyle }) => { @@ -450,7 +451,6 @@ const Board = ({ setBodyStyle }) => { loader={
Loading...
} > {renderedFeed.map(thread => { - let counter = 1; const { replies: { pages: { topAll: { comments } } } } = thread; const renderedComments = renderComments(comments); return ( @@ -516,11 +516,11 @@ const Board = ({ setBodyStyle }) => { {thread.author.address} })   - 2 weeks ago + {moment(thread.timestamp * 1000).fromNow()}   - No. - 00000001 + c/ + {thread.cid.slice(0, 8)}   [ @@ -531,7 +531,7 @@ const Board = ({ setBodyStyle }) => { @@ -555,8 +555,6 @@ const Board = ({ setBodyStyle }) => { {renderedComments.map(reply => { - counter++; - const counterString = counter.toString().padStart(8, '0'); return (
{'>>'}
@@ -598,11 +596,11 @@ const Board = ({ setBodyStyle }) => {   - 2 weeks ago + {moment(reply.timestamp * 1000).fromNow()}   - No. - {counterString} + c/ + {reply.cid.slice(0, 8)}
@@ -611,7 +609,7 @@ const Board = ({ setBodyStyle }) => { <>
- {`>>${counterString}`}{
} + {`>>${reply.cid.slice(0, 8)}`}{
}
{reply.content.slice(0, 1000)} (...) @@ -623,7 +621,7 @@ const Board = ({ setBodyStyle }) => { :
- {`>>${counterString}`}{
} + {`>>${reply.cid.slice(0, 8)}`}{
}
{reply.content}
) @@ -690,10 +688,10 @@ const Board = ({ setBodyStyle }) => { : null}
- 2 weeks ago + {moment(thread.timestamp * 1000).fromNow()}   - No. - 00000001 + c/ + {thread.cid.slice(0, 8)}
@@ -725,8 +723,6 @@ const Board = ({ setBodyStyle }) => {
{renderedComments.map(reply => { - counter++; - const counterString = counter.toString().padStart(8, '0'); return (
@@ -770,8 +766,8 @@ const Board = ({ setBodyStyle }) => { 2 weeks ago  - No. - {counterString} + c/ + {reply.cid.slice(0, 8)}
{reply.content ? ( @@ -779,7 +775,7 @@ const Board = ({ setBodyStyle }) => { <>
- {`>>${counterString}`}{
} + {`>>${reply.cid.slice(0, 8)}`}{
}
{reply.content.slice(0, 1000)} (...) @@ -789,9 +785,9 @@ const Board = ({ setBodyStyle }) => {  to view.
- :
+ :
- {`>>${counterString}`}{
} + {`>>${reply.cid.slice(0, 8)}`}{
}
{reply.content}
) diff --git a/src/components/ImageBanner.jsx b/src/components/ImageBanner.jsx index cc1c3825..a0a0f953 100644 --- a/src/components/ImageBanner.jsx +++ b/src/components/ImageBanner.jsx @@ -3,14 +3,27 @@ import { useLocation } from 'react-router-dom'; const ImageBanner = () => { const [currentImage, setCurrentImage] = useState(1); + const [isLoaded, setIsLoaded] = useState(false); const location = useLocation(); useEffect(() => { + setIsLoaded(false); setCurrentImage(Math.floor(Math.random() * 13) + 1); }, [location.key]); + useEffect(() => { + setIsLoaded(false); + const img = new Image(); + img.src = `/assets/banners/banner-${currentImage}.jpg?${Date.now()}`; + img.onload = () => { + setIsLoaded(true); + }; + }, [currentImage]); + return ( - + <> + {isLoaded && } + ); }; diff --git a/src/components/Thread.jsx b/src/components/Thread.jsx index a3158cbe..d2e0c7be 100644 --- a/src/components/Thread.jsx +++ b/src/components/Thread.jsx @@ -6,6 +6,7 @@ import { BoardContext } from '../App'; import { useComment } from '@plebbit/plebbit-react-hooks'; import ImageBanner from './ImageBanner'; import { Tooltip } from 'react-tooltip'; +import moment from 'moment'; const Thread = ({ setBodyStyle }) => { @@ -419,16 +420,16 @@ const Thread = ({ setBodyStyle }) => { })   - 2 weeks ago + {moment(comment.timestamp * 1000).fromNow()}   - No. - 00000001 + c/ + {comment.cid.slice(0, 8)} @@ -442,9 +443,6 @@ const Thread = ({ setBodyStyle }) => { Object.keys(comment.replies.pages.topAll.comments).map(() => { const renderedComments = renderComments(comment.replies.pages.topAll.comments); return renderedComments.map(reply => { - let counter = 1; - counter++; - const counterString = counter.toString().padStart(8, '0'); return (
{'>>'}
@@ -486,17 +484,17 @@ const Thread = ({ setBodyStyle }) => {   - 2 weeks ago + {moment(reply.timestamp * 1000).fromNow()}   - No. - {counterString} + c/ + {reply.cid.slice(0, 8)}
- {`>>${counterString}`}{
} + {`>>${reply.cid.slice(0, 8)}`}{
}
{reply.content}
@@ -563,10 +561,10 @@ const Thread = ({ setBodyStyle }) => { ) : null} - 2 weeks ago + {moment(comment.timestamp * 1000).fromNow()}   - No. - 00000001 + c/ + {comment.cid.slice(0, 8)}
@@ -588,9 +586,6 @@ const Thread = ({ setBodyStyle }) => { Object.keys(comment.replies.pages.topAll.comments).map(() => { const renderedComments = renderComments(comment.replies.pages.topAll.comments); return renderedComments.map(reply => { - let counter = 1; - counter++; - const counterString = counter.toString().padStart(8, '0'); return (
@@ -633,14 +628,14 @@ const Thread = ({ setBodyStyle }) => {
- 2 weeks ago  - No. - {counterString} + {moment(reply.timestamp * 1000).fromNow()}  + c/ + {reply.cid.slice(0, 8)}
- {`>>${counterString}`}{
} + {`>>${reply.cid.slice(0, 8)}`}{
}
{reply.content}
diff --git a/yarn.lock b/yarn.lock index 3ba5a984..71607efa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8566,6 +8566,11 @@ mkdirp@~0.5.1: dependencies: minimist "^1.2.6" +moment@^2.29.4: + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"