Ver Fonte

notifications navigation

Viktoriia há 9 meses atrás
pai
commit
624a221f2d
1 ficheiros alterados com 47 adições e 4 exclusões
  1. 47 4
      src/contexts/PushNotificationContext.tsx

+ 47 - 4
src/contexts/PushNotificationContext.tsx

@@ -24,8 +24,27 @@ export const PushNotificationProvider = ({ children }) => {
       );
       const data = lastNotificationResponse.notification.request.content.data;
 
-      if (data?.screen) {
-        navigation.navigate(data.screen as never);
+      if (data?.screen && data?.parentScreen) {
+        if (data?.params) {
+          navigation.navigate(
+            ...([
+              data.parentScreen,
+              {
+                screen: data.screen,
+                params: data.params
+              }
+            ] as never)
+          );
+        } else {
+          navigation.navigate(
+            ...([
+              data.parentScreen,
+              {
+                screen: data.screen
+              }
+            ] as never)
+          );
+        }
       }
       if (data?.url) {
         Linking.openURL(data.url);
@@ -44,14 +63,38 @@ export const PushNotificationProvider = ({ children }) => {
 
         let screenName;
         let url;
+        let parentScreen;
+        let params;
         if (Platform.OS === 'ios') {
           console.log('data ios', response.notification.request.trigger?.payload);
+          parentScreen = response.notification.request.trigger?.payload?.parentScreen;
           screenName = response.notification.request.trigger?.payload?.screen;
+          params = response.notification.request.trigger?.payload?.params;
+
           url = response.notification.request.trigger?.payload?.url;
         }
 
-        if (screenName) {
-          navigation.navigate(screenName as never);
+        if (screenName && parentScreen) {
+          if (params) {
+            navigation.navigate(
+              ...([
+                parentScreen,
+                {
+                  screen: screenName,
+                  params: params
+                }
+              ] as never)
+            );
+          } else {
+            navigation.navigate(
+              ...([
+                parentScreen,
+                {
+                  screen: screenName
+                }
+              ] as never)
+            );
+          }
         }
         if (url) {
           Linking.openURL(url);