Replace recursion in status mapStateToProps (#7645)

This commit is contained in:
Eugen Rochko 2018-05-28 02:42:06 +02:00 committed by GitHub
parent 9bd23dc4e5
commit dfbadd6837
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 9 additions and 12 deletions

View File

@ -62,31 +62,28 @@ const makeMapStateToProps = () => {
if (status) { if (status) {
ancestorsIds = ancestorsIds.withMutations(mutable => { ancestorsIds = ancestorsIds.withMutations(mutable => {
function addAncestor(id) { let id = status.get('in_reply_to_id');
if (id) {
const inReplyTo = state.getIn(['contexts', 'inReplyTos', id]);
mutable.unshift(id); while (id) {
addAncestor(inReplyTo); mutable.unshift(id);
} id = state.getIn(['contexts', 'inReplyTos', id]);
} }
addAncestor(status.get('in_reply_to_id'));
}); });
descendantsIds = descendantsIds.withMutations(mutable => { 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]); const replies = state.getIn(['contexts', 'replies', id]);
if (replies) { if (replies) {
replies.forEach(reply => { replies.forEach(reply => {
mutable.push(reply); mutable.push(reply);
addDescendantOf(reply); ids.unshift(reply);
}); });
} }
} }
addDescendantOf(status.get('id'));
}); });
} }