@stream-io/video-react-native-sdk 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/commonjs/components/Call/CallControls/HangupCallButton.js +4 -6
  3. package/dist/commonjs/components/Call/CallControls/HangupCallButton.js.map +1 -1
  4. package/dist/commonjs/hooks/push/index.js +4 -0
  5. package/dist/commonjs/hooks/push/index.js.map +1 -1
  6. package/dist/commonjs/hooks/push/useInitAndroidTokenAndRest.js +8 -2
  7. package/dist/commonjs/hooks/push/useInitAndroidTokenAndRest.js.map +1 -1
  8. package/dist/commonjs/hooks/push/useIosInitRemoteNotifications.js +34 -0
  9. package/dist/commonjs/hooks/push/useIosInitRemoteNotifications.js.map +1 -0
  10. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js +50 -4
  11. package/dist/commonjs/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  12. package/dist/commonjs/hooks/push/useProcessPushNonRingingCallEffect.js +50 -0
  13. package/dist/commonjs/hooks/push/useProcessPushNonRingingCallEffect.js.map +1 -0
  14. package/dist/commonjs/utils/StreamVideoRN/index.js +33 -0
  15. package/dist/commonjs/utils/StreamVideoRN/index.js.map +1 -1
  16. package/dist/commonjs/utils/internal/newNotificationCallbacks.js +18 -0
  17. package/dist/commonjs/utils/internal/newNotificationCallbacks.js.map +1 -0
  18. package/dist/commonjs/utils/internal/pushLogoutCallback.js +18 -0
  19. package/dist/commonjs/utils/internal/pushLogoutCallback.js.map +1 -0
  20. package/dist/commonjs/utils/push/android.js +182 -68
  21. package/dist/commonjs/utils/push/android.js.map +1 -1
  22. package/dist/commonjs/utils/push/ios.js +107 -1
  23. package/dist/commonjs/utils/push/ios.js.map +1 -1
  24. package/dist/commonjs/utils/push/libs.js +34 -1
  25. package/dist/commonjs/utils/push/libs.js.map +1 -1
  26. package/dist/commonjs/utils/push/rxSubjects.js +8 -1
  27. package/dist/commonjs/utils/push/rxSubjects.js.map +1 -1
  28. package/dist/commonjs/utils/push/utils.js +29 -1
  29. package/dist/commonjs/utils/push/utils.js.map +1 -1
  30. package/dist/commonjs/version.js +1 -1
  31. package/dist/module/components/Call/CallControls/HangupCallButton.js +3 -4
  32. package/dist/module/components/Call/CallControls/HangupCallButton.js.map +1 -1
  33. package/dist/module/hooks/push/index.js +4 -0
  34. package/dist/module/hooks/push/index.js.map +1 -1
  35. package/dist/module/hooks/push/useInitAndroidTokenAndRest.js +8 -2
  36. package/dist/module/hooks/push/useInitAndroidTokenAndRest.js.map +1 -1
  37. package/dist/module/hooks/push/useIosInitRemoteNotifications.js +28 -0
  38. package/dist/module/hooks/push/useIosInitRemoteNotifications.js.map +1 -0
  39. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js +49 -4
  40. package/dist/module/hooks/push/useIosVoipPushEventsSetupEffect.js.map +1 -1
  41. package/dist/module/hooks/push/useProcessPushNonRingingCallEffect.js +44 -0
  42. package/dist/module/hooks/push/useProcessPushNonRingingCallEffect.js.map +1 -0
  43. package/dist/module/utils/StreamVideoRN/index.js +32 -0
  44. package/dist/module/utils/StreamVideoRN/index.js.map +1 -1
  45. package/dist/module/utils/internal/newNotificationCallbacks.js +10 -0
  46. package/dist/module/utils/internal/newNotificationCallbacks.js.map +1 -0
  47. package/dist/module/utils/internal/pushLogoutCallback.js +10 -0
  48. package/dist/module/utils/internal/pushLogoutCallback.js.map +1 -0
  49. package/dist/module/utils/push/android.js +184 -70
  50. package/dist/module/utils/push/android.js.map +1 -1
  51. package/dist/module/utils/push/ios.js +103 -1
  52. package/dist/module/utils/push/ios.js.map +1 -1
  53. package/dist/module/utils/push/libs.js +31 -1
  54. package/dist/module/utils/push/libs.js.map +1 -1
  55. package/dist/module/utils/push/rxSubjects.js +5 -0
  56. package/dist/module/utils/push/rxSubjects.js.map +1 -1
  57. package/dist/module/utils/push/utils.js +27 -0
  58. package/dist/module/utils/push/utils.js.map +1 -1
  59. package/dist/module/version.js +1 -1
  60. package/dist/typescript/hooks/push/index.d.ts.map +1 -1
  61. package/dist/typescript/hooks/push/useInitAndroidTokenAndRest.d.ts +1 -1
  62. package/dist/typescript/hooks/push/useInitAndroidTokenAndRest.d.ts.map +1 -1
  63. package/dist/typescript/hooks/push/useIosInitRemoteNotifications.d.ts +5 -0
  64. package/dist/typescript/hooks/push/useIosInitRemoteNotifications.d.ts.map +1 -0
  65. package/dist/typescript/hooks/push/useIosVoipPushEventsSetupEffect.d.ts.map +1 -1
  66. package/dist/typescript/hooks/push/useProcessPushNonRingingCallEffect.d.ts +7 -0
  67. package/dist/typescript/hooks/push/useProcessPushNonRingingCallEffect.d.ts.map +1 -0
  68. package/dist/typescript/utils/StreamVideoRN/index.d.ts +12 -0
  69. package/dist/typescript/utils/StreamVideoRN/index.d.ts.map +1 -1
  70. package/dist/typescript/utils/StreamVideoRN/types.d.ts +40 -6
  71. package/dist/typescript/utils/StreamVideoRN/types.d.ts.map +1 -1
  72. package/dist/typescript/utils/internal/newNotificationCallbacks.d.ts +10 -0
  73. package/dist/typescript/utils/internal/newNotificationCallbacks.d.ts.map +1 -0
  74. package/dist/typescript/utils/internal/pushLogoutCallback.d.ts +8 -0
  75. package/dist/typescript/utils/internal/pushLogoutCallback.d.ts.map +1 -0
  76. package/dist/typescript/utils/push/android.d.ts +1 -1
  77. package/dist/typescript/utils/push/android.d.ts.map +1 -1
  78. package/dist/typescript/utils/push/ios.d.ts +4 -0
  79. package/dist/typescript/utils/push/ios.d.ts.map +1 -1
  80. package/dist/typescript/utils/push/libs.d.ts +6 -0
  81. package/dist/typescript/utils/push/libs.d.ts.map +1 -1
  82. package/dist/typescript/utils/push/rxSubjects.d.ts +9 -0
  83. package/dist/typescript/utils/push/rxSubjects.d.ts.map +1 -1
  84. package/dist/typescript/utils/push/utils.d.ts +9 -1
  85. package/dist/typescript/utils/push/utils.d.ts.map +1 -1
  86. package/dist/typescript/version.d.ts +1 -1
  87. package/expo-config-plugin/dist/index.d.ts +3 -2
  88. package/expo-config-plugin/dist/index.js +9 -5
  89. package/expo-config-plugin/dist/withPushAppDelegate.d.ts +4 -0
  90. package/expo-config-plugin/dist/withPushAppDelegate.js +119 -0
  91. package/expo-config-plugin/dist/withiOSInfoPlist.d.ts +2 -1
  92. package/expo-config-plugin/dist/withiOSInfoPlist.js +6 -1
  93. package/package.json +19 -3
  94. package/src/components/Call/CallControls/HangupCallButton.tsx +4 -4
  95. package/src/hooks/push/index.ts +4 -0
  96. package/src/hooks/push/useInitAndroidTokenAndRest.ts +8 -2
  97. package/src/hooks/push/useIosInitRemoteNotifications.ts +29 -0
  98. package/src/hooks/push/useIosVoipPushEventsSetupEffect.ts +50 -3
  99. package/src/hooks/push/useProcessPushNonRingingCallEffect.ts +44 -0
  100. package/src/utils/StreamVideoRN/index.ts +36 -0
  101. package/src/utils/StreamVideoRN/types.ts +47 -6
  102. package/src/utils/internal/newNotificationCallbacks.ts +29 -0
  103. package/src/utils/internal/pushLogoutCallback.ts +17 -0
  104. package/src/utils/push/android.ts +203 -74
  105. package/src/utils/push/ios.ts +120 -1
  106. package/src/utils/push/libs.ts +48 -2
  107. package/src/utils/push/rxSubjects.ts +9 -0
  108. package/src/utils/push/utils.ts +35 -1
  109. package/src/version.ts +1 -1
  110. /package/expo-config-plugin/dist/{withAppDelegate.d.ts → withStreamVideoReactNativeSDKAppDelegate.d.ts} +0 -0
  111. /package/expo-config-plugin/dist/{withAppDelegate.js → withStreamVideoReactNativeSDKAppDelegate.js} +0 -0
