Prevent infinite loop of QT of QT of QT

Use case: Status A QT status B, then status B QT status A = recursive QT
This commit is contained in:
Lim Chee Aun 2023-04-25 13:03:26 +08:00
parent 48c86d7090
commit 535715cfe8

View file

@ -157,7 +157,7 @@ function Status({
_filtered, _filtered,
} = status; } = status;
console.debug('RENDER Status', id, status?.account.displayName); console.debug('RENDER Status', id, status?.account.displayName, quoted);
const debugHover = (e) => { const debugHover = (e) => {
if (e.shiftKey) { if (e.shiftKey) {
@ -967,7 +967,7 @@ function Status({
}), }),
}} }}
/> />
<QuoteStatuses id={id} instance={instance} /> <QuoteStatuses id={id} instance={instance} level={quoted} />
</div> </div>
{!!poll && ( {!!poll && (
<Poll <Poll
@ -1936,12 +1936,13 @@ function FilteredStatus({ status, filterInfo, instance, containerProps = {} }) {
); );
} }
const QuoteStatuses = memo(({ id, instance }) => { const QuoteStatuses = memo(({ id, instance, level = 0 }) => {
const snapStates = useSnapshot(states); const snapStates = useSnapshot(states);
const sKey = statusKey(id, instance); const sKey = statusKey(id, instance);
const quotes = snapStates.statusQuotes[sKey]; const quotes = snapStates.statusQuotes[sKey];
if (!quotes?.length) return; if (!quotes?.length) return;
if (level > 2) return;
return quotes.map((q) => { return quotes.map((q) => {
return ( return (
@ -1953,7 +1954,7 @@ const QuoteStatuses = memo(({ id, instance }) => {
statusID={q.id} statusID={q.id}
instance={q.instance} instance={q.instance}
size="s" size="s"
quoted quoted={level + 1}
previewMode previewMode
/> />
</Link> </Link>