一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
38 行
1.1 KiB
TypeScript
38 行
1.1 KiB
TypeScript
import { Dispatch } from 'redux';
|
|
|
|
import { NativeEventEmitter, NativeModules, Platform } from '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);
|
|
}
|
|
};
|