fix(android): shared element with target name already added to transaction (#10793)

This commit is contained in:
Nathan Walker
2025-09-08 08:18:27 -07:00
committed by GitHub
parent adb5933523
commit e0e81268d6

View File

@ -262,9 +262,22 @@ export class PageTransition extends Transition {
newFragment.setSharedElementEnterTransition(transitionSet); newFragment.setSharedElementEnterTransition(transitionSet);
newFragment.setSharedElementReturnTransition(transitionSet); newFragment.setSharedElementReturnTransition(transitionSet);
// Guard against duplicate shared element names being added to the same transaction
const addedSharedElementNames = new Set();
presenting.forEach((v) => { presenting.forEach((v) => {
const name = v?.sharedTransitionTag;
const nativeView = v?.nativeView;
if (!name || !nativeView || addedSharedElementNames.has(name)) {
// prevent duplicates or invalid items
return;
}
setTransitionName(v); setTransitionName(v);
fragmentTransaction.addSharedElement(v.nativeView, v.sharedTransitionTag); try {
fragmentTransaction.addSharedElement(nativeView, name);
addedSharedElementNames.add(name);
} catch (err) {
// ignore duplicates or issues adding shared element to avoid crashing
}
}); });
if (toPage.isLoaded) { if (toPage.isLoaded) {
onPageLoaded(); onPageLoaded();