Add share intent
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
import React from 'react';
|
||||
import { NavigationContainer as NavigationContainerBase } from '@react-navigation/native';
|
||||
import React, { useCallback, useEffect } from 'react';
|
||||
import {
|
||||
NavigationContainer as NavigationContainerBase,
|
||||
ParamListBase,
|
||||
createNavigationContainerRef,
|
||||
} from '@react-navigation/native';
|
||||
import FontAwesome5 from 'react-native-vector-icons/FontAwesome5';
|
||||
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs';
|
||||
import { createNativeStackNavigator } from '@react-navigation/native-stack';
|
||||
@@ -20,8 +24,14 @@ import {
|
||||
FloatingActionButton,
|
||||
HideableBottomNavigationBar,
|
||||
} from './components';
|
||||
import { ROUTE, RootStackParamList } from './types';
|
||||
import {
|
||||
ROUTE,
|
||||
RootStackParamList,
|
||||
SharedItem,
|
||||
sharedItemToAddMemeFile,
|
||||
} from './types';
|
||||
import { RootState } from './state';
|
||||
import ShareMenu from 'react-native-share-menu';
|
||||
|
||||
const TabNavigator = () => {
|
||||
const navVisible = useSelector(
|
||||
@@ -84,10 +94,28 @@ const TabNavigator = () => {
|
||||
const NavigationContainer = () => {
|
||||
const theme = useTheme();
|
||||
|
||||
const navigationRef = createNavigationContainerRef<ParamListBase>();
|
||||
|
||||
const handleShare = useCallback(
|
||||
(item: SharedItem | undefined) => {
|
||||
if (!item) return;
|
||||
const files = sharedItemToAddMemeFile(item);
|
||||
navigationRef.current?.navigate(ROUTE.ADD_MEME, { files });
|
||||
},
|
||||
[navigationRef],
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
ShareMenu.getInitialShare(handleShare);
|
||||
const listener = ShareMenu.addNewShareListener(handleShare);
|
||||
return () => listener.remove();
|
||||
}, [handleShare]);
|
||||
|
||||
const StackNavigatorBase = createNativeStackNavigator<RootStackParamList>();
|
||||
|
||||
return (
|
||||
<NavigationContainerBase
|
||||
ref={navigationRef}
|
||||
theme={theme.dark ? darkNavigationTheme : lightNavigationTheme}>
|
||||
<StackNavigatorBase.Navigator
|
||||
screenOptions={{
|
||||
|
Reference in New Issue
Block a user