@@ -3,7 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.processCallFromPushInBackground = exports.processCallFromPush = void 0;
6
+ exports.processNonIncomingCallFromPush = exports.processCallFromPushInBackground = exports.processCallFromPush = void 0;
7
+ var _newNotificationCallbacks = require("../internal/newNotificationCallbacks");
7
8
  /* An action for the notification or callkeep and app does not have JS context setup yet, so we need to do two steps:
8
9
  1. we need to create a new client and connect the user to decline the call
9
10
  2. this is because the app is in background state and we don't have a client to get the call and do an action
@@ -51,5 +52,32 @@ const processCallFromPush = async (client, call_cid, action) => {
51
52
  console.log('failed to process call from push notification', e, action);
52
53
  }
53
54
  };
55
+
56
+ /**
57
+ * This function is used process the call from push notifications due to non ringing calls
58
+ * It does the following steps:
59
+ * 1. Get the call from the client if present or create a new call
60
+ * 2. Fetch the latest state of the call from the server if its not already in ringing state
61
+ * 3. Call all the callbacks to inform the app about the call
62
+ */
54
63
  exports.processCallFromPush = processCallFromPush;
64
+ const processNonIncomingCallFromPush = async (client, call_cid, nonRingingNotificationType) => {
65
+ let callFromPush;
66
+ try {
67
+ const _callFromPush = client.state.calls.find(c => c.cid === call_cid);
68
+ if (_callFromPush) {
69
+ callFromPush = _callFromPush;
70
+ } else {
71
+ // if not it means that WS is not alive when receiving the push notifications and we need to fetch the call
72
+ const [callType, callId] = call_cid.split(':');
73
+ callFromPush = client.call(callType, callId);
74
+ await callFromPush.get();
75
+ }
76
+ } catch (e) {
77
+ console.log('failed to fetch call from push notification', e);
78
+ return;
79
+ }
80
+ (0, _newNotificationCallbacks.onNewCallNotification)(callFromPush, nonRingingNotificationType);
81
+ };
82
+ exports.processNonIncomingCallFromPush = processNonIncomingCallFromPush;
55
83
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["processCallFromPushInBackground","pushConfig","call_cid","action","videoClient","createStreamVideoClient","e","console","log","processCallFromPush","exports","client","callFromPush","onRingingCall","join","leave","reject"],"sourceRoot":"../../../../src","sources":["utils/push/utils.ts"],"mappings":";;;;;;AAKA;AACA;AACA;AACA;AACO,MAAMA,+BAA+B,GAAG,MAAAA,CAC7CC,UAAsB,EACtBC,QAAgB,EAChBC,MAAiD,KAC9C;EACH,IAAIC,WAA0C;EAE9C,IAAI;IACFA,WAAW,GAAG,MAAMH,UAAU,CAACI,uBAAuB,CAAC,CAAC;IACxD,IAAI,CAACD,WAAW,EAAE;MAChB;IACF;EACF,CAAC,CAAC,OAAOE,CAAC,EAAE;IACVC,OAAO,CAACC,GAAG,CAAC,gDAAgD,EAAEF,CAAC,CAAC;IAChE;EACF;EACA,MAAMG,mBAAmB,CAACL,WAAW,EAAEF,QAAQ,EAAEC,MAAM,CAAC;AAC1D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANAO,OAAA,CAAAV,+BAAA,GAAAA,+BAAA;AAOO,MAAMS,mBAAmB,GAAG,MAAAA,CACjCE,MAAyB,EACzBT,QAAgB,EAChBC,MAAwC,KACrC;EACH,IAAIS,YAAkB;EACtB,IAAI;IACFA,YAAY,GAAG,MAAMD,MAAM,CAACE,aAAa,CAACX,QAAQ,CAAC;EACrD,CAAC,CAAC,OAAOI,CAAC,EAAE;IACVC,OAAO,CAACC,GAAG,CAAC,6CAA6C,EAAEF,CAAC,CAAC;IAC7D;EACF;EACA;EACA,IAAI;IACF,IAAIH,MAAM,KAAK,QAAQ,EAAE;MACvB,MAAMS,YAAY,CAACE,IAAI,CAAC,CAAC;IAC3B,CAAC,MAAM,IAAIX,MAAM,KAAK,SAAS,EAAE;MAC/B,MAAMS,YAAY,CAACG,KAAK,CAAC;QAAEC,MAAM,EAAE;MAAK,CAAC,CAAC;IAC5C;EACF,CAAC,CAAC,OAAOV,CAAC,EAAE;IACVC,OAAO,CAACC,GAAG,CAAC,+CAA+C,EAAEF,CAAC,EAAEH,MAAM,CAAC;EACzE;AACF,CAAC;AAACO,OAAA,CAAAD,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"names":["_newNotificationCallbacks","require","processCallFromPushInBackground","pushConfig","call_cid","action","videoClient","createStreamVideoClient","e","console","log","processCallFromPush","exports","client","callFromPush","onRingingCall","join","leave","reject","processNonIncomingCallFromPush","nonRingingNotificationType","_callFromPush","state","calls","find","c","cid","callType","callId","split","call","get","onNewCallNotification"],"sourceRoot":"../../../../src","sources":["utils/push/utils.ts"],"mappings":";;;;;;AAKA,IAAAA,yBAAA,GAAAC,OAAA;AAIA;AACA;AACA;AACA;AACO,MAAMC,+BAA+B,GAAG,MAAAA,CAC7CC,UAAsB,EACtBC,QAAgB,EAChBC,MAAiD,KAC9C;EACH,IAAIC,WAA0C;EAE9C,IAAI;IACFA,WAAW,GAAG,MAAMH,UAAU,CAACI,uBAAuB,CAAC,CAAC;IACxD,IAAI,CAACD,WAAW,EAAE;MAChB;IACF;EACF,CAAC,CAAC,OAAOE,CAAC,EAAE;IACVC,OAAO,CAACC,GAAG,CAAC,gDAAgD,EAAEF,CAAC,CAAC;IAChE;EACF;EACA,MAAMG,mBAAmB,CAACL,WAAW,EAAEF,QAAQ,EAAEC,MAAM,CAAC;AAC1D,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANAO,OAAA,CAAAV,+BAAA,GAAAA,+BAAA;AAOO,MAAMS,mBAAmB,GAAG,MAAAA,CACjCE,MAAyB,EACzBT,QAAgB,EAChBC,MAAwC,KACrC;EACH,IAAIS,YAAkB;EACtB,IAAI;IACFA,YAAY,GAAG,MAAMD,MAAM,CAACE,aAAa,CAACX,QAAQ,CAAC;EACrD,CAAC,CAAC,OAAOI,CAAC,EAAE;IACVC,OAAO,CAACC,GAAG,CAAC,6CAA6C,EAAEF,CAAC,CAAC;IAC7D;EACF;EACA;EACA,IAAI;IACF,IAAIH,MAAM,KAAK,QAAQ,EAAE;MACvB,MAAMS,YAAY,CAACE,IAAI,CAAC,CAAC;IAC3B,CAAC,MAAM,IAAIX,MAAM,KAAK,SAAS,EAAE;MAC/B,MAAMS,YAAY,CAACG,KAAK,CAAC;QAAEC,MAAM,EAAE;MAAK,CAAC,CAAC;IAC5C;EACF,CAAC,CAAC,OAAOV,CAAC,EAAE;IACVC,OAAO,CAACC,GAAG,CAAC,+CAA+C,EAAEF,CAAC,EAAEH,MAAM,CAAC;EACzE;AACF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AANAO,OAAA,CAAAD,mBAAA,GAAAA,mBAAA;AAOO,MAAMQ,8BAA8B,GAAG,MAAAA,CAC5CN,MAAyB,EACzBT,QAAgB,EAChBgB,0BAA+C,KAC5C;EACH,IAAIN,YAAkB;EACtB,IAAI;IACF,MAAMO,aAAa,GAAGR,MAAM,CAACS,KAAK,CAACC,KAAK,CAACC,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,GAAG,KAAKtB,QAAQ,CAAC;IACxE,IAAIiB,aAAa,EAAE;MACjBP,YAAY,GAAGO,aAAa;IAC9B,CAAC,MAAM;MACL;MACA,MAAM,CAACM,QAAQ,EAAEC,MAAM,CAAC,GAAGxB,QAAQ,CAACyB,KAAK,CAAC,GAAG,CAAC;MAC9Cf,YAAY,GAAGD,MAAM,CAACiB,IAAI,CAACH,QAAQ,EAAEC,MAAM,CAAC;MAC5C,MAAMd,YAAY,CAACiB,GAAG,CAAC,CAAC;IAC1B;EACF,CAAC,CAAC,OAAOvB,CAAC,EAAE;IACVC,OAAO,CAACC,GAAG,CAAC,6CAA6C,EAAEF,CAAC,CAAC;IAC7D;EACF;EACA,IAAAwB,+CAAqB,EAAClB,YAAY,EAAEM,0BAA0B,CAAC;AACjE,CAAC;AAACR,OAAA,CAAAO,8BAAA,GAAAA,8BAAA"}
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.version = void 0;
7
- const version = '0.1.2';
7
+ const version = '0.1.4';
8
8
  exports.version = version;
9
9
  //# sourceMappingURL=version.js.map
@@ -1,4 +1,4 @@
1
- import React, { useCallback } from 'react';
1
+ import React from 'react';
2
2
  import { CallControlsButton } from './CallControlsButton';
3
3
  import { PhoneDown } from '../../../icons';
4
4
  import { ButtonTestIds } from '../../../constants/TestIds';
@@ -31,7 +31,7 @@ export const HangUpCallButton = _ref => {
31
31
  hangupCallButton
32
32
  }
33
33
  } = useTheme();
34
- const onPress = useCallback(async () => {
34
+ const onPress = async () => {
35
35
  if (onPressHandler) {
36
36
  onPressHandler();
37
37
  return;
@@ -47,8 +47,7 @@ export const HangUpCallButton = _ref => {
47
47
  } catch (error) {
48
48
  console.error('Error leaving call:', error);
49
49
  }
50
- // eslint-disable-next-line react-hooks/exhaustive-deps
51
- }, [call]);
50
+ };
52
51
  return /*#__PURE__*/React.createElement(CallControlsButton, {
53
52
  onPress: onPress,
54
53
  color: colors.error,
@@ -1 +1 @@
1
- {"version":3,"names":["React","useCallback","CallControlsButton","PhoneDown","ButtonTestIds","useCall","useCallStateHooks","CallingState","useTheme","HangUpCallButton","_ref","onPressHandler","onHangupCallHandler","call","useCallCallingState","callingState","theme","colors","hangupCallButton","onPress","LEFT","leave","error","console","createElement","color","style","testID","HANG_UP_CALL","static_white"],"sourceRoot":"../../../../../src","sources":["components/Call/CallControls/HangupCallButton.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,WAAW,QAAQ,OAAO;AAC1C,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,SAAS,QAAQ,gBAAgB;AAC1C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,OAAO,EAAEC,iBAAiB,QAAQ,iCAAiC;AAC5E,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,QAAQ,QAAQ,gCAAgC;;AAEzD;AACA;AACA;;AAeA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGC,IAAA,IAGH;EAAA,IAHI;IAC/BC,cAAc;IACdC;EACqB,CAAC,GAAAF,IAAA;EACtB,MAAMG,IAAI,GAAGR,OAAO,CAAC,CAAC;EACtB,MAAM;IAAES;EAAoB,CAAC,GAAGR,iBAAiB,CAAC,CAAC;EACnD,MAAMS,YAAY,GAAGD,mBAAmB,CAAC,CAAC;EAC1C,MAAM;IACJE,KAAK,EAAE;MAAEC,MAAM;MAAEC;IAAiB;EACpC,CAAC,GAAGV,QAAQ,CAAC,CAAC;EACd,MAAMW,OAAO,GAAGlB,WAAW,CAAC,YAAY;IACtC,IAAIU,cAAc,EAAE;MAClBA,cAAc,CAAC,CAAC;MAChB;IACF;IACA,IAAI;MACF,IAAII,YAAY,KAAKR,YAAY,CAACa,IAAI,EAAE;QACtC;MACF;MACA,OAAMP,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEQ,KAAK,CAAC,CAAC;MACnB,IAAIT,mBAAmB,EAAE;QACvBA,mBAAmB,CAAC,CAAC;MACvB;IACF,CAAC,CAAC,OAAOU,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,qBAAqB,EAAEA,KAAK,CAAC;IAC7C;IACA;EACF,CAAC,EAAE,CAACT,IAAI,CAAC,CAAC;EAEV,oBACEb,KAAA,CAAAwB,aAAA,CAACtB,kBAAkB;IACjBiB,OAAO,EAAEA,OAAQ;IACjBM,KAAK,EAAER,MAAM,CAACK,KAAM;IACpBI,KAAK,EAAER,gBAAiB;IACxBS,MAAM,EAAEvB,aAAa,CAACwB;EAAa,gBAEnC5B,KAAA,CAAAwB,aAAA,CAACrB,SAAS;IAACsB,KAAK,EAAER,MAAM,CAACY;EAAa,CAAE,CACtB,CAAC;AAEzB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA"}
1
+ {"version":3,"names":["React","CallControlsButton","PhoneDown","ButtonTestIds","useCall","useCallStateHooks","CallingState","useTheme","HangUpCallButton","_ref","onPressHandler","onHangupCallHandler","call","useCallCallingState","callingState","theme","colors","hangupCallButton","onPress","LEFT","leave","error","console","createElement","color","style","testID","HANG_UP_CALL","static_white"],"sourceRoot":"../../../../../src","sources":["components/Call/CallControls/HangupCallButton.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,kBAAkB,QAAQ,sBAAsB;AACzD,SAASC,SAAS,QAAQ,gBAAgB;AAC1C,SAASC,aAAa,QAAQ,4BAA4B;AAC1D,SAASC,OAAO,EAAEC,iBAAiB,QAAQ,iCAAiC;AAC5E,SAASC,YAAY,QAAQ,yBAAyB;AACtD,SAASC,QAAQ,QAAQ,gCAAgC;;AAEzD;AACA;AACA;;AAeA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,gBAAgB,GAAGC,IAAA,IAGH;EAAA,IAHI;IAC/BC,cAAc;IACdC;EACqB,CAAC,GAAAF,IAAA;EACtB,MAAMG,IAAI,GAAGR,OAAO,CAAC,CAAC;EACtB,MAAM;IAAES;EAAoB,CAAC,GAAGR,iBAAiB,CAAC,CAAC;EACnD,MAAMS,YAAY,GAAGD,mBAAmB,CAAC,CAAC;EAC1C,MAAM;IACJE,KAAK,EAAE;MAAEC,MAAM;MAAEC;IAAiB;EACpC,CAAC,GAAGV,QAAQ,CAAC,CAAC;EAEd,MAAMW,OAAO,GAAG,MAAAA,CAAA,KAAY;IAC1B,IAAIR,cAAc,EAAE;MAClBA,cAAc,CAAC,CAAC;MAChB;IACF;IACA,IAAI;MACF,IAAII,YAAY,KAAKR,YAAY,CAACa,IAAI,EAAE;QACtC;MACF;MACA,OAAMP,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEQ,KAAK,CAAC,CAAC;MACnB,IAAIT,mBAAmB,EAAE;QACvBA,mBAAmB,CAAC,CAAC;MACvB;IACF,CAAC,CAAC,OAAOU,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,qBAAqB,EAAEA,KAAK,CAAC;IAC7C;EACF,CAAC;EAED,oBACErB,KAAA,CAAAuB,aAAA,CAACtB,kBAAkB;IACjBiB,OAAO,EAAEA,OAAQ;IACjBM,KAAK,EAAER,MAAM,CAACK,KAAM;IACpBI,KAAK,EAAER,gBAAiB;IACxBS,MAAM,EAAEvB,aAAa,CAACwB;EAAa,gBAEnC3B,KAAA,CAAAuB,aAAA,CAACrB,SAAS;IAACsB,KAAK,EAAER,MAAM,CAACY;EAAa,CAAE,CACtB,CAAC;AAEzB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA"}
@@ -2,14 +2,18 @@ import { useIosCallKeepEventsSetupEffect } from './useIosCallKeepEventsSetupEffe
2
2
  import { useIosVoipPushEventsSetupEffect } from './useIosVoipPushEventsSetupEffect';
3
3
  import { useProcessPushCallEffect } from './useProcessPushCallEffect';
4
4
  import { useInitAndroidTokenAndRest } from './useInitAndroidTokenAndRest';
5
+ import { useIosInitRemoteNotifications } from './useIosInitRemoteNotifications';
6
+ import { useProcessPushNonRingingCallEffect } from './useProcessPushNonRingingCallEffect';
5
7
 
6
8
  /**
7
9
  * This hook is used to do the initial setup for push notifications.
8
10
  * It must be used in a component which is a child of StreamVideo from bindings
9
11
  */
10
12
  export const usePushRegisterEffect = () => {
13
+ useIosInitRemoteNotifications();
11
14
  useIosCallKeepEventsSetupEffect();
12
15
  useIosVoipPushEventsSetupEffect();
16
+ useProcessPushNonRingingCallEffect();
13
17
  useProcessPushCallEffect();
14
18
  useInitAndroidTokenAndRest();
15
19
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useIosCallKeepEventsSetupEffect","useIosVoipPushEventsSetupEffect","useProcessPushCallEffect","useInitAndroidTokenAndRest","usePushRegisterEffect"],"sourceRoot":"../../../../src","sources":["hooks/push/index.ts"],"mappings":"AAAA,SAASA,+BAA+B,QAAQ,mCAAmC;AACnF,SAASC,+BAA+B,QAAQ,mCAAmC;AACnF,SAASC,wBAAwB,QAAQ,4BAA4B;AACrE,SAASC,0BAA0B,QAAQ,8BAA8B;;AAEzE;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EACzCJ,+BAA+B,CAAC,CAAC;EACjCC,+BAA+B,CAAC,CAAC;EACjCC,wBAAwB,CAAC,CAAC;EAC1BC,0BAA0B,CAAC,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"names":["useIosCallKeepEventsSetupEffect","useIosVoipPushEventsSetupEffect","useProcessPushCallEffect","useInitAndroidTokenAndRest","useIosInitRemoteNotifications","useProcessPushNonRingingCallEffect","usePushRegisterEffect"],"sourceRoot":"../../../../src","sources":["hooks/push/index.ts"],"mappings":"AAAA,SAASA,+BAA+B,QAAQ,mCAAmC;AACnF,SAASC,+BAA+B,QAAQ,mCAAmC;AACnF,SAASC,wBAAwB,QAAQ,4BAA4B;AACrE,SAASC,0BAA0B,QAAQ,8BAA8B;AACzE,SAASC,6BAA6B,QAAQ,iCAAiC;AAC/E,SAASC,kCAAkC,QAAQ,sCAAsC;;AAEzF;AACA;AACA;AACA;AACA,OAAO,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EACzCF,6BAA6B,CAAC,CAAC;EAC/BJ,+BAA+B,CAAC,CAAC;EACjCC,+BAA+B,CAAC,CAAC;EACjCI,kCAAkC,CAAC,CAAC;EACpCH,wBAAwB,CAAC,CAAC;EAC1BC,0BAA0B,CAAC,CAAC;AAC9B,CAAC"}
@@ -4,7 +4,7 @@ import { StreamVideoRN } from '../../utils';
4
4
  import { initAndroidPushToken } from '../../utils/push/android';
5
5
 
6
6
  /**
7
- * This hook is used to initialize the push token for Android and ask notification permissions.
7
+ * This hook is used to initialize the push token for Android.
8
8
  */
9
9
  export const useInitAndroidTokenAndRest = () => {
10
10
  var _useConnectedUser;
@@ -16,7 +16,13 @@ export const useInitAndroidTokenAndRest = () => {
16
16
  if (!client || !connectedUserId || !pushConfig) {
17
17
  return;
18
18
  }
19
- initAndroidPushToken(client, pushConfig);
19
+ let unsubscribe = () => {};
20
+ initAndroidPushToken(client, pushConfig, unsubscribeListener => {
21
+ unsubscribe = unsubscribeListener;
22
+ });
23
+ return () => {
24
+ unsubscribe();
25
+ };
20
26
  }, [client, connectedUserId]);
21
27
  };
22
28
  //# sourceMappingURL=useInitAndroidTokenAndRest.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useConnectedUser","useStreamVideoClient","useEffect","StreamVideoRN","initAndroidPushToken","useInitAndroidTokenAndRest","_useConnectedUser","client","connectedUserId","id","pushConfig","getConfig","push"],"sourceRoot":"../../../../src","sources":["hooks/push/useInitAndroidTokenAndRest.ts"],"mappings":"AAAA,SACEA,gBAAgB,EAChBC,oBAAoB,QACf,iCAAiC;AACxC,SAASC,SAAS,QAAQ,OAAO;AACjC,SAASC,aAAa,QAAQ,aAAa;AAC3C,SAASC,oBAAoB,QAAQ,0BAA0B;;AAE/D;AACA;AACA;AACA,OAAO,MAAMC,0BAA0B,GAAGA,CAAA,KAAM;EAAA,IAAAC,iBAAA;EAC9C,MAAMC,MAAM,GAAGN,oBAAoB,CAAC,CAAC;EACrC,MAAMO,eAAe,IAAAF,iBAAA,GAAGN,gBAAgB,CAAC,CAAC,cAAAM,iBAAA,uBAAlBA,iBAAA,CAAoBG,EAAE;EAC9CP,SAAS,CAAC,MAAM;IACd,MAAMQ,UAAU,GAAGP,aAAa,CAACQ,SAAS,CAAC,CAAC,CAACC,IAAI;IACjD;IACA,IAAI,CAACL,MAAM,IAAI,CAACC,eAAe,IAAI,CAACE,UAAU,EAAE;MAC9C;IACF;IACAN,oBAAoB,CAACG,MAAM,EAAEG,UAAU,CAAC;EAC1C,CAAC,EAAE,CAACH,MAAM,EAAEC,eAAe,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"names":["useConnectedUser","useStreamVideoClient","useEffect","StreamVideoRN","initAndroidPushToken","useInitAndroidTokenAndRest","_useConnectedUser","client","connectedUserId","id","pushConfig","getConfig","push","unsubscribe","unsubscribeListener"],"sourceRoot":"../../../../src","sources":["hooks/push/useInitAndroidTokenAndRest.ts"],"mappings":"AAAA,SACEA,gBAAgB,EAChBC,oBAAoB,QACf,iCAAiC;AACxC,SAASC,SAAS,QAAQ,OAAO;AACjC,SAASC,aAAa,QAAQ,aAAa;AAC3C,SAASC,oBAAoB,QAAQ,0BAA0B;;AAE/D;AACA;AACA;AACA,OAAO,MAAMC,0BAA0B,GAAGA,CAAA,KAAM;EAAA,IAAAC,iBAAA;EAC9C,MAAMC,MAAM,GAAGN,oBAAoB,CAAC,CAAC;EACrC,MAAMO,eAAe,IAAAF,iBAAA,GAAGN,gBAAgB,CAAC,CAAC,cAAAM,iBAAA,uBAAlBA,iBAAA,CAAoBG,EAAE;EAC9CP,SAAS,CAAC,MAAM;IACd,MAAMQ,UAAU,GAAGP,aAAa,CAACQ,SAAS,CAAC,CAAC,CAACC,IAAI;IACjD;IACA,IAAI,CAACL,MAAM,IAAI,CAACC,eAAe,IAAI,CAACE,UAAU,EAAE;MAC9C;IACF;IACA,IAAIG,WAAW,GAAGA,CAAA,KAAM,CAAC,CAAC;IAC1BT,oBAAoB,CAACG,MAAM,EAAEG,UAAU,EAAGI,mBAAmB,IAAK;MAChED,WAAW,GAAGC,mBAAmB;IACnC,CAAC,CAAC;IACF,OAAO,MAAM;MACXD,WAAW,CAAC,CAAC;IACf,CAAC;EACH,CAAC,EAAE,CAACN,MAAM,EAAEC,eAAe,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { useConnectedUser, useStreamVideoClient } from '@stream-io/video-react-bindings';
2
+ import { useEffect } from 'react';
3
+ import { StreamVideoRN } from '../../utils';
4
+ import { initIosNonVoipToken } from '../../utils/push/ios';
5
+
6
+ /**
7
+ * This hook is used to initialize the push token for iOS.
8
+ */
9
+ export const useIosInitRemoteNotifications = () => {
10
+ var _useConnectedUser;
11
+ const client = useStreamVideoClient();
12
+ const connectedUserId = (_useConnectedUser = useConnectedUser()) === null || _useConnectedUser === void 0 ? void 0 : _useConnectedUser.id;
13
+ useEffect(() => {
14
+ const pushConfig = StreamVideoRN.getConfig().push;
15
+ // NOTE: we need to wait for user to be connected before we can send the push token
16
+ if (!client || !connectedUserId || !pushConfig) {
17
+ return;
18
+ }
19
+ let unsubscribe = () => {};
20
+ initIosNonVoipToken(client, pushConfig, unsubscribeListener => {
21
+ unsubscribe = unsubscribeListener;
22
+ });
23
+ return () => {
24
+ unsubscribe();
25
+ };
26
+ }, [client, connectedUserId]);
27
+ };
28
+ //# sourceMappingURL=useIosInitRemoteNotifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useConnectedUser","useStreamVideoClient","useEffect","StreamVideoRN","initIosNonVoipToken","useIosInitRemoteNotifications","_useConnectedUser","client","connectedUserId","id","pushConfig","getConfig","push","unsubscribe","unsubscribeListener"],"sourceRoot":"../../../../src","sources":["hooks/push/useIosInitRemoteNotifications.ts"],"mappings":"AAAA,SACEA,gBAAgB,EAChBC,oBAAoB,QACf,iCAAiC;AACxC,SAASC,SAAS,QAAQ,OAAO;AACjC,SAASC,aAAa,QAAQ,aAAa;AAC3C,SAASC,mBAAmB,QAAQ,sBAAsB;;AAE1D;AACA;AACA;AACA,OAAO,MAAMC,6BAA6B,GAAGA,CAAA,KAAM;EAAA,IAAAC,iBAAA;EACjD,MAAMC,MAAM,GAAGN,oBAAoB,CAAC,CAAC;EACrC,MAAMO,eAAe,IAAAF,iBAAA,GAAGN,gBAAgB,CAAC,CAAC,cAAAM,iBAAA,uBAAlBA,iBAAA,CAAoBG,EAAE;EAC9CP,SAAS,CAAC,MAAM;IACd,MAAMQ,UAAU,GAAGP,aAAa,CAACQ,SAAS,CAAC,CAAC,CAACC,IAAI;IACjD;IACA,IAAI,CAACL,MAAM,IAAI,CAACC,eAAe,IAAI,CAACE,UAAU,EAAE;MAC9C;IACF;IACA,IAAIG,WAAW,GAAGA,CAAA,KAAM,CAAC,CAAC;IAC1BT,mBAAmB,CAACG,MAAM,EAAEG,UAAU,EAAGI,mBAAmB,IAAK;MAC/DD,WAAW,GAAGC,mBAAmB;IACnC,CAAC,CAAC;IACF,OAAO,MAAM;MACXD,WAAW,CAAC,CAAC;IACf,CAAC;EACH,CAAC,EAAE,CAACN,MAAM,EAAEC,eAAe,CAAC,CAAC;AAC/B,CAAC"}
@@ -4,6 +4,8 @@ import { Platform } from 'react-native';
4
4
  import { StreamVideoRN } from '../../utils';
5
5
  import { useStreamVideoClient } from '@stream-io/video-react-bindings';
6
6
  import { voipPushNotificationCallCId$ } from '../../utils/push/rxSubjects';
7
+ import { setPushLogoutCallback } from '../../utils/internal/pushLogoutCallback';
8
+ let lastVoipToken = '';
7
9
 
8
10
  /**
9
11
  * This hook is used to do the initial setup of listeners
@@ -16,13 +18,33 @@ export const useIosVoipPushEventsSetupEffect = () => {
16
18
  if (Platform.OS !== 'ios' || !pushConfig || !client) {
17
19
  return;
18
20
  }
21
+ if (lastVoipToken) {
22
+ // send token to stream (userId might have switched on the same device)
23
+ const push_provider_name = pushConfig.ios.pushProviderName;
24
+ if (!push_provider_name) {
25
+ return;
26
+ }
27
+ client.addVoipDevice(lastVoipToken, 'apn', push_provider_name).catch(err => {
28
+ console.warn('Failed to send voip token to stream', err);
29
+ });
30
+ }
19
31
  const voipPushNotification = getVoipPushNotificationLib();
20
32
  const onTokenReceived = token => {
21
33
  // send token to stream
34
+ lastVoipToken = token;
22
35
  const push_provider_name = pushConfig.ios.pushProviderName;
36
+ if (!push_provider_name) {
37
+ return;
38
+ }
23
39
  client.addVoipDevice(token, 'apn', push_provider_name).catch(err => {
24
40
  console.warn('Failed to send voip token to stream', err);
25
41
  });
42
+ // set the logout callback
43
+ setPushLogoutCallback(() => {
44
+ client.removeDevice(token).catch(err => {
45
+ console.warn('Failed to remove voip token from stream', err);
46
+ });
47
+ });
26
48
  };
27
49
  // fired when PushKit give us the latest token
28
50
  voipPushNotification.addEventListener('register', token => {
@@ -67,13 +89,36 @@ export const useIosVoipPushEventsSetupEffect = () => {
67
89
  }, []);
68
90
  };
69
91
  const onNotificationReceived = notification => {
70
- var _notification$stream, _notification$stream2;
92
+ var _notification$stream, _notification$stream2, _notification$stream3;
93
+ /* --- Example payload ---
94
+ {
95
+ "aps": {
96
+ "alert": {
97
+ "body": "",
98
+ "title": "Vishal Narkhede is calling you"
99
+ },
100
+ "badge": 0,
101
+ "category": "stream.video",
102
+ "mutable-content": 1
103
+ },
104
+ "stream": {
105
+ "call_cid": "default:ixbm7y0k74pbjnq",
106
+ "call_display_name": "",
107
+ "created_by_display_name": "Vishal Narkhede",
108
+ "created_by_id": "vishalexpo",
109
+ "receiver_id": "santhoshexpo",
110
+ "sender": "stream.video",
111
+ "type": "call.ring",
112
+ "version": "v2"
113
+ }
114
+ } */
71
115
  const sender = notification === null || notification === void 0 || (_notification$stream = notification.stream) === null || _notification$stream === void 0 ? void 0 : _notification$stream.sender;
72
- // do not process any other notifications other than stream.video
73
- if (sender !== 'stream.video') {
116
+ const type = notification === null || notification === void 0 || (_notification$stream2 = notification.stream) === null || _notification$stream2 === void 0 ? void 0 : _notification$stream2.type;
117
+ // do not process any other notifications other than stream.video or ringing
118
+ if (sender !== 'stream.video' && type !== 'call.ring') {
74
119
  return;
75
120
  }
76
- const call_cid = notification === null || notification === void 0 || (_notification$stream2 = notification.stream) === null || _notification$stream2 === void 0 ? void 0 : _notification$stream2.call_cid;
121
+ const call_cid = notification === null || notification === void 0 || (_notification$stream3 = notification.stream) === null || _notification$stream3 === void 0 ? void 0 : _notification$stream3.call_cid;
77
122
  if (call_cid) {
78
123
  // send the info to this subject, it is listened by callkeep events
79
124
  // callkeep events will then accept/reject the call
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","getVoipPushNotificationLib","Platform","StreamVideoRN","useStreamVideoClient","voipPushNotificationCallCId$","useIosVoipPushEventsSetupEffect","client","pushConfig","getConfig","push","OS","voipPushNotification","onTokenReceived","token","push_provider_name","ios","pushProviderName","addVoipDevice","catch","err","console","warn","addEventListener","events","Array","isArray","length","voipPushEvent","name","data","onNotificationReceived","removeEventListener","notification","_notification$stream","_notification$stream2","sender","stream","call_cid","next"],"sourceRoot":"../../../../src","sources":["hooks/push/useIosVoipPushEventsSetupEffect.ts"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,0BAA0B,QAAQ,uBAAuB;AAElE,SAASC,QAAQ,QAAQ,cAAc;AACvC,SAASC,aAAa,QAAQ,aAAa;AAC3C,SAASC,oBAAoB,QAAQ,iCAAiC;AACtE,SAASC,4BAA4B,QAAQ,6BAA6B;;AAE1E;AACA;AACA;AACA;AACA,OAAO,MAAMC,+BAA+B,GAAGA,CAAA,KAAM;EACnD,MAAMC,MAAM,GAAGH,oBAAoB,CAAC,CAAC;EACrCJ,SAAS,CAAC,MAAM;IACd,MAAMQ,UAAU,GAAGL,aAAa,CAACM,SAAS,CAAC,CAAC,CAACC,IAAI;IACjD,IAAIR,QAAQ,CAACS,EAAE,KAAK,KAAK,IAAI,CAACH,UAAU,IAAI,CAACD,MAAM,EAAE;MACnD;IACF;IACA,MAAMK,oBAAoB,GAAGX,0BAA0B,CAAC,CAAC;IAEzD,MAAMY,eAAe,GAAIC,KAAa,IAAK;MACzC;MACA,MAAMC,kBAAkB,GAAGP,UAAU,CAACQ,GAAG,CAACC,gBAAgB;MAC1DV,MAAM,CAACW,aAAa,CAACJ,KAAK,EAAE,KAAK,EAAEC,kBAAkB,CAAC,CAACI,KAAK,CAAEC,GAAG,IAAK;QACpEC,OAAO,CAACC,IAAI,CAAC,qCAAqC,EAAEF,GAAG,CAAC;MAC1D,CAAC,CAAC;IACJ,CAAC;IACD;IACAR,oBAAoB,CAACW,gBAAgB,CAAC,UAAU,EAAGT,KAAK,IAAK;MAC3DD,eAAe,CAACC,KAAK,CAAC;IACxB,CAAC,CAAC;;IAEF;IACAF,oBAAoB,CAACW,gBAAgB,CAAC,mBAAmB,EAAGC,MAAM,IAAK;MACrE,IAAI,CAACA,MAAM,IAAI,CAACC,KAAK,CAACC,OAAO,CAACF,MAAM,CAAC,IAAIA,MAAM,CAACG,MAAM,GAAG,CAAC,EAAE;QAC1D;MACF;MACA,KAAK,IAAIC,aAAa,IAAIJ,MAAM,EAAE;QAChC,IAAI;UAAEK,IAAI;UAAEC;QAAK,CAAC,GAAGF,aAAa;QAClC,IAAIC,IAAI,KAAK,8CAA8C,EAAE;UAC3DhB,eAAe,CAACiB,IAAI,CAAC;QACvB,CAAC,MAAM,IAAID,IAAI,KAAK,2CAA2C,EAAE;UAC/DE,sBAAsB,CAACD,IAAI,CAAC;QAC9B;MACF;IACF,CAAC,CAAC;IACF,OAAO,MAAM;MACXlB,oBAAoB,CAACoB,mBAAmB,CAAC,mBAAmB,CAAC;MAC7DpB,oBAAoB,CAACoB,mBAAmB,CAAC,UAAU,CAAC;IACtD,CAAC;EACH,CAAC,EAAE,CAACzB,MAAM,CAAC,CAAC;EAEZP,SAAS,CAAC,MAAM;IACd,MAAMQ,UAAU,GAAGL,aAAa,CAACM,SAAS,CAAC,CAAC,CAACC,IAAI;IACjD,IAAIR,QAAQ,CAACS,EAAE,KAAK,KAAK,IAAI,CAACH,UAAU,EAAE;MACxC;IACF;IACA,MAAMI,oBAAoB,GAAGX,0BAA0B,CAAC,CAAC;IACzD;IACAW,oBAAoB,CAACW,gBAAgB,CAAC,cAAc,EAAGU,YAAY,IAAK;MACtEF,sBAAsB,CAACE,YAAY,CAAC;IACtC,CAAC,CAAC;IACF,OAAO,MAAM;MACXrB,oBAAoB,CAACoB,mBAAmB,CAAC,cAAc,CAAC;IAC1D,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AACR,CAAC;AAED,MAAMD,sBAAsB,GAAIE,YAAiB,IAAK;EAAA,IAAAC,oBAAA,EAAAC,qBAAA;EACpD,MAAMC,MAAM,GAAGH,YAAY,aAAZA,YAAY,gBAAAC,oBAAA,GAAZD,YAAY,CAAEI,MAAM,cAAAH,oBAAA,uBAApBA,oBAAA,CAAsBE,MAAM;EAC3C;EACA,IAAIA,MAAM,KAAK,cAAc,EAAE;IAC7B;EACF;EACA,MAAME,QAAQ,GAAGL,YAAY,aAAZA,YAAY,gBAAAE,qBAAA,GAAZF,YAAY,CAAEI,MAAM,cAAAF,qBAAA,uBAApBA,qBAAA,CAAsBG,QAAQ;EAC/C,IAAIA,QAAQ,EAAE;IACZ;IACA;IACAjC,4BAA4B,CAACkC,IAAI,CAACD,QAAQ,CAAC;EAC7C;AACF,CAAC"}
1
+ {"version":3,"names":["useEffect","getVoipPushNotificationLib","Platform","StreamVideoRN","useStreamVideoClient","voipPushNotificationCallCId$","setPushLogoutCallback","lastVoipToken","useIosVoipPushEventsSetupEffect","client","pushConfig","getConfig","push","OS","push_provider_name","ios","pushProviderName","addVoipDevice","catch","err","console","warn","voipPushNotification","onTokenReceived","token","removeDevice","addEventListener","events","Array","isArray","length","voipPushEvent","name","data","onNotificationReceived","removeEventListener","notification","_notification$stream","_notification$stream2","_notification$stream3","sender","stream","type","call_cid","next"],"sourceRoot":"../../../../src","sources":["hooks/push/useIosVoipPushEventsSetupEffect.ts"],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { pushNonRingingCallData$ } from '../../utils/push/rxSubjects';
2
+ import { useEffect } from 'react';
3
+ import { StreamVideoRN } from '../../utils';
4
+ import { useConnectedUser, useStreamVideoClient } from '@stream-io/video-react-bindings';
5
+ import { filter } from 'rxjs/operators';
6
+ import { processNonIncomingCallFromPush } from '../../utils/push/utils';
7
+
8
+ /**
9
+ * This hook is used to process the non ringing call data via push notifications using the relevant rxjs subject
10
+ * Note: this effect cannot work when push notifications are received when the app is in quit state or in other words when the client is not connected with a websocket.
11
+ * So we essentially run this effect only when the client is connected with a websocket.
12
+ */
13
+ export const useProcessPushNonRingingCallEffect = () => {
14
+ var _useConnectedUser;
15
+ const client = useStreamVideoClient();
16
+ const connectedUserId = (_useConnectedUser = useConnectedUser()) === null || _useConnectedUser === void 0 ? void 0 : _useConnectedUser.id;
17
+ // The Effect to join/reject call automatically when incoming call was received and processed from push notification
18
+ useEffect(() => {
19
+ const pushConfig = StreamVideoRN.getConfig().push;
20
+ if (!pushConfig || !client || !connectedUserId) {
21
+ return;
22
+ }
23
+ const subscription = pushNonRingingCallData$.pipe(filter(NotUndefined)).subscribe(async _ref => {
24
+ let {
25
+ cid,
26
+ type
27
+ } = _ref;
28
+ await processNonIncomingCallFromPush(client, cid, type);
29
+ pushNonRingingCallData$.next(undefined); // remove the current data to avoid processing again
30
+ });
31
+
32
+ return () => {
33
+ subscription.unsubscribe();
34
+ };
35
+ }, [client, connectedUserId]);
36
+ };
37
+
38
+ /**
39
+ * A type guard to check if the data is not undefined
40
+ */
41
+ function NotUndefined(data) {
42
+ return data !== undefined;
43
+ }
44
+ //# sourceMappingURL=useProcessPushNonRingingCallEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["pushNonRingingCallData$","useEffect","StreamVideoRN","useConnectedUser","useStreamVideoClient","filter","processNonIncomingCallFromPush","useProcessPushNonRingingCallEffect","_useConnectedUser","client","connectedUserId","id","pushConfig","getConfig","push","subscription","pipe","NotUndefined","subscribe","_ref","cid","type","next","undefined","unsubscribe","data"],"sourceRoot":"../../../../src","sources":["hooks/push/useProcessPushNonRingingCallEffect.ts"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ,6BAA6B;AACrE,SAASC,SAAS,QAAQ,OAAO;AACjC,SAASC,aAAa,QAAQ,aAAa;AAC3C,SACEC,gBAAgB,EAChBC,oBAAoB,QACf,iCAAiC;AACxC,SAASC,MAAM,QAAQ,gBAAgB;AACvC,SAASC,8BAA8B,QAAQ,wBAAwB;;AAEvE;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,kCAAkC,GAAGA,CAAA,KAAM;EAAA,IAAAC,iBAAA;EACtD,MAAMC,MAAM,GAAGL,oBAAoB,CAAC,CAAC;EACrC,MAAMM,eAAe,IAAAF,iBAAA,GAAGL,gBAAgB,CAAC,CAAC,cAAAK,iBAAA,uBAAlBA,iBAAA,CAAoBG,EAAE;EAC9C;EACAV,SAAS,CAAC,MAAM;IACd,MAAMW,UAAU,GAAGV,aAAa,CAACW,SAAS,CAAC,CAAC,CAACC,IAAI;IACjD,IAAI,CAACF,UAAU,IAAI,CAACH,MAAM,IAAI,CAACC,eAAe,EAAE;MAC9C;IACF;IAEA,MAAMK,YAAY,GAAGf,uBAAuB,CACzCgB,IAAI,CAACX,MAAM,CAACY,YAAY,CAAC,CAAC,CAC1BC,SAAS,CAAC,MAAAC,IAAA,IAAyB;MAAA,IAAlB;QAAEC,GAAG;QAAEC;MAAK,CAAC,GAAAF,IAAA;MAC7B,MAAMb,8BAA8B,CAACG,MAAM,EAAEW,GAAG,EAAEC,IAAI,CAAC;MACvDrB,uBAAuB,CAACsB,IAAI,CAACC,SAAS,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC;;IAEJ,OAAO,MAAM;MACXR,YAAY,CAACS,WAAW,CAAC,CAAC;IAC5B,CAAC;EACH,CAAC,EAAE,CAACf,MAAM,EAAEC,eAAe,CAAC,CAAC;AAC/B,CAAC;;AAED;AACA;AACA;AACA,SAASO,YAAYA,CAAIQ,IAAmB,EAAa;EACvD,OAAOA,IAAI,KAAKF,SAAS;AAC3B"}
@@ -1,5 +1,8 @@
1
1
  import { AndroidImportance } from '@notifee/react-native';
2
2
  import { setupFirebaseHandlerAndroid } from '../push/android';
3
+ import pushLogoutCallbacks from '../internal/pushLogoutCallback';
4
+ import { setupRemoteNotificationsHandleriOS } from '../push/ios';
5
+ import newNotificationCallbacks from '../internal/newNotificationCallbacks';
3
6
  const DEFAULT_STREAM_VIDEO_CONFIG = {
4
7
  foregroundService: {
5
8
  android: {
@@ -55,9 +58,38 @@ export class StreamVideoRN {
55
58
  this.config.push = pushConfig;
56
59
  // After getting the config we should setup callkeep events, firebase handler asap to handle incoming calls from a dead state
57
60
  setupFirebaseHandlerAndroid(pushConfig);
61
+ // setup ios handler for non-voip push notifications asap
62
+ setupRemoteNotificationsHandleriOS(pushConfig);
58
63
  }
59
64
  static getConfig() {
60
65
  return this.config;
61
66
  }
67
+
68
+ /**
69
+ * This is the function to be called when the push token must be removed.
70
+ * Typically used on user logout.
71
+ */
72
+ static onPushLogout() {
73
+ if (pushLogoutCallbacks.current) {
74
+ pushLogoutCallbacks.current.forEach(callback => callback());
75
+ }
76
+ }
77
+
78
+ /**
79
+ * This function is used to add a callback to be called when a new call notification is received.
80
+ * @param callback
81
+ * @returns Unsubscribe function
82
+ */
83
+ static addOnNewCallNotificationListener(callback) {
84
+ if (!newNotificationCallbacks.current) {
85
+ newNotificationCallbacks.current = [callback];
86
+ } else {
87
+ newNotificationCallbacks.current.push(callback);
88
+ }
89
+ return () => {
90
+ var _newNotificationCallb;
91
+ newNotificationCallbacks.current = (_newNotificationCallb = newNotificationCallbacks.current) === null || _newNotificationCallb === void 0 ? void 0 : _newNotificationCallb.filter(cb => cb !== callback);
92
+ };
93
+ }
62
94
  }
63
95
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["AndroidImportance","setupFirebaseHandlerAndroid","DEFAULT_STREAM_VIDEO_CONFIG","foregroundService","android","channel","id","name","lights","vibration","importance","DEFAULT","notificationTexts","title","body","StreamVideoRN","config","updateConfig","setPushConfig","pushConfig","push","getConfig"],"sourceRoot":"../../../../src","sources":["utils/StreamVideoRN/index.ts"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,2BAA2B,QAAQ,iBAAiB;AAG7D,MAAMC,2BAA8C,GAAG;EACrDC,iBAAiB,EAAE;IACjBC,OAAO,EAAE;MACPC,OAAO,EAAE;QACPC,EAAE,EAAE,gCAAgC;QACpCC,IAAI,EAAE,yCAAyC;QAC/CC,MAAM,EAAE,KAAK;QACbC,SAAS,EAAE,KAAK;QAChBC,UAAU,EAAEV,iBAAiB,CAACW;MAChC,CAAC;MACDC,iBAAiB,EAAE;QACjBC,KAAK,EAAE,kBAAkB;QACzBC,IAAI,EAAE;MACR;IACF;EACF;AACF,CAAC;AAED,OAAO,MAAMC,aAAa,CAAC;EACzB,OAAeC,MAAM,GAAGd,2BAA2B;;EAEnD;AACF;AACA;AACA;AACA;EACE,OAAOe,YAAYA,CAACA,YAAsD,EAAE;IAC1E,IAAI,CAACD,MAAM,GAAG;MACZ,GAAG,IAAI,CAACA,MAAM;MACd,GAAGC;IACL,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,aAAaA,CAACC,UAAkD,EAAE;IACvE,IAAI,IAAI,CAACH,MAAM,CAACI,IAAI,EAAE;MACpB;MACA;IACF;IACA,IAAI,CAACJ,MAAM,CAACI,IAAI,GAAGD,UAAU;IAC7B;IACAlB,2BAA2B,CAACkB,UAAU,CAAC;EACzC;EAEA,OAAOE,SAASA,CAAA,EAAG;IACjB,OAAO,IAAI,CAACL,MAAM;EACpB;AACF"}
1
+ {"version":3,"names":["AndroidImportance","setupFirebaseHandlerAndroid","pushLogoutCallbacks","setupRemoteNotificationsHandleriOS","newNotificationCallbacks","DEFAULT_STREAM_VIDEO_CONFIG","foregroundService","android","channel","id","name","lights","vibration","importance","DEFAULT","notificationTexts","title","body","StreamVideoRN","config","updateConfig","setPushConfig","pushConfig","push","getConfig","onPushLogout","current","forEach","callback","addOnNewCallNotificationListener","_newNotificationCallb","filter","cb"],"sourceRoot":"../../../../src","sources":["utils/StreamVideoRN/index.ts"],"mappings":"AAAA,SAASA,iBAAiB,QAAQ,uBAAuB;AACzD,SAASC,2BAA2B,QAAQ,iBAAiB;AAE7D,OAAOC,mBAAmB,MAAM,gCAAgC;AAChE,SAASC,kCAAkC,QAAQ,aAAa;AAChE,OAAOC,wBAAwB,MAExB,sCAAsC;AAE7C,MAAMC,2BAA8C,GAAG;EACrDC,iBAAiB,EAAE;IACjBC,OAAO,EAAE;MACPC,OAAO,EAAE;QACPC,EAAE,EAAE,gCAAgC;QACpCC,IAAI,EAAE,yCAAyC;QAC/CC,MAAM,EAAE,KAAK;QACbC,SAAS,EAAE,KAAK;QAChBC,UAAU,EAAEb,iBAAiB,CAACc;MAChC,CAAC;MACDC,iBAAiB,EAAE;QACjBC,KAAK,EAAE,kBAAkB;QACzBC,IAAI,EAAE;MACR;IACF;EACF;AACF,CAAC;AAED,OAAO,MAAMC,aAAa,CAAC;EACzB,OAAeC,MAAM,GAAGd,2BAA2B;;EAEnD;AACF;AACA;AACA;AACA;EACE,OAAOe,YAAYA,CAACA,YAAsD,EAAE;IAC1E,IAAI,CAACD,MAAM,GAAG;MACZ,GAAG,IAAI,CAACA,MAAM;MACd,GAAGC;IACL,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,aAAaA,CAACC,UAAkD,EAAE;IACvE,IAAI,IAAI,CAACH,MAAM,CAACI,IAAI,EAAE;MACpB;MACA;IACF;IACA,IAAI,CAACJ,MAAM,CAACI,IAAI,GAAGD,UAAU;IAC7B;IACArB,2BAA2B,CAACqB,UAAU,CAAC;IACvC;IACAnB,kCAAkC,CAACmB,UAAU,CAAC;EAChD;EAEA,OAAOE,SAASA,CAAA,EAAG;IACjB,OAAO,IAAI,CAACL,MAAM;EACpB;;EAEA;AACF;AACA;AACA;EACE,OAAOM,YAAYA,CAAA,EAAG;IACpB,IAAIvB,mBAAmB,CAACwB,OAAO,EAAE;MAC/BxB,mBAAmB,CAACwB,OAAO,CAACC,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAAC,CAAC,CAAC;IAC/D;EACF;;EAEA;AACF;AACA;AACA;AACA;EACE,OAAOC,gCAAgCA,CACrCD,QAAqC,EACrC;IACA,IAAI,CAACxB,wBAAwB,CAACsB,OAAO,EAAE;MACrCtB,wBAAwB,CAACsB,OAAO,GAAG,CAACE,QAAQ,CAAC;IAC/C,CAAC,MAAM;MACLxB,wBAAwB,CAACsB,OAAO,CAACH,IAAI,CAACK,QAAQ,CAAC;IACjD;IACA,OAAO,MAAM;MAAA,IAAAE,qBAAA;MACX1B,wBAAwB,CAACsB,OAAO,IAAAI,qBAAA,GAC9B1B,wBAAwB,CAACsB,OAAO,cAAAI,qBAAA,uBAAhCA,qBAAA,CAAkCC,MAAM,CAAEC,EAAE,IAAKA,EAAE,KAAKJ,QAAQ,CAAC;IACrE,CAAC;EACH;AACF"}
@@ -0,0 +1,10 @@
1
+ let lastCid = '';
2
+ const newNotificationCallbacks = {};
3
+ export const onNewCallNotification = (call, notificationType) => {
4
+ if (newNotificationCallbacks.current && lastCid !== call.cid) {
5
+ newNotificationCallbacks.current.forEach(callback => callback(call, notificationType));
6
+ lastCid = call.cid;
7
+ }
8
+ };
9
+ export default newNotificationCallbacks;
10
+ //# sourceMappingURL=newNotificationCallbacks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["lastCid","newNotificationCallbacks","onNewCallNotification","call","notificationType","current","cid","forEach","callback"],"sourceRoot":"../../../../src","sources":["utils/internal/newNotificationCallbacks.ts"],"mappings":"AAYA,IAAIA,OAAO,GAAG,EAAE;AAEhB,MAAMC,wBAAkD,GAAG,CAAC,CAAC;AAE7D,OAAO,MAAMC,qBAAkD,GAAGA,CAChEC,IAAI,EACJC,gBAAgB,KACb;EACH,IAAIH,wBAAwB,CAACI,OAAO,IAAIL,OAAO,KAAKG,IAAI,CAACG,GAAG,EAAE;IAC5DL,wBAAwB,CAACI,OAAO,CAACE,OAAO,CAAEC,QAAQ,IAChDA,QAAQ,CAACL,IAAI,EAAEC,gBAAgB,CACjC,CAAC;IACDJ,OAAO,GAAGG,IAAI,CAACG,GAAG;EACpB;AACF,CAAC;AAED,eAAeL,wBAAwB"}
@@ -0,0 +1,10 @@
1
+ let pushLogoutCallbacks = {};
2
+ export const setPushLogoutCallback = callback => {
3
+ if (!pushLogoutCallbacks.current) {
4
+ pushLogoutCallbacks.current = [callback];
5
+ } else {
6
+ pushLogoutCallbacks.current.push(callback);
7
+ }
8
+ };
9
+ export default pushLogoutCallbacks;
10
+ //# sourceMappingURL=pushLogoutCallback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["pushLogoutCallbacks","setPushLogoutCallback","callback","current","push"],"sourceRoot":"../../../../src","sources":["utils/internal/pushLogoutCallback.ts"],"mappings":"AAMA,IAAIA,mBAAwC,GAAG,CAAC,CAAC;AAEjD,OAAO,MAAMC,qBAAqB,GAAIC,QAAoB,IAAK;EAC7D,IAAI,CAACF,mBAAmB,CAACG,OAAO,EAAE;IAChCH,mBAAmB,CAACG,OAAO,GAAG,CAACD,QAAQ,CAAC;EAC1C,CAAC,MAAM;IACLF,mBAAmB,CAACG,OAAO,CAACC,IAAI,CAACF,QAAQ,CAAC;EAC5C;AACF,CAAC;AAED,eAAeF,mBAAmB"}