|
@@ -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);
|