Get author profile page
Get author profile page in Bitsocial React Hooks. Usage, options, and examples.
// NOTE: you must have a comment cid from the author to load his profile page
// e.g. the page url would be /#/u/<authorAddress>/c/<commentCid>
const authorResult = useAuthor({ commentCid, authorAddress });
const { imageUrl } = useAuthorAvatar({ author: authorResult.author });
const { authorComments, lastCommentCid, hasMore, loadMore } = useAuthorComments({
commentCid,
authorAddress,
});
// result
if (authorResult.state === "succeeded") {
console.log("Succeeded getting author", authorResult.author);
}
if (state === "failed") {
console.log("Failed getting author", authorResult.error.message);
}
// listing the author comments with infinite scroll
import { Virtuoso } from "react-virtuoso";
<Virtuoso
data={authorComments}
itemContent={(index, comment) => <Comment index={index} comment={comment} />}
useWindowScroll={true}
components={{ Footer: hasMore ? () => <Loading /> : undefined }}
endReached={loadMore}
increaseViewportBy={{ bottom: 600, top: 600 }}
/>;
// it is recommended to always redirect the user to the last known comment cid
// in case they want to share the url with someone, the author's comments
// will load faster when using the last comment cid
import { useParams } from "react-router-dom";
const params = useParams();
useEffect(() => {
if (lastCommentCid && params.comentCid !== lastCommentCid) {
history.push(`/u/${params.authorAddress}/c/${lastCommentCid}`);
}
}, [lastCommentCid]);
// search an author's comments
const createSearchFilter = (searchTerm) => ({
filter: (comment) => comment.title?.includes(searchTerm) || comment.content?.includes(searchTerm),
key: `includes-${searchTerm}`, // required key to cache the filter
});
const filter = createSearchFilter("bitcoin");
const { authorComments, lastCommentCid, hasMore, loadMore } = useAuthorComments({
commentCid,
authorAddress,
filter,
});