2021-05-23 14:07:18 +00:00
|
|
|
import React, { useMemo } from "react"
|
2021-05-18 17:15:53 +00:00
|
|
|
import BoxFullScrollable from "../base/BoxFullScrollable"
|
|
|
|
import SummaryTweet from "./SummaryTweet"
|
2021-05-20 09:39:40 +00:00
|
|
|
import Empty from "./Empty"
|
2021-05-23 03:03:41 +00:00
|
|
|
import useRepositoryViewer from "../../hooks/useRepositoryViewer"
|
|
|
|
import useStrings from "../../hooks/useStrings"
|
2021-05-18 17:15:53 +00:00
|
|
|
|
|
|
|
|
2021-05-23 03:03:41 +00:00
|
|
|
/**
|
|
|
|
* A {@link BoxFullScrollable} rendering all the tweets currently displayed in a RepositoryViewer as
|
|
|
|
* {@link SummaryTweet}s.
|
|
|
|
*
|
|
|
|
* @param props - Additional props to pass to the box.
|
|
|
|
* @returns {JSX.Element}
|
|
|
|
* @constructor
|
|
|
|
*/
|
2021-05-21 14:37:30 +00:00
|
|
|
export default function BoxRepositoryTweets({ ...props }) {
|
2021-05-23 03:03:41 +00:00
|
|
|
const strings = useStrings()
|
|
|
|
const { tweets } = useRepositoryViewer()
|
2021-05-18 17:15:53 +00:00
|
|
|
|
2021-05-23 14:07:18 +00:00
|
|
|
const content = useMemo(
|
|
|
|
() => {
|
|
|
|
if(tweets.length === 0) {
|
|
|
|
return <Empty/>
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
return tweets.map(tweet => <SummaryTweet key={tweet["snowflake"]} tweet={tweet}/>)
|
|
|
|
}
|
|
|
|
},
|
|
|
|
[tweets]
|
|
|
|
)
|
|
|
|
|
2021-05-20 09:39:40 +00:00
|
|
|
|
2021-05-18 17:15:53 +00:00
|
|
|
return (
|
2021-05-20 16:28:08 +00:00
|
|
|
<BoxFullScrollable header={strings.tweets} {...props}>
|
2021-05-20 09:39:40 +00:00
|
|
|
{content}
|
2021-05-18 17:15:53 +00:00
|
|
|
</BoxFullScrollable>
|
|
|
|
)
|
|
|
|
}
|