@trycourier/courier-react-native 2.0.0-beta6 → 2.0.0-beta7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -102,6 +102,7 @@ dependencies {
102
102
 
103
103
  // Courier Core SDK
104
104
  api 'com.github.trycourier:courier-android:2.0.32'
105
+ api 'androidx.recyclerview:recyclerview:1.3.1'
105
106
 
106
107
  }
107
108
 
@@ -1,42 +1,160 @@
1
1
  package com.courierreactnative
2
2
 
3
+ import android.content.Context
3
4
  import android.graphics.Color
5
+ import android.graphics.Typeface
4
6
  import android.view.View
5
- import android.widget.FrameLayout
7
+ import androidx.recyclerview.widget.DividerItemDecoration
6
8
  import com.courier.android.inbox.CourierInbox
9
+ import com.courier.android.inbox.CourierInboxButtonStyles
10
+ import com.courier.android.inbox.CourierInboxFont
11
+ import com.courier.android.inbox.CourierInboxTheme
12
+ import com.facebook.react.bridge.Arguments
7
13
  import com.facebook.react.bridge.ReadableMap
8
- import com.facebook.react.bridge.UiThreadUtil
9
14
  import com.facebook.react.uimanager.SimpleViewManager
10
15
  import com.facebook.react.uimanager.ThemedReactContext
11
16
  import com.facebook.react.uimanager.annotations.ReactProp
12
17
 
13
- class CourierReactNativeViewManager : SimpleViewManager<FrameLayout>() {
18
+
19
+ class CourierReactNativeViewManager : SimpleViewManager<CourierInbox>() {
20
+
21
+ private companion object {
22
+ const val ON_CLICK_MESSAGE_AT_INDEX = "courierClickMessageAtIndex"
23
+ const val ON_CLICK_ACTION_AT_INDEX = "courierClickActionAtIndex"
24
+ const val ON_SCROLL = "courierScrollInbox"
25
+ }
14
26
 
15
27
  override fun getName() = "CourierReactNativeView"
16
28
 
17
- override fun createViewInstance(reactContext: ThemedReactContext): FrameLayout {
18
- return FrameLayout(reactContext)
29
+ override fun createViewInstance(reactContext: ThemedReactContext): CourierInbox {
30
+ return CourierInbox(reactContext)
31
+ }
32
+
33
+ private val View.reactContext: ThemedReactContext get() = context as ThemedReactContext
34
+
35
+ @ReactProp(name = "onClickInboxMessageAtIndex")
36
+ fun setOnClickInboxMessageAtIndex(view: CourierInbox, callback: Boolean) {
37
+
38
+ view.setOnClickMessageListener { message, index ->
39
+
40
+ val map = Arguments.createMap()
41
+ map.putMap("message", message.toWritableMap())
42
+ map.putInt("index", index)
43
+
44
+ view.reactContext.sendEvent(ON_CLICK_MESSAGE_AT_INDEX, map)
45
+
46
+ }
47
+
48
+ }
49
+
50
+ @ReactProp(name = "onClickInboxActionForMessageAtIndex")
51
+ fun setOnClickInboxActionForMessageAtIndex(view: CourierInbox, callback: Boolean) {
52
+
53
+ view.setOnClickActionListener { action, message, index ->
54
+
55
+ val map = Arguments.createMap()
56
+ map.putMap("action", action.toWritableMap())
57
+ map.putMap("message", message.toWritableMap())
58
+ map.putInt("index", index)
59
+
60
+ view.reactContext.sendEvent(ON_CLICK_ACTION_AT_INDEX, map)
61
+
62
+ }
63
+
64
+ }
65
+
66
+ @ReactProp(name = "onScrollInbox")
67
+ fun setOnScrollInbox(view: CourierInbox, callback: Boolean) {
68
+
69
+ view.setOnScrollInboxListener { offsetInDp ->
70
+
71
+ val offset = Arguments.createMap()
72
+ offset.putInt("y", offsetInDp)
73
+ offset.putInt("x", 0)
74
+
75
+ val map = Arguments.createMap()
76
+ map.putMap("contentOffset", offset)
77
+
78
+ view.reactContext.sendEvent(ON_SCROLL, map)
79
+
80
+ }
81
+
19
82
  }
20
83
 
21
84
  @ReactProp(name = "theme")
22
- fun setTheme(view: FrameLayout, theme: ReadableMap) {
85
+ fun setTheme(view: CourierInbox, theme: ReadableMap) {
86
+ view.lightTheme = theme.getMap("light")?.toTheme(view) ?: CourierInboxTheme.DEFAULT_LIGHT
87
+ view.darkTheme = theme.getMap("dark")?.toTheme(view) ?: CourierInboxTheme.DEFAULT_DARK
88
+ }
89
+
90
+ private fun ReadableMap.toTheme(view: View): CourierInboxTheme {
23
91
 
24
- view.removeAllViews()
92
+ val android = getMap("android")
93
+ val dividerItemDecoration = android?.getString("dividerItemDecoration")
25
94
 
26
- // Create the view
27
- val courierInbox = CourierInbox(view.context)
95
+ val unreadIndicatorBarColor = getString("unreadIndicatorBarColor")
96
+ val loadingIndicatorColor = getString("loadingIndicatorColor")
28
97
 
29
- // Set the layout params
30
- val layoutParams = FrameLayout.LayoutParams(
31
- FrameLayout.LayoutParams.MATCH_PARENT,
32
- FrameLayout.LayoutParams.MATCH_PARENT
98
+ val titleFont = getMap("titleFont")
99
+ val timeFont = getMap("timeFont")
100
+ val bodyFont = getMap("bodyFont")
101
+ val detailTitleFont = getMap("detailTitleFont")
102
+ val buttonStyles = getMap("buttonStyles")
103
+
104
+ val context = view.context
105
+
106
+ return CourierInboxTheme(
107
+ dividerItemDecoration = dividerItemDecoration?.toDivider(context),
108
+ unreadIndicatorBarColor = unreadIndicatorBarColor?.toColor(),
109
+ loadingIndicatorColor = loadingIndicatorColor?.toColor(),
110
+ titleFont = titleFont?.toFont(context) ?: CourierInboxFont(),
111
+ timeFont = timeFont?.toFont(context) ?: CourierInboxFont(),
112
+ bodyFont = bodyFont?.toFont(context) ?: CourierInboxFont(),
113
+ detailTitleFont = detailTitleFont?.toFont(context) ?: CourierInboxFont(),
114
+ buttonStyles = buttonStyles?.toButtonStyles(context) ?: CourierInboxButtonStyles()
33
115
  )
34
- courierInbox.layoutParams = layoutParams
35
116
 
36
- // Add the view to the parent
37
- view.addView(courierInbox)
117
+ }
38
118
 
39
- view.setBackgroundColor(Color.parseColor(theme.getString("color")))
119
+ private fun String.toColor(): Int = Color.parseColor(this)
120
+
121
+ private fun String.toFont(context: Context): Typeface? {
122
+ return try {
123
+ val assetManager = context.assets
124
+ Typeface.createFromAsset(assetManager, this)
125
+ } catch (e: Exception) {
126
+ e.printStackTrace()
127
+ null
128
+ }
129
+ }
130
+
131
+ private fun String.toDivider(context: Context): DividerItemDecoration? = if (this == "vertical") DividerItemDecoration(context, DividerItemDecoration.VERTICAL) else null
132
+
133
+ private fun ReadableMap.toFont(context: Context): CourierInboxFont {
134
+
135
+ val typeface = getString("family")
136
+ val size = if (isNull("size")) null else getDouble("size")
137
+ val color = getString("color")
138
+
139
+ return CourierInboxFont(
140
+ typeface = typeface?.toFont(context),
141
+ color = color?.toColor(),
142
+ sizeInSp = size?.toInt()
143
+ )
144
+
145
+ }
146
+
147
+ private fun ReadableMap.toButtonStyles(context: Context): CourierInboxButtonStyles {
148
+
149
+ val font = getMap("font")
150
+ val backgroundColor = getString("backgroundColor")
151
+ val cornerRadius = if (isNull("cornerRadius")) null else getDouble("cornerRadius")
152
+
153
+ return CourierInboxButtonStyles(
154
+ font = font?.toFont(context),
155
+ backgroundColor = backgroundColor?.toColor(),
156
+ cornerRadiusInDp = cornerRadius?.toInt()
157
+ )
40
158
 
41
159
  }
42
160
 
@@ -4,9 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.CourierInboxView = void 0;
7
- var _react = _interopRequireDefault(require("react"));
7
+ var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
10
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
10
11
  const ComponentName = 'CourierReactNativeView';
11
12
  const LINKING_ERROR = `The package '@trycourier/courier-react-native' doesn't seem to be linked. Make sure: \n\n` + _reactNative.Platform.select({
12
13
  ios: "- You have run 'pod install'\n",
@@ -16,27 +17,59 @@ const CourierInbox = _reactNative.UIManager.getViewManagerConfig(ComponentName)
16
17
  throw new Error(LINKING_ERROR);
17
18
  };
18
19
  const CourierInboxView = props => {
20
+ let onClickInboxMessageAtIndexListener = undefined;
21
+ let onClickInboxActionForMessageAtIndexListener = undefined;
22
+ let onScrollInboxListener = undefined;
23
+ (0, _react.useEffect)(() => {
24
+ return () => {
25
+ var _onClickInboxMessageA, _onClickInboxActionFo, _onScrollInboxListene;
26
+ (_onClickInboxMessageA = onClickInboxMessageAtIndexListener) === null || _onClickInboxMessageA === void 0 ? void 0 : _onClickInboxMessageA.remove();
27
+ (_onClickInboxActionFo = onClickInboxActionForMessageAtIndexListener) === null || _onClickInboxActionFo === void 0 ? void 0 : _onClickInboxActionFo.remove();
28
+ (_onScrollInboxListene = onScrollInboxListener) === null || _onScrollInboxListene === void 0 ? void 0 : _onScrollInboxListene.remove();
29
+ };
30
+ }, []);
31
+ (0, _react.useEffect)(() => {
32
+ var _onClickInboxMessageA2;
33
+ (_onClickInboxMessageA2 = onClickInboxMessageAtIndexListener) === null || _onClickInboxMessageA2 === void 0 ? void 0 : _onClickInboxMessageA2.remove();
34
+ if (_reactNative.Platform.OS === 'android' && props.onClickInboxMessageAtIndex) {
35
+ onClickInboxMessageAtIndexListener = _reactNative.DeviceEventEmitter.addListener('courierClickMessageAtIndex', onClickInboxMessageAtIndex);
36
+ }
37
+ }, [props.onClickInboxMessageAtIndex]);
19
38
  const onClickInboxMessageAtIndex = event => {
20
39
  // Parse the native event data
21
40
  if (props.onClickInboxMessageAtIndex) {
22
- const index = event.nativeEvent["index"];
23
- const message = event.nativeEvent["message"];
41
+ const index = event["index"];
42
+ const message = event["message"];
24
43
  props.onClickInboxMessageAtIndex(message, index);
25
44
  }
26
45
  };
46
+ (0, _react.useEffect)(() => {
47
+ var _onClickInboxActionFo2;
48
+ (_onClickInboxActionFo2 = onClickInboxActionForMessageAtIndexListener) === null || _onClickInboxActionFo2 === void 0 ? void 0 : _onClickInboxActionFo2.remove();
49
+ if (_reactNative.Platform.OS === 'android' && props.onClickInboxActionForMessageAtIndex) {
50
+ onClickInboxActionForMessageAtIndexListener = _reactNative.DeviceEventEmitter.addListener('courierClickActionAtIndex', onClickInboxActionForMessageAtIndex);
51
+ }
52
+ }, [props.onClickInboxActionForMessageAtIndex]);
27
53
  const onClickInboxActionForMessageAtIndex = event => {
28
54
  // Parse the native event data
29
55
  if (props.onClickInboxActionForMessageAtIndex) {
30
- const index = event.nativeEvent["index"];
31
- const action = event.nativeEvent["action"];
32
- const message = event.nativeEvent["message"];
56
+ const index = event["index"];
57
+ const action = event["action"];
58
+ const message = event["message"];
33
59
  props.onClickInboxActionForMessageAtIndex(action, message, index);
34
60
  }
35
61
  };
62
+ (0, _react.useEffect)(() => {
63
+ var _onScrollInboxListene2;
64
+ (_onScrollInboxListene2 = onScrollInboxListener) === null || _onScrollInboxListene2 === void 0 ? void 0 : _onScrollInboxListene2.remove();
65
+ if (_reactNative.Platform.OS === 'android' && props.onScrollInbox) {
66
+ onScrollInboxListener = _reactNative.DeviceEventEmitter.addListener('courierScrollInbox', onScrollInbox);
67
+ }
68
+ }, [props.onScrollInbox]);
36
69
  const onScrollInbox = event => {
37
70
  // Parse the native event data
38
71
  if (props.onScrollInbox) {
39
- const contentOffset = event.nativeEvent["contentOffset"];
72
+ const contentOffset = event["contentOffset"];
40
73
  props.onScrollInbox(contentOffset["y"], contentOffset["x"]);
41
74
  }
42
75
  };
@@ -45,9 +78,9 @@ const CourierInboxView = props => {
45
78
  light: undefined,
46
79
  dark: undefined
47
80
  },
48
- onClickInboxMessageAtIndex: onClickInboxMessageAtIndex,
49
- onClickInboxActionForMessageAtIndex: onClickInboxActionForMessageAtIndex,
50
- onScrollInbox: onScrollInbox,
81
+ onClickInboxMessageAtIndex: event => onClickInboxMessageAtIndex(event.nativeEvent),
82
+ onClickInboxActionForMessageAtIndex: event => onClickInboxActionForMessageAtIndex(event.nativeEvent),
83
+ onScrollInbox: event => onScrollInbox(event.nativeEvent),
51
84
  style: props.style
52
85
  });
53
86
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","obj","__esModule","default","ComponentName","LINKING_ERROR","Platform","select","ios","CourierInbox","UIManager","getViewManagerConfig","requireNativeComponent","Error","CourierInboxView","props","onClickInboxMessageAtIndex","event","index","nativeEvent","message","onClickInboxActionForMessageAtIndex","action","onScrollInbox","contentOffset","createElement","theme","light","undefined","dark","style","exports"],"sourceRoot":"../../../src","sources":["views/CourierInboxView.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAAsF,SAAAD,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAgBtF,MAAMG,aAAa,GAAG,wBAAwB;AAE9C,MAAMC,aAAa,GAChB,2FAA0F,GAC3FC,qBAAQ,CAACC,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEL,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMM,YAAY,GAChBC,sBAAS,CAACC,oBAAoB,CAACP,aAAa,CAAC,IAAI,IAAI,GACjD,IAAAQ,mCAAsB,EAAwBR,aAAa,CAAC,GAC5D,MAAM;EACJ,MAAM,IAAIS,KAAK,CAACR,aAAa,CAAC;AAChC,CAAC;AAEA,MAAMS,gBAAgB,GAAIC,KAA4B,IAAK;EAEhE,MAAMC,0BAA0B,GAAIC,KAAU,IAAK;IAEjD;IACA,IAAIF,KAAK,CAACC,0BAA0B,EAAE;MAEpC,MAAME,KAAK,GAAGD,KAAK,CAACE,WAAW,CAAC,OAAO,CAAC;MACxC,MAAMC,OAAO,GAAGH,KAAK,CAACE,WAAW,CAAC,SAAS,CAAiB;MAE5DJ,KAAK,CAACC,0BAA0B,CAACI,OAAO,EAAEF,KAAK,CAAC;IAElD;EAEF,CAAC;EAED,MAAMG,mCAAmC,GAAIJ,KAAU,IAAK;IAE1D;IACA,IAAIF,KAAK,CAACM,mCAAmC,EAAE;MAE7C,MAAMH,KAAK,GAAGD,KAAK,CAACE,WAAW,CAAC,OAAO,CAAC;MACxC,MAAMG,MAAM,GAAGL,KAAK,CAACE,WAAW,CAAC,QAAQ,CAAgB;MACzD,MAAMC,OAAO,GAAGH,KAAK,CAACE,WAAW,CAAC,SAAS,CAAiB;MAE5DJ,KAAK,CAACM,mCAAmC,CAACC,MAAM,EAAEF,OAAO,EAAEF,KAAK,CAAC;IAEnE;EAEF,CAAC;EAED,MAAMK,aAAa,GAAIN,KAAU,IAAK;IAEpC;IACA,IAAIF,KAAK,CAACQ,aAAa,EAAE;MAEvB,MAAMC,aAAa,GAAGP,KAAK,CAACE,WAAW,CAAC,eAAe,CAAC;MACxDJ,KAAK,CAACQ,aAAa,CAACC,aAAa,CAAC,GAAG,CAAC,EAAEA,aAAa,CAAC,GAAG,CAAC,CAAC;IAE7D;EAEF,CAAC;EAED,oBACE3B,MAAA,CAAAM,OAAA,CAAAsB,aAAA,CAAChB,YAAY;IACXiB,KAAK,EAAEX,KAAK,CAACW,KAAK,IAAI;MAAEC,KAAK,EAAEC,SAAS;MAAEC,IAAI,EAAED;IAAU,CAAE;IAC5DZ,0BAA0B,EAAEA,0BAA2B;IACvDK,mCAAmC,EAAEA,mCAAoC;IACzEE,aAAa,EAAEA,aAAc;IAC7BO,KAAK,EAAEf,KAAK,CAACe;EAAM,CACpB,CAAC;AAGN,CAAC;AAAAC,OAAA,CAAAjB,gBAAA,GAAAA,gBAAA"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","ComponentName","LINKING_ERROR","Platform","select","ios","CourierInbox","UIManager","getViewManagerConfig","requireNativeComponent","Error","CourierInboxView","props","onClickInboxMessageAtIndexListener","undefined","onClickInboxActionForMessageAtIndexListener","onScrollInboxListener","useEffect","_onClickInboxMessageA","_onClickInboxActionFo","_onScrollInboxListene","remove","_onClickInboxMessageA2","OS","onClickInboxMessageAtIndex","DeviceEventEmitter","addListener","event","index","message","_onClickInboxActionFo2","onClickInboxActionForMessageAtIndex","action","_onScrollInboxListene2","onScrollInbox","contentOffset","createElement","theme","light","dark","nativeEvent","style","exports"],"sourceRoot":"../../../src","sources":["views/CourierInboxView.tsx"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import React from "react";
2
- import { Platform, requireNativeComponent, UIManager } from "react-native";
1
+ import React, { useEffect } from "react";
2
+ import { Platform, requireNativeComponent, UIManager, DeviceEventEmitter } from "react-native";
3
3
  const ComponentName = 'CourierReactNativeView';
4
4
  const LINKING_ERROR = `The package '@trycourier/courier-react-native' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
5
5
  ios: "- You have run 'pod install'\n",
@@ -9,27 +9,59 @@ const CourierInbox = UIManager.getViewManagerConfig(ComponentName) != null ? req
9
9
  throw new Error(LINKING_ERROR);
10
10
  };
11
11
  export const CourierInboxView = props => {
12
+ let onClickInboxMessageAtIndexListener = undefined;
13
+ let onClickInboxActionForMessageAtIndexListener = undefined;
14
+ let onScrollInboxListener = undefined;
15
+ useEffect(() => {
16
+ return () => {
17
+ var _onClickInboxMessageA, _onClickInboxActionFo, _onScrollInboxListene;
18
+ (_onClickInboxMessageA = onClickInboxMessageAtIndexListener) === null || _onClickInboxMessageA === void 0 ? void 0 : _onClickInboxMessageA.remove();
19
+ (_onClickInboxActionFo = onClickInboxActionForMessageAtIndexListener) === null || _onClickInboxActionFo === void 0 ? void 0 : _onClickInboxActionFo.remove();
20
+ (_onScrollInboxListene = onScrollInboxListener) === null || _onScrollInboxListene === void 0 ? void 0 : _onScrollInboxListene.remove();
21
+ };
22
+ }, []);
23
+ useEffect(() => {
24
+ var _onClickInboxMessageA2;
25
+ (_onClickInboxMessageA2 = onClickInboxMessageAtIndexListener) === null || _onClickInboxMessageA2 === void 0 ? void 0 : _onClickInboxMessageA2.remove();
26
+ if (Platform.OS === 'android' && props.onClickInboxMessageAtIndex) {
27
+ onClickInboxMessageAtIndexListener = DeviceEventEmitter.addListener('courierClickMessageAtIndex', onClickInboxMessageAtIndex);
28
+ }
29
+ }, [props.onClickInboxMessageAtIndex]);
12
30
  const onClickInboxMessageAtIndex = event => {
13
31
  // Parse the native event data
14
32
  if (props.onClickInboxMessageAtIndex) {
15
- const index = event.nativeEvent["index"];
16
- const message = event.nativeEvent["message"];
33
+ const index = event["index"];
34
+ const message = event["message"];
17
35
  props.onClickInboxMessageAtIndex(message, index);
18
36
  }
19
37
  };
38
+ useEffect(() => {
39
+ var _onClickInboxActionFo2;
40
+ (_onClickInboxActionFo2 = onClickInboxActionForMessageAtIndexListener) === null || _onClickInboxActionFo2 === void 0 ? void 0 : _onClickInboxActionFo2.remove();
41
+ if (Platform.OS === 'android' && props.onClickInboxActionForMessageAtIndex) {
42
+ onClickInboxActionForMessageAtIndexListener = DeviceEventEmitter.addListener('courierClickActionAtIndex', onClickInboxActionForMessageAtIndex);
43
+ }
44
+ }, [props.onClickInboxActionForMessageAtIndex]);
20
45
  const onClickInboxActionForMessageAtIndex = event => {
21
46
  // Parse the native event data
22
47
  if (props.onClickInboxActionForMessageAtIndex) {
23
- const index = event.nativeEvent["index"];
24
- const action = event.nativeEvent["action"];
25
- const message = event.nativeEvent["message"];
48
+ const index = event["index"];
49
+ const action = event["action"];
50
+ const message = event["message"];
26
51
  props.onClickInboxActionForMessageAtIndex(action, message, index);
27
52
  }
28
53
  };
54
+ useEffect(() => {
55
+ var _onScrollInboxListene2;
56
+ (_onScrollInboxListene2 = onScrollInboxListener) === null || _onScrollInboxListene2 === void 0 ? void 0 : _onScrollInboxListene2.remove();
57
+ if (Platform.OS === 'android' && props.onScrollInbox) {
58
+ onScrollInboxListener = DeviceEventEmitter.addListener('courierScrollInbox', onScrollInbox);
59
+ }
60
+ }, [props.onScrollInbox]);
29
61
  const onScrollInbox = event => {
30
62
  // Parse the native event data
31
63
  if (props.onScrollInbox) {
32
- const contentOffset = event.nativeEvent["contentOffset"];
64
+ const contentOffset = event["contentOffset"];
33
65
  props.onScrollInbox(contentOffset["y"], contentOffset["x"]);
34
66
  }
35
67
  };
@@ -38,9 +70,9 @@ export const CourierInboxView = props => {
38
70
  light: undefined,
39
71
  dark: undefined
40
72
  },
41
- onClickInboxMessageAtIndex: onClickInboxMessageAtIndex,
42
- onClickInboxActionForMessageAtIndex: onClickInboxActionForMessageAtIndex,
43
- onScrollInbox: onScrollInbox,
73
+ onClickInboxMessageAtIndex: event => onClickInboxMessageAtIndex(event.nativeEvent),
74
+ onClickInboxActionForMessageAtIndex: event => onClickInboxActionForMessageAtIndex(event.nativeEvent),
75
+ onScrollInbox: event => onScrollInbox(event.nativeEvent),
44
76
  style: props.style
45
77
  });
46
78
  };
@@ -1 +1 @@
1
- {"version":3,"names":["React","Platform","requireNativeComponent","UIManager","ComponentName","LINKING_ERROR","select","ios","default","CourierInbox","getViewManagerConfig","Error","CourierInboxView","props","onClickInboxMessageAtIndex","event","index","nativeEvent","message","onClickInboxActionForMessageAtIndex","action","onScrollInbox","contentOffset","createElement","theme","light","undefined","dark","style"],"sourceRoot":"../../../src","sources":["views/CourierInboxView.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,QAAQ,EAAEC,sBAAsB,EAAEC,SAAS,QAAmB,cAAc;AAgBrF,MAAMC,aAAa,GAAG,wBAAwB;AAE9C,MAAMC,aAAa,GAChB,2FAA0F,GAC3FJ,QAAQ,CAACK,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,YAAY,GAChBN,SAAS,CAACO,oBAAoB,CAACN,aAAa,CAAC,IAAI,IAAI,GACjDF,sBAAsB,CAAwBE,aAAa,CAAC,GAC5D,MAAM;EACJ,MAAM,IAAIO,KAAK,CAACN,aAAa,CAAC;AAChC,CAAC;AAEP,OAAO,MAAMO,gBAAgB,GAAIC,KAA4B,IAAK;EAEhE,MAAMC,0BAA0B,GAAIC,KAAU,IAAK;IAEjD;IACA,IAAIF,KAAK,CAACC,0BAA0B,EAAE;MAEpC,MAAME,KAAK,GAAGD,KAAK,CAACE,WAAW,CAAC,OAAO,CAAC;MACxC,MAAMC,OAAO,GAAGH,KAAK,CAACE,WAAW,CAAC,SAAS,CAAiB;MAE5DJ,KAAK,CAACC,0BAA0B,CAACI,OAAO,EAAEF,KAAK,CAAC;IAElD;EAEF,CAAC;EAED,MAAMG,mCAAmC,GAAIJ,KAAU,IAAK;IAE1D;IACA,IAAIF,KAAK,CAACM,mCAAmC,EAAE;MAE7C,MAAMH,KAAK,GAAGD,KAAK,CAACE,WAAW,CAAC,OAAO,CAAC;MACxC,MAAMG,MAAM,GAAGL,KAAK,CAACE,WAAW,CAAC,QAAQ,CAAgB;MACzD,MAAMC,OAAO,GAAGH,KAAK,CAACE,WAAW,CAAC,SAAS,CAAiB;MAE5DJ,KAAK,CAACM,mCAAmC,CAACC,MAAM,EAAEF,OAAO,EAAEF,KAAK,CAAC;IAEnE;EAEF,CAAC;EAED,MAAMK,aAAa,GAAIN,KAAU,IAAK;IAEpC;IACA,IAAIF,KAAK,CAACQ,aAAa,EAAE;MAEvB,MAAMC,aAAa,GAAGP,KAAK,CAACE,WAAW,CAAC,eAAe,CAAC;MACxDJ,KAAK,CAACQ,aAAa,CAACC,aAAa,CAAC,GAAG,CAAC,EAAEA,aAAa,CAAC,GAAG,CAAC,CAAC;IAE7D;EAEF,CAAC;EAED,oBACEtB,KAAA,CAAAuB,aAAA,CAACd,YAAY;IACXe,KAAK,EAAEX,KAAK,CAACW,KAAK,IAAI;MAAEC,KAAK,EAAEC,SAAS;MAAEC,IAAI,EAAED;IAAU,CAAE;IAC5DZ,0BAA0B,EAAEA,0BAA2B;IACvDK,mCAAmC,EAAEA,mCAAoC;IACzEE,aAAa,EAAEA,aAAc;IAC7BO,KAAK,EAAEf,KAAK,CAACe;EAAM,CACpB,CAAC;AAGN,CAAC"}
1
+ {"version":3,"names":["React","useEffect","Platform","requireNativeComponent","UIManager","DeviceEventEmitter","ComponentName","LINKING_ERROR","select","ios","default","CourierInbox","getViewManagerConfig","Error","CourierInboxView","props","onClickInboxMessageAtIndexListener","undefined","onClickInboxActionForMessageAtIndexListener","onScrollInboxListener","_onClickInboxMessageA","_onClickInboxActionFo","_onScrollInboxListene","remove","_onClickInboxMessageA2","OS","onClickInboxMessageAtIndex","addListener","event","index","message","_onClickInboxActionFo2","onClickInboxActionForMessageAtIndex","action","_onScrollInboxListene2","onScrollInbox","contentOffset","createElement","theme","light","dark","nativeEvent","style"],"sourceRoot":"../../../src","sources":["views/CourierInboxView.tsx"],"mappings":"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"}
@@ -30,5 +30,8 @@ export default interface CourierInboxTheme {
30
30
  selectionStyle?: 'none' | 'blue' | 'gray' | 'default';
31
31
  };
32
32
  };
33
+ android?: {
34
+ dividerItemDecoration?: 'none' | 'vertical';
35
+ };
33
36
  }
34
37
  //# sourceMappingURL=CourierInboxTheme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CourierInboxTheme.d.ts","sourceRoot":"","sources":["../../../src/models/CourierInboxTheme.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,gBAAgB,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,CAAC,OAAO,WAAW,iBAAiB;IACxC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,eAAe,CAAC,EAAE,gBAAgB,CAAA;IAClC,YAAY,CAAC,EAAE,wBAAwB,CAAA;IACvC,GAAG,CAAC,EAAE;QACJ,qBAAqB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;QACvG,UAAU,CAAC,EAAE;YACX,cAAc,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,kBAAkB,CAAC;YAC5D,eAAe,CAAC,EAAE;gBAAE,GAAG,CAAC,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YACnF,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;SACtD,CAAA;KACF,CAAA;CACF"}
1
+ {"version":3,"file":"CourierInboxTheme.d.ts","sourceRoot":"","sources":["../../../src/models/CourierInboxTheme.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,gBAAgB,CAAA;IACvB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,CAAC,OAAO,WAAW,iBAAiB;IACxC,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,SAAS,CAAC,EAAE,gBAAgB,CAAA;IAC5B,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,QAAQ,CAAC,EAAE,gBAAgB,CAAA;IAC3B,eAAe,CAAC,EAAE,gBAAgB,CAAA;IAClC,YAAY,CAAC,EAAE,wBAAwB,CAAA;IACvC,GAAG,CAAC,EAAE;QACJ,qBAAqB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,CAAC;QACvG,UAAU,CAAC,EAAE;YACX,cAAc,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,kBAAkB,CAAC;YAC5D,eAAe,CAAC,EAAE;gBAAE,GAAG,CAAC,EAAE,MAAM,CAAC;gBAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAAC,MAAM,CAAC,EAAE,MAAM,CAAC;gBAAC,KAAK,CAAC,EAAE,MAAM,CAAA;aAAE,CAAC;YACnF,cAAc,CAAC,EAAE,MAAM,CAAC;YACxB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;SACvD,CAAA;KACF,CAAC;IACF,OAAO,CAAC,EAAE;QACR,qBAAqB,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;KAC7C,CAAA;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"CourierInboxView.d.ts","sourceRoot":"","sources":["../../../src/views/CourierInboxView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAA+C,SAAS,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,iBAAiB,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,KAAK,qBAAqB,GAAG;IAC3B,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,iBAAiB,CAAC;QAC1B,IAAI,CAAC,EAAE,iBAAiB,CAAA;KACzB,CAAC;IACF,0BAA0B,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5E,mCAAmC,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1G,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAiBF,eAAO,MAAM,gBAAgB,UAAW,qBAAqB,sBAqD5D,CAAA"}
1
+ {"version":3,"file":"CourierInboxView.d.ts","sourceRoot":"","sources":["../../../src/views/CourierInboxView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAA+C,SAAS,EAA2C,MAAM,cAAc,CAAC;AAC/H,OAAO,iBAAiB,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,KAAK,qBAAqB,GAAG;IAC3B,KAAK,CAAC,EAAE;QACN,KAAK,CAAC,EAAE,iBAAiB,CAAC;QAC1B,IAAI,CAAC,EAAE,iBAAiB,CAAA;KACzB,CAAC;IACF,0BAA0B,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5E,mCAAmC,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1G,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAiBF,eAAO,MAAM,gBAAgB,UAAW,qBAAqB,sBAiG5D,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trycourier/courier-react-native",
3
- "version": "2.0.0-beta6",
3
+ "version": "2.0.0-beta7",
4
4
  "description": "Inbox & Push Notifications for React Native",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -24,7 +24,10 @@ export default interface CourierInboxTheme {
24
24
  separatorStyle?: 'none' | 'singleLine' | 'singleLineEtched',
25
25
  separatorInsets?: { top?: number, left?: number, bottom?: number, right?: number },
26
26
  separatorColor?: string,
27
- selectionStyle?: 'none' | 'blue' | 'gray' | 'default'
27
+ selectionStyle?: 'none' | 'blue' | 'gray' | 'default',
28
28
  }
29
+ },
30
+ android?: {
31
+ dividerItemDecoration?: 'none' | 'vertical',
29
32
  }
30
33
  }
@@ -1,5 +1,5 @@
1
- import React from "react";
2
- import { Platform, requireNativeComponent, UIManager, ViewStyle } from "react-native";
1
+ import React, { useEffect } from "react";
2
+ import { Platform, requireNativeComponent, UIManager, ViewStyle, DeviceEventEmitter, EmitterSubscription } from "react-native";
3
3
  import CourierInboxTheme from "src/models/CourierInboxTheme";
4
4
  import { InboxAction } from "src/models/InboxAction";
5
5
  import { InboxMessage } from "src/models/InboxMessage";
@@ -32,13 +32,37 @@ const CourierInbox =
32
32
 
33
33
  export const CourierInboxView = (props: CourierInboxViewProps) => {
34
34
 
35
+ let onClickInboxMessageAtIndexListener: EmitterSubscription | undefined = undefined;
36
+ let onClickInboxActionForMessageAtIndexListener: EmitterSubscription | undefined = undefined;
37
+ let onScrollInboxListener: EmitterSubscription | undefined = undefined;
38
+
39
+ useEffect(() => {
40
+
41
+ return () => {
42
+ onClickInboxMessageAtIndexListener?.remove();
43
+ onClickInboxActionForMessageAtIndexListener?.remove();
44
+ onScrollInboxListener?.remove();
45
+ }
46
+
47
+ }, [])
48
+
49
+ useEffect(() => {
50
+
51
+ onClickInboxMessageAtIndexListener?.remove();
52
+
53
+ if (Platform.OS === 'android' && props.onClickInboxMessageAtIndex) {
54
+ onClickInboxMessageAtIndexListener = DeviceEventEmitter.addListener('courierClickMessageAtIndex', onClickInboxMessageAtIndex);
55
+ }
56
+
57
+ }, [props.onClickInboxMessageAtIndex])
58
+
35
59
  const onClickInboxMessageAtIndex = (event: any) => {
36
60
 
37
61
  // Parse the native event data
38
62
  if (props.onClickInboxMessageAtIndex) {
39
63
 
40
- const index = event.nativeEvent["index"]
41
- const message = event.nativeEvent["message"] as InboxMessage
64
+ const index = event["index"]
65
+ const message = event["message"] as InboxMessage
42
66
 
43
67
  props.onClickInboxMessageAtIndex(message, index)
44
68
 
@@ -46,14 +70,24 @@ export const CourierInboxView = (props: CourierInboxViewProps) => {
46
70
 
47
71
  }
48
72
 
73
+ useEffect(() => {
74
+
75
+ onClickInboxActionForMessageAtIndexListener?.remove();
76
+
77
+ if (Platform.OS === 'android' && props.onClickInboxActionForMessageAtIndex) {
78
+ onClickInboxActionForMessageAtIndexListener = DeviceEventEmitter.addListener('courierClickActionAtIndex', onClickInboxActionForMessageAtIndex);
79
+ }
80
+
81
+ }, [props.onClickInboxActionForMessageAtIndex])
82
+
49
83
  const onClickInboxActionForMessageAtIndex = (event: any) => {
50
84
 
51
85
  // Parse the native event data
52
86
  if (props.onClickInboxActionForMessageAtIndex) {
53
87
 
54
- const index = event.nativeEvent["index"]
55
- const action = event.nativeEvent["action"] as InboxAction
56
- const message = event.nativeEvent["message"] as InboxMessage
88
+ const index = event["index"]
89
+ const action = event["action"] as InboxAction
90
+ const message = event["message"] as InboxMessage
57
91
 
58
92
  props.onClickInboxActionForMessageAtIndex(action, message, index)
59
93
 
@@ -61,12 +95,22 @@ export const CourierInboxView = (props: CourierInboxViewProps) => {
61
95
 
62
96
  }
63
97
 
98
+ useEffect(() => {
99
+
100
+ onScrollInboxListener?.remove();
101
+
102
+ if (Platform.OS === 'android' && props.onScrollInbox) {
103
+ onScrollInboxListener = DeviceEventEmitter.addListener('courierScrollInbox', onScrollInbox);
104
+ }
105
+
106
+ }, [props.onScrollInbox])
107
+
64
108
  const onScrollInbox = (event: any) => {
65
109
 
66
110
  // Parse the native event data
67
111
  if (props.onScrollInbox) {
68
112
 
69
- const contentOffset = event.nativeEvent["contentOffset"]
113
+ const contentOffset = event["contentOffset"]
70
114
  props.onScrollInbox(contentOffset["y"], contentOffset["x"])
71
115
 
72
116
  }
@@ -76,9 +120,9 @@ export const CourierInboxView = (props: CourierInboxViewProps) => {
76
120
  return (
77
121
  <CourierInbox
78
122
  theme={props.theme ?? { light: undefined, dark: undefined }}
79
- onClickInboxMessageAtIndex={onClickInboxMessageAtIndex}
80
- onClickInboxActionForMessageAtIndex={onClickInboxActionForMessageAtIndex}
81
- onScrollInbox={onScrollInbox}
123
+ onClickInboxMessageAtIndex={(event: any) => onClickInboxMessageAtIndex(event.nativeEvent)}
124
+ onClickInboxActionForMessageAtIndex={(event: any) => onClickInboxActionForMessageAtIndex(event.nativeEvent)}
125
+ onScrollInbox={(event: any) => onScrollInbox(event.nativeEvent)}
82
126
  style={props.style}
83
127
  />
84
128
  )