1
1
package com .shopify .reactnative .skia ;
2
2
3
- import com .facebook .react .bridge .ReactApplicationContext ;
4
3
import com .facebook .react .bridge .ReactContext ;
5
4
import com .facebook .react .uimanager .BaseViewManager ;
6
5
import com .facebook .react .uimanager .LayoutShadowNode ;
10
9
import androidx .annotation .NonNull ;
11
10
import androidx .annotation .Nullable ;
12
11
12
+ import java .util .HashMap ;
13
+
13
14
public class RNSkiaViewManager extends BaseViewManager <SkiaDrawView , LayoutShadowNode > {
14
15
15
- private SkiaDrawView mView ;
16
- private int mNativeId ;
16
+ final private HashMap <SkiaDrawView , Integer > mViewMapping = new HashMap ();
17
17
18
18
@ NonNull
19
19
@ Override
@@ -38,9 +38,10 @@ public void updateExtraData(SkiaDrawView root, Object extraData) {
38
38
@ Override
39
39
public void setNativeId (@ NonNull SkiaDrawView view , @ Nullable String nativeId ) {
40
40
super .setNativeId (view , nativeId );
41
- mNativeId = Integer .parseInt (nativeId );
42
- RNSkiaModule skiaModule = ((ReactContext )mView .getContext ()).getNativeModule (RNSkiaModule .class );
43
- skiaModule .getSkiaManager ().register (mNativeId , mView );
41
+ int nativeIdResolved = Integer .parseInt (nativeId );
42
+ RNSkiaModule skiaModule = ((ReactContext )view .getContext ()).getNativeModule (RNSkiaModule .class );
43
+ skiaModule .getSkiaManager ().register (nativeIdResolved , view );
44
+ mViewMapping .put (view , nativeIdResolved );
44
45
}
45
46
46
47
@ ReactProp (name = "mode" )
@@ -57,14 +58,15 @@ public void setDebug(SkiaDrawView view, boolean show) {
57
58
public void onDropViewInstance (@ NonNull SkiaDrawView view ) {
58
59
super .onDropViewInstance (view );
59
60
RNSkiaModule skiaModule = ((ReactContext )view .getContext ()).getNativeModule (RNSkiaModule .class );
60
- skiaModule .getSkiaManager ().unregister (mNativeId );
61
+ Integer nativeId = mViewMapping .get (view );
62
+ skiaModule .getSkiaManager ().unregister (nativeId );
63
+ mViewMapping .remove (view );
61
64
view .onRemoved ();
62
65
}
63
66
64
67
@ NonNull
65
68
@ Override
66
69
protected SkiaDrawView createViewInstance (@ NonNull ThemedReactContext reactContext ) {
67
- mView = new SkiaDrawView (reactContext );
68
- return mView ;
70
+ return new SkiaDrawView (reactContext );
69
71
}
70
72
}
0 commit comments