Skip to content

Commit

Permalink
[fizz][external-runtime] Fix: process mutation records before disconn…
Browse files Browse the repository at this point in the history
…ecting
  • Loading branch information
mofeiZ committed Feb 15, 2023
1 parent fccf3a9 commit 7cf162c
Showing 1 changed file with 7 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ if (document.readyState === 'loading') {
installFizzInstrObserver(document.body);
}
handleExistingNodes();
// We can call disconnect without takeRecord here,
// since we only expect a single document.body
domBodyObserver.disconnect();
}
});
Expand All @@ -54,7 +56,7 @@ function handleExistingNodes() {
}

function installFizzInstrObserver(target /*: Node */) {
const fizzInstrObserver = new MutationObserver(mutations => {
const handleMutations = (mutations /*: Array<MutationRecord> */) => {
for (let i = 0; i < mutations.length; i++) {
const addedNodes = mutations[i].addedNodes;
for (let j = 0; j < addedNodes.length; j++) {
Expand All @@ -63,13 +65,16 @@ function installFizzInstrObserver(target /*: Node */) {
}
}
}
});
};

const fizzInstrObserver = new MutationObserver(handleMutations);
// We assume that instruction data nodes are eventually appended to the
// body, even if Fizz is streaming to a shell / subtree.
fizzInstrObserver.observe(target, {
childList: true,
});
window.addEventListener('DOMContentLoaded', () => {
handleMutations(fizzInstrObserver.takeRecords());
fizzInstrObserver.disconnect();
});
}
Expand Down

0 comments on commit 7cf162c

Please sign in to comment.