1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-30 10:36:35 +02:00
joplin/packages/app-mobile/utils/setupNotifications.ts

38 lines
1.1 KiB
TypeScript
Raw Normal View History

import { Dispatch } from 'redux';
const { NativeEventEmitter, NativeModules, Platform } = require('react-native');
interface NotificationData {
joplinNotificationId: string;
noteId: string;
}
export default async (dispatch: Dispatch) => {
if (Platform.OS === 'android') {
const RNAlarmNotification = NativeModules.RNAlarmNotification;
const RNAlarmEmitter = new NativeEventEmitter(RNAlarmNotification);
const handleNotification = async (notification: NotificationData) => {
if (notification) {
const noteId = notification.noteId;
if (noteId) {
dispatch({ type: 'NAV_BACK' });
dispatch({ type: 'SIDE_MENU_CLOSE' });
dispatch({
type: 'NAV_GO',
noteId: noteId,
routeName: 'Note',
});
}
}
};
// receive notification click events when the app is running
RNAlarmEmitter.addListener('OnNotificationOpened', handleNotification);
// retrieve notification info if the app was started after the user clicked notification
const notification = await RNAlarmNotification.getAlarmInfo();
await handleNotification(notification);
}
};