@trycourier/courier-react-native
Version:
Inbox, Push Notifications, and Preferences for React Native
34 lines (33 loc) • 1.56 kB
JavaScript
import React, { useEffect } from "react";
import { DeviceEventEmitter, Platform } from "react-native";
import { Modules } from "../Modules";
const CourierPreferences = Modules.getNativeComponent('CourierPreferencesView');
export const CourierPreferencesView = (props) => {
let onScrollPreferencesListener = undefined;
useEffect(() => {
return () => {
onScrollPreferencesListener?.remove();
};
}, []);
useEffect(() => {
onScrollPreferencesListener?.remove();
if (Platform.OS === 'android' && props.onScrollPreferences) {
onScrollPreferencesListener = DeviceEventEmitter.addListener('courierScrollPreferences', onScrollPreferences);
}
}, [props.onScrollPreferences]);
const onScrollPreferences = (event) => {
// Parse the native event data
if (props.onScrollPreferences) {
const contentOffset = event["contentOffset"];
props.onScrollPreferences(contentOffset["y"], contentOffset["x"]);
}
};
const onPreferenceError = (event) => {
// Parse the native event data
if (props.onPreferenceError) {
const message = event["error"];
props.onPreferenceError(message);
}
};
return (React.createElement(CourierPreferences, { mode: props.mode, theme: props.theme ?? { light: undefined, dark: undefined }, onScrollPreferences: (event) => onScrollPreferences(event.nativeEvent), onPreferenceError: (event) => onPreferenceError(event.nativeEvent), style: props.style }));
};