forked from laurent22/joplin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
setUpQuickActions.ts
52 lines (47 loc) · 1.65 KB
/
setUpQuickActions.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Need to require this class instead of importing it
// to disable buggy type-checking, maybe because this
// class is undocumented.
const { DeviceEventEmitter } = require('react-native');
import * as QuickActions from 'react-native-quick-actions';
const { _ } = require('lib/locale.js');
type TData = {
type: string
}
export default (dispatch: Function, folderId: string) => {
const userInfo = { url: '' };
QuickActions.setShortcutItems([
{ type: 'New note', title: _('New note'), icon: 'Compose', userInfo },
{ type: 'New to-do', title: _('New to-do'), icon: 'Add', userInfo },
]);
DeviceEventEmitter.addListener('quickActionShortcut', (data: TData) => {
// This dispatch is to momentarily go back to reset state, similar to what
// happens in onJoplinLinkClick_(). Easier to just go back, then go to the
// note since the Note screen doesn't handle reloading a different note.
//
// This hack is necessary because otherwise you get this problem:
// The first time you create a note from the quick-action menu, it works
// perfectly. But if you do it again immediately later, it re-opens the
// page to that first note you made rather than creating an entirely new
// note. If you navigate around enough (which I think changes the redux
// state sufficiently or something), then it'll work again.
dispatch({ type: 'NAV_BACK' });
if (data.type === 'New note') {
dispatch({
type: 'NAV_GO',
noteId: null,
folderId,
routeName: 'Note',
itemType: 'note',
});
}
if (data.type === 'New to-do') {
dispatch({
type: 'NAV_GO',
noteId: null,
folderId,
routeName: 'Note',
itemType: 'todo',
});
}
});
};