@trycourier/courier-react-native
Version:
Inbox, Push Notifications, and Preferences for React Native
94 lines • 5.03 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 = undefined;
let onLongPressInboxMessageAtIndexListener = undefined;
let onClickInboxActionForMessageAtIndexListener = undefined;
let onScrollInboxListener = undefined;
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