1- import { useStream } from 'bara'
2- import { EventEmitter } from 'fbemitter'
1+ import { createEmitter , useEmitter , useStream } from 'bara'
32
43import {
54 BaraReactTouchableOpacity ,
@@ -16,27 +15,17 @@ export interface BaraTouchableOpacityContext {
1615 onLongPress : ( data : BaraReactTouchableOpacity ) => void
1716}
1817
19- // Emitter handle the reference with React Component via Context API
20- const emitter = new EventEmitter ( )
21-
22- // Export and being consumed by any Touchable component
23- export const touchableOpacityContext : BaraTouchableOpacityContext = {
24- onPress : data => {
25- emitter . emit ( ON_TOUCHABLE_OPACITY_PRESS ( ) , data )
26- } ,
27- onPressIn : data => {
28- emitter . emit ( ON_TOUCHABLE_OPACITY_PRESS_IN ( ) , data )
29- } ,
30- onPressOut : data => {
31- emitter . emit ( ON_TOUCHABLE_OPACITY_PRESS_OUT ( ) , data )
32- } ,
33- onLongPress : data => {
34- emitter . emit ( ON_TOUCHABLE_OPACITY_LONG_PRESS ( ) , data )
35- } ,
36- }
37-
3818// BaraJS Stream Register
3919export function useTouchableOpacityStream ( ) {
20+ const emitter = createEmitter ( ( { setName, addEventType } ) => {
21+ setName ( 'dev.barajs.react.touchable-opacity.emitter' )
22+
23+ addEventType ( ON_TOUCHABLE_OPACITY_LONG_PRESS )
24+ addEventType ( ON_TOUCHABLE_OPACITY_PRESS )
25+ addEventType ( ON_TOUCHABLE_OPACITY_PRESS_IN )
26+ addEventType ( ON_TOUCHABLE_OPACITY_PRESS_OUT )
27+ } )
28+
4029 return useStream < BaraReactTouchableOpacity > (
4130 ( { setName, emit, addEventTypes } ) => {
4231 setName ( 'dev.barajs.react.touchableOpacity' )
@@ -48,28 +37,28 @@ export function useTouchableOpacityStream() {
4837 ] )
4938
5039 const onPressListener = emitter . addListener (
51- ON_TOUCHABLE_OPACITY_PRESS ( ) ,
40+ ON_TOUCHABLE_OPACITY_PRESS ,
5241 ( data : BaraReactTouchableOpacity ) => {
5342 emit ( ON_TOUCHABLE_OPACITY_PRESS , data )
5443 } ,
5544 )
5645
5746 const onPressInListener = emitter . addListener (
58- ON_TOUCHABLE_OPACITY_PRESS_IN ( ) ,
47+ ON_TOUCHABLE_OPACITY_PRESS_IN ,
5948 ( data : BaraReactTouchableOpacity ) => {
6049 emit ( ON_TOUCHABLE_OPACITY_PRESS_IN , data )
6150 } ,
6251 )
6352
6453 const onPressOutListener = emitter . addListener (
65- ON_TOUCHABLE_OPACITY_PRESS_OUT ( ) ,
54+ ON_TOUCHABLE_OPACITY_PRESS_OUT ,
6655 ( data : BaraReactTouchableOpacity ) => {
6756 emit ( ON_TOUCHABLE_OPACITY_PRESS_OUT , data )
6857 } ,
6958 )
7059
7160 const onLongPressListener = emitter . addListener (
72- ON_TOUCHABLE_OPACITY_LONG_PRESS ( ) ,
61+ ON_TOUCHABLE_OPACITY_LONG_PRESS ,
7362 ( data : BaraReactTouchableOpacity ) => {
7463 emit ( ON_TOUCHABLE_OPACITY_LONG_PRESS , data )
7564 } ,
@@ -80,8 +69,27 @@ export function useTouchableOpacityStream() {
8069 onPressInListener . remove ( )
8170 onPressOutListener . remove ( )
8271 onLongPressListener . remove ( )
83- emitter . removeAllListeners ( )
8472 }
8573 } ,
8674 )
8775}
76+
77+ // Export and being consumed by any Touchable component
78+ export const touchableOpacityContext : BaraTouchableOpacityContext = {
79+ onPress : data => {
80+ const emit = useEmitter ( ON_TOUCHABLE_OPACITY_PRESS )
81+ emit ! ( data )
82+ } ,
83+ onPressIn : data => {
84+ const emit = useEmitter ( ON_TOUCHABLE_OPACITY_PRESS_IN )
85+ emit ! ( data )
86+ } ,
87+ onPressOut : data => {
88+ const emit = useEmitter ( ON_TOUCHABLE_OPACITY_PRESS_OUT )
89+ emit ! ( data )
90+ } ,
91+ onLongPress : data => {
92+ const emit = useEmitter ( ON_TOUCHABLE_OPACITY_LONG_PRESS )
93+ emit ! ( data )
94+ } ,
95+ }
0 commit comments