mirror of
https://github.com/zhigang1992/react-navigation.git
synced 2026-02-10 17:23:42 +08:00
wip: removed code block that prevents event dispatch (#73)
This commit is contained in:
@@ -9,43 +9,16 @@ export default function getChildEventSubscriber(
|
||||
key,
|
||||
initialLastFocusEvent = 'didBlur'
|
||||
) {
|
||||
const actionSubscribers = new Set();
|
||||
const willFocusSubscribers = new Set();
|
||||
const didFocusSubscribers = new Set();
|
||||
const willBlurSubscribers = new Set();
|
||||
const didBlurSubscribers = new Set();
|
||||
const refocusSubscribers = new Set();
|
||||
const eventSubscribers = new Map();
|
||||
|
||||
const removeAll = () => {
|
||||
[
|
||||
actionSubscribers,
|
||||
willFocusSubscribers,
|
||||
didFocusSubscribers,
|
||||
willBlurSubscribers,
|
||||
didBlurSubscribers,
|
||||
refocusSubscribers,
|
||||
].forEach(set => set.clear());
|
||||
eventSubscribers.forEach(set => set.clear());
|
||||
|
||||
upstreamSubscribers.forEach(subs => subs && subs.remove());
|
||||
};
|
||||
|
||||
const getChildSubscribers = evtName => {
|
||||
switch (evtName) {
|
||||
case 'action':
|
||||
return actionSubscribers;
|
||||
case 'willFocus':
|
||||
return willFocusSubscribers;
|
||||
case 'didFocus':
|
||||
return didFocusSubscribers;
|
||||
case 'willBlur':
|
||||
return willBlurSubscribers;
|
||||
case 'didBlur':
|
||||
return didBlurSubscribers;
|
||||
case 'refocus':
|
||||
return refocusSubscribers;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
return eventSubscribers.get(evtName);
|
||||
};
|
||||
|
||||
const emit = (type, payload) => {
|
||||
@@ -70,11 +43,20 @@ export default function getChildEventSubscriber(
|
||||
'didBlur',
|
||||
'refocus',
|
||||
'action',
|
||||
'drawerOpen',
|
||||
'drawerClose',
|
||||
];
|
||||
|
||||
const upstreamSubscribers = upstreamEvents.map(eventName =>
|
||||
addListener(eventName, payload => {
|
||||
if (eventName === 'refocus') {
|
||||
if (!eventSubscribers.has(eventName)) {
|
||||
eventSubscribers.set(eventName, new Set());
|
||||
}
|
||||
if (
|
||||
eventName === 'refocus' ||
|
||||
eventName === 'drawerOpen' ||
|
||||
eventName === 'drawerClose'
|
||||
) {
|
||||
emit(eventName, payload);
|
||||
return;
|
||||
}
|
||||
@@ -184,12 +166,6 @@ export default function getChildEventSubscriber(
|
||||
return { remove };
|
||||
},
|
||||
emit(eventName, payload) {
|
||||
if (eventName !== 'refocus') {
|
||||
console.error(
|
||||
`navigation.emit only supports the 'refocus' event currently.`
|
||||
);
|
||||
return;
|
||||
}
|
||||
emit(eventName, payload);
|
||||
},
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user