UNPKG

@trycourier/courier-react-native

Version:

Inbox, Push Notifications, and Preferences for React Native

34 lines (33 loc) 1.56 kB
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 })); };