@trycourier/courier-react-native
Version:
Inbox, Push Notifications, and Preferences for React Native
94 lines • 4.95 kB
JavaScript
import React, { useEffect } from 'react';
import { Platform, DeviceEventEmitter } from 'react-native';
import { InboxAction } from '../models/InboxAction';
import { InboxMessage } from '../models/InboxMessage';
import { Modules } from '../Modules';
const CourierInbox = Modules.getNativeComponent('CourierInboxView');
export const CourierInboxView = props => {
let onClickInboxMessageAtIndexListener;
let onLongPressInboxMessageAtIndexListener;
let onClickInboxActionForMessageAtIndexListener;
let onScrollInboxListener;
useEffect(() => {
return () => {
var _onClickInboxMessageA, _onLongPressInboxMess, _onClickInboxActionFo, _onScrollInboxListene;
(_onClickInboxMessageA = onClickInboxMessageAtIndexListener) === null || _onClickInboxMessageA === void 0 ? void 0 : _onClickInboxMessageA.remove();
(_onLongPressInboxMess = onLongPressInboxMessageAtIndexListener) === null || _onLongPressInboxMess === void 0 ? void 0 : _onLongPressInboxMess.remove();
(_onClickInboxActionFo = onClickInboxActionForMessageAtIndexListener) === null || _onClickInboxActionFo === void 0 ? void 0 : _onClickInboxActionFo.remove();
(_onScrollInboxListene = onScrollInboxListener) === null || _onScrollInboxListene === void 0 ? void 0 : _onScrollInboxListene.remove();
};
}, []);
useEffect(() => {
var _onClickInboxMessageA2;
(_onClickInboxMessageA2 = onClickInboxMessageAtIndexListener) === null || _onClickInboxMessageA2 === void 0 ? void 0 : _onClickInboxMessageA2.remove();
if (Platform.OS === 'android' && props.onClickInboxMessageAtIndex) {
onClickInboxMessageAtIndexListener = DeviceEventEmitter.addListener('courierClickMessageAtIndex', onClickInboxMessageAtIndex);
}
}, [props.onClickInboxMessageAtIndex]);
const onClickInboxMessageAtIndex = event => {
// Parse the native event data
if (props.onClickInboxMessageAtIndex) {
const index = event.index;
const message = InboxMessage.fromJson(event.message);
props.onClickInboxMessageAtIndex(message, index);
}
};
useEffect(() => {
var _onLongPressInboxMess2;
(_onLongPressInboxMess2 = onLongPressInboxMessageAtIndexListener) === null || _onLongPressInboxMess2 === void 0 ? void 0 : _onLongPressInboxMess2.remove();
if (Platform.OS === 'android' && props.onLongPressInboxMessageAtIndex) {
onLongPressInboxMessageAtIndexListener = DeviceEventEmitter.addListener('courierLongPressMessageAtIndex', onLongPressInboxMessageAtIndex);
}
}, [props.onLongPressInboxMessageAtIndex]);
const onLongPressInboxMessageAtIndex = event => {
// Parse the native event data
if (props.onLongPressInboxMessageAtIndex) {
const index = event.index;
const message = InboxMessage.fromJson(event.message);
props.onLongPressInboxMessageAtIndex(message, index);
}
};
useEffect(() => {
var _onClickInboxActionFo2;
(_onClickInboxActionFo2 = onClickInboxActionForMessageAtIndexListener) === null || _onClickInboxActionFo2 === void 0 ? void 0 : _onClickInboxActionFo2.remove();
if (Platform.OS === 'android' && props.onClickInboxActionForMessageAtIndex) {
onClickInboxActionForMessageAtIndexListener = DeviceEventEmitter.addListener('courierClickActionAtIndex', onClickInboxActionForMessageAtIndex);
}
}, [props.onClickInboxActionForMessageAtIndex]);
const onClickInboxActionForMessageAtIndex = event => {
// Parse the native event data
if (props.onClickInboxActionForMessageAtIndex) {
const index = event.index;
const action = InboxAction.fromJson(event.action);
const message = InboxMessage.fromJson(event.message);
props.onClickInboxActionForMessageAtIndex(action, message, index);
}
};
useEffect(() => {
var _onScrollInboxListene2;
(_onScrollInboxListene2 = onScrollInboxListener) === null || _onScrollInboxListene2 === void 0 ? void 0 : _onScrollInboxListene2.remove();
if (Platform.OS === 'android' && props.onScrollInbox) {
onScrollInboxListener = DeviceEventEmitter.addListener('courierScrollInbox', onScrollInbox);
}
}, [props.onScrollInbox]);
const onScrollInbox = event => {
// Parse the native event data
if (props.onScrollInbox) {
const contentOffset = event.contentOffset;
props.onScrollInbox(contentOffset.y, contentOffset.x);
}
};
return /*#__PURE__*/React.createElement(CourierInbox, {
canSwipePages: props.canSwipePages ?? false,
theme: props.theme ?? {
light: undefined,
dark: undefined
},
onClickInboxMessageAtIndex: event => onClickInboxMessageAtIndex(event.nativeEvent),
onLongPressInboxMessageAtIndex: event => onLongPressInboxMessageAtIndex(event.nativeEvent),
onClickInboxActionForMessageAtIndex: event => onClickInboxActionForMessageAtIndex(event.nativeEvent),
onScrollInbox: event => onScrollInbox(event.nativeEvent),
style: props.style
});
};
//# sourceMappingURL=CourierInboxView.js.map