diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2018-05-28 02:42:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-28 02:42:06 +0200 |
commit | dfbadd68374ab5ddcaa75907261bd91da688fc6b (patch) | |
tree | dddd16a8c6e3e573e0bae584744ee62e11a5f065 | |
parent | 9bd23dc4e51ba47283a8e3a66cd94b4e624a5235 (diff) |
Replace recursion in status mapStateToProps (#7645)
-rw-r--r-- | app/javascript/mastodon/features/status/index.js | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js index 2e53dfa7e..505a88a3f 100644 --- a/app/javascript/mastodon/features/status/index.js +++ b/app/javascript/mastodon/features/status/index.js @@ -62,31 +62,28 @@ const makeMapStateToProps = () => { if (status) { ancestorsIds = ancestorsIds.withMutations(mutable => { - function addAncestor(id) { - if (id) { - const inReplyTo = state.getIn(['contexts', 'inReplyTos', id]); + let id = status.get('in_reply_to_id'); - mutable.unshift(id); - addAncestor(inReplyTo); - } + while (id) { + mutable.unshift(id); + id = state.getIn(['contexts', 'inReplyTos', id]); } - - addAncestor(status.get('in_reply_to_id')); }); descendantsIds = descendantsIds.withMutations(mutable => { - function addDescendantOf(id) { + const ids = [status.get('id')]; + + while (ids.length > 0) { + let id = ids.shift(); const replies = state.getIn(['contexts', 'replies', id]); if (replies) { replies.forEach(reply => { mutable.push(reply); - addDescendantOf(reply); + ids.unshift(reply); }); } } - - addDescendantOf(status.get('id')); }); } |