You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-06-15 23:00:36 +02:00
42
ReactNativeClient/lib/shareHandler.ts
Normal file
42
ReactNativeClient/lib/shareHandler.ts
Normal file
@ -0,0 +1,42 @@
|
||||
const Note = require('lib/models/Note.js');
|
||||
const checkPermissions = require('lib/checkPermissions.js').default;
|
||||
const { ToastAndroid } = require('react-native');
|
||||
const { PermissionsAndroid } = require('react-native');
|
||||
|
||||
import ShareExtension, { SharedData } from './ShareExtension';
|
||||
|
||||
export default async (sharedData: SharedData, folderId: string, dispatch: Function) => {
|
||||
|
||||
if (!!sharedData.resources && sharedData.resources.length > 0) {
|
||||
const hasPermissions = await checkPermissions(PermissionsAndroid.PERMISSIONS.READ_EXTERNAL_STORAGE);
|
||||
|
||||
if (!hasPermissions) {
|
||||
ToastAndroid.show('Cannot receive shared data - permission denied', ToastAndroid.SHORT);
|
||||
ShareExtension.close();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// This is a bit hacky, but the surest way to go to
|
||||
// the needed note. We go back one screen in case there's
|
||||
// already a note open - if we don't do this, the dispatch
|
||||
// below will do nothing (because routeName wouldn't change)
|
||||
// Then we wait a bit for the state to be set correctly, and
|
||||
// finally we go to the new note.
|
||||
await dispatch({ type: 'NAV_BACK' });
|
||||
|
||||
await dispatch({ type: 'SIDE_MENU_CLOSE' });
|
||||
|
||||
const newNote = await Note.save({
|
||||
parent_id: folderId,
|
||||
}, { provisional: true });
|
||||
|
||||
setTimeout(() => {
|
||||
dispatch({
|
||||
type: 'NAV_GO',
|
||||
routeName: 'Note',
|
||||
noteId: newNote.id,
|
||||
sharedData: sharedData,
|
||||
});
|
||||
}, 5);
|
||||
};
|
Reference in New Issue
Block a user