@stream-io/video-react-native-sdk 0.0.1-alpha.176 → 0.0.1-alpha.178

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 (78) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +7 -5
  3. package/dist/jest-setup.js +2 -0
  4. package/dist/jest-setup.js.map +1 -1
  5. package/dist/src/components/ParticipantReaction.js +29 -4
  6. package/dist/src/components/ParticipantReaction.js.map +1 -1
  7. package/dist/src/components/ReactionsModal.d.ts +1 -1
  8. package/dist/src/components/ReactionsModal.js +25 -2
  9. package/dist/src/components/ReactionsModal.js.map +1 -1
  10. package/dist/src/hooks/index.d.ts +2 -1
  11. package/dist/src/hooks/index.js +2 -1
  12. package/dist/src/hooks/index.js.map +1 -1
  13. package/dist/src/hooks/push/index.d.ts +5 -0
  14. package/dist/src/hooks/push/index.js +19 -0
  15. package/dist/src/hooks/push/index.js.map +1 -0
  16. package/dist/src/hooks/push/useInitAndroidTokenAndRest.d.ts +4 -0
  17. package/dist/src/hooks/push/useInitAndroidTokenAndRest.js +24 -0
  18. package/dist/src/hooks/push/useInitAndroidTokenAndRest.js.map +1 -0
  19. package/dist/src/hooks/push/useIosCallKeepEffect.d.ts +4 -0
  20. package/dist/src/hooks/push/useIosCallKeepEffect.js +80 -0
  21. package/dist/src/hooks/push/useIosCallKeepEffect.js.map +1 -0
  22. package/dist/src/hooks/push/useIosPushEffect.d.ts +5 -0
  23. package/dist/src/hooks/push/useIosPushEffect.js +66 -0
  24. package/dist/src/hooks/push/useIosPushEffect.js.map +1 -0
  25. package/dist/src/hooks/push/useProcessPushCallEffect.d.ts +6 -0
  26. package/dist/src/hooks/push/useProcessPushCallEffect.js +51 -0
  27. package/dist/src/hooks/push/useProcessPushCallEffect.js.map +1 -0
  28. package/dist/src/hooks/useAndroidKeepCallAliveEffect.d.ts +6 -0
  29. package/dist/src/hooks/useAndroidKeepCallAliveEffect.js +117 -0
  30. package/dist/src/hooks/useAndroidKeepCallAliveEffect.js.map +1 -0
  31. package/dist/src/providers/StreamCall.d.ts +1 -1
  32. package/dist/src/providers/StreamCall.js +17 -4
  33. package/dist/src/providers/StreamCall.js.map +1 -1
  34. package/dist/src/providers/StreamVideo.js +10 -0
  35. package/dist/src/providers/StreamVideo.js.map +1 -1
  36. package/dist/src/utils/StreamVideoRN/index.d.ts +24 -0
  37. package/dist/src/utils/StreamVideoRN/index.js +65 -0
  38. package/dist/src/utils/StreamVideoRN/index.js.map +1 -0
  39. package/dist/src/utils/StreamVideoRN/types.d.ts +103 -0
  40. package/dist/src/utils/StreamVideoRN/types.js +3 -0
  41. package/dist/src/utils/StreamVideoRN/types.js.map +1 -0
  42. package/dist/src/utils/push/libs.d.ts +9 -0
  43. package/dist/src/utils/push/libs.js +40 -0
  44. package/dist/src/utils/push/libs.js.map +1 -0
  45. package/dist/src/utils/push/rxSubjects.d.ts +3 -0
  46. package/dist/src/utils/push/rxSubjects.js +7 -0
  47. package/dist/src/utils/push/rxSubjects.js.map +1 -0
  48. package/dist/src/utils/push/utils.d.ts +17 -0
  49. package/dist/src/utils/push/utils.js +247 -0
  50. package/dist/src/utils/push/utils.js.map +1 -0
  51. package/dist/src/utils/verifyAndroidBluetoothPermissions.js +2 -1
  52. package/dist/src/utils/verifyAndroidBluetoothPermissions.js.map +1 -1
  53. package/package.json +25 -8
  54. package/src/components/ParticipantReaction.tsx +5 -4
  55. package/src/components/ReactionsModal.tsx +2 -2
  56. package/src/hooks/index.ts +2 -1
  57. package/src/hooks/push/index.ts +15 -0
  58. package/src/hooks/push/useInitAndroidTokenAndRest.ts +23 -0
  59. package/src/hooks/push/useIosCallKeepEffect.ts +103 -0
  60. package/src/hooks/push/useIosPushEffect.ts +66 -0
  61. package/src/hooks/push/useProcessPushCallEffect.ts +55 -0
  62. package/src/hooks/useAndroidKeepCallAliveEffect.ts +99 -0
  63. package/src/providers/StreamCall.tsx +24 -6
  64. package/src/providers/StreamVideo.tsx +11 -0
  65. package/src/utils/StreamVideoRN/index.ts +69 -0
  66. package/src/utils/StreamVideoRN/types.ts +104 -0
  67. package/src/utils/push/libs.ts +50 -0
  68. package/src/utils/push/rxSubjects.ts +9 -0
  69. package/src/utils/push/utils.ts +255 -0
  70. package/src/utils/verifyAndroidBluetoothPermissions.ts +3 -1
  71. package/dist/src/hooks/useCallKeep.d.ts +0 -11
  72. package/dist/src/hooks/useCallKeep.js +0 -41
  73. package/dist/src/hooks/useCallKeep.js.map +0 -1
  74. package/dist/src/utils/StreamVideoRN.d.ts +0 -25
  75. package/dist/src/utils/StreamVideoRN.js +0 -23
  76. package/dist/src/utils/StreamVideoRN.js.map +0 -1
  77. package/src/hooks/useCallKeep.tsx +0 -51
  78. package/src/utils/StreamVideoRN.ts +0 -35
package/CHANGELOG.md CHANGED
@@ -2,6 +2,19 @@
2
2
 
3
3
  This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
4
4
 
5
+ ## [0.0.1-alpha.178](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.0.1-alpha.177...@stream-io/video-react-native-sdk-0.0.1-alpha.178) (2023-06-20)
6
+
7
+
8
+ ### Features
9
+
10
+ * **react-native:** push notification for android ([#626](https://github.com/GetStream/stream-video-js/issues/626)) ([ec2e439](https://github.com/GetStream/stream-video-js/commit/ec2e4390cb724091352ba774c55ad2245ace2955))
11
+
12
+
13
+
14
+ ## [0.0.1-alpha.177](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.0.1-alpha.176...@stream-io/video-react-native-sdk-0.0.1-alpha.177) (2023-06-20)
15
+
16
+
17
+
5
18
  ## [0.0.1-alpha.176](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-0.0.1-alpha.175...@stream-io/video-react-native-sdk-0.0.1-alpha.176) (2023-06-19)
6
19
 
7
20
 
package/README.md CHANGED
@@ -88,13 +88,15 @@ Apps created with Expo are currently not officially supported.
88
88
  Stream's video roadmap and changelog are available [here](https://github.com/GetStream/protocol/discussions/127).
89
89
 
90
90
  ### Remaining 0.1 items
91
- - [ ] Push notifications
92
- - [ ] Reconnection
93
- - [ ] Simulcasting (works on Android, iOS is WIP)
91
+ - [x] Push notification- Android
92
+ - [x] Chat integration guide
93
+ - [x] Simulcasting- Android
94
+ - [ ] Push notification- VoIP iOS
95
+ - [ ] Reconnection (awaiting BE)
96
+ - [ ] Simulcasting- iOS
94
97
  - [ ] Components alignment and refactor
95
98
  - [ ] UI Component documentation
96
- - [ ] Chat integration guide
97
- - [ ] Pinning and spotlight participants
99
+ - [ ] Pinning and spotlighting participants
98
100
 
99
101
  ### 0.2 milestone
100
102
  - [ ] Livestream tutorial
@@ -23,6 +23,8 @@ const mockedDevices = [
23
23
  label: 'mocked-label',
24
24
  },
25
25
  ];
26
+ // Mock the notifee module using the mock provided by @notifee/react-native itself
27
+ jest.mock('@notifee/react-native', () => require('@notifee/react-native/jest-mock'));
26
28
  // When mocking we implement only the needed navigator APIs, hence the suppression rule
27
29
  // @ts-ignore
28
30
  global.navigator = {
@@ -1 +1 @@
1
- {"version":3,"file":"jest-setup.js","sourceRoot":"","sources":["../jest-setup.ts"],"names":[],"mappings":";;AAAA,8BAA8B;AAC9B,sDAAoD;AAEpD,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;QACnC;YACE,EAAE,EAAE,iBAAiB;YACrB,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,oBAAoB;YAChC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;SAChB;KACF,CAAC;CACH,CAAC;AACF,MAAM,aAAa,GAAG;IACpB;QACE,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,cAAc;KACtB;CACF,CAAC;AAEF,uFAAuF;AACvF,aAAa;AACb,MAAM,CAAC,SAAS,GAAG;IACjB,YAAY,EAAE;QACZ,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC;QACtD,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC;KAC7D;CACF,CAAC"}
1
+ {"version":3,"file":"jest-setup.js","sourceRoot":"","sources":["../jest-setup.ts"],"names":[],"mappings":";;AAAA,8BAA8B;AAC9B,sDAAoD;AAEpD,MAAM,WAAW,GAAG;IAClB,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC;QACnC;YACE,EAAE,EAAE,iBAAiB;YACrB,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,cAAc;YACrB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,oBAAoB;YAChC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;SAChB;KACF,CAAC;CACH,CAAC;AACF,MAAM,aAAa,GAAG;IACpB;QACE,QAAQ,EAAE,kBAAkB;QAC5B,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,cAAc;KACtB;CACF,CAAC;AAEF,kFAAkF;AAClF,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CACtC,OAAO,CAAC,iCAAiC,CAAC,CAC3C,CAAC;AAEF,uFAAuF;AACvF,aAAa;AACb,MAAM,CAAC,SAAS,GAAG;IACjB,YAAY,EAAE;QACZ,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC;QACtD,gBAAgB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC;KAC7D;CACF,CAAC"}
@@ -1,13 +1,36 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.ParticipantReaction = void 0;
4
- const react_1 = require("react");
27
+ const react_1 = __importStar(require("react"));
5
28
  const react_native_1 = require("react-native");
6
29
  const video_react_bindings_1 = require("@stream-io/video-react-bindings");
7
30
  const theme_1 = require("../theme");
8
31
  const utils_1 = require("../utils");
9
32
  const ParticipantReaction = (props) => {
10
- const { supportedReactions } = utils_1.StreamVideoRN.config;
33
+ const { supportedReactions } = utils_1.StreamVideoRN.getConfig();
11
34
  const { reaction, sessionId, hideAfterTimeoutInMs = 5500 } = props;
12
35
  const call = (0, video_react_bindings_1.useCall)();
13
36
  const [isShowing, setIsShowing] = (0, react_1.useState)(false);
@@ -28,10 +51,12 @@ const ParticipantReaction = (props) => {
28
51
  supportedReactions.find((supportedReaction) => supportedReaction.emoji_code === reaction.emoji_code);
29
52
  let component;
30
53
  if (isShowing) {
31
- if (typeof currentReaction?.icon !== 'string')
54
+ if (typeof currentReaction?.icon !== 'string') {
32
55
  component = currentReaction?.icon;
33
- else
56
+ }
57
+ else {
34
58
  component = <react_native_1.Text style={styles.reaction}>{currentReaction.icon}</react_native_1.Text>;
59
+ }
35
60
  }
36
61
  return (<react_native_1.View style={[styles.svgContainerStyle, theme_1.theme.icon.md]}>{component}</react_native_1.View>);
37
62
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ParticipantReaction.js","sourceRoot":"","sources":["../../../src/components/ParticipantReaction.tsx"],"names":[],"mappings":";;;AAAA,iCAA4C;AAE5C,+CAAsD;AACtD,0EAA0D;AAC1D,oCAAiC;AACjC,oCAAyC;AAQlC,MAAM,mBAAmB,GAAG,CAAC,KAAoB,EAAE,EAAE;IAC1D,MAAM,EAAE,kBAAkB,EAAE,GAAG,qBAAa,CAAC,MAAM,CAAC;IACpD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,oBAAoB,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACnE,MAAM,IAAI,GAAG,IAAA,8BAAO,GAAE,CAAC;IACvB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IAE3D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,SAAyB,CAAC;QAC9B,IAAI,IAAI,EAAE;YACR,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC1B,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC,EAAE,oBAAoB,CAAC,CAAC;SAC1B;QACD,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtD,MAAM,eAAe,GACnB,QAAQ;QACR,kBAAkB,CAAC,IAAI,CACrB,CAAC,iBAAiB,EAAE,EAAE,CACpB,iBAAiB,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,CACvD,CAAC;IAEJ,IAAI,SAAS,CAAC;IACd,IAAI,SAAS,EAAE;QACb,IAAI,OAAO,eAAe,EAAE,IAAI,KAAK,QAAQ;YAC3C,SAAS,GAAG,eAAe,EAAE,IAAI,CAAC;;YAElC,SAAS,GAAG,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,mBAAI,CAAC,CAAC;KAC3E;IAED,OAAO,CACL,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,mBAAI,CAAC,CAC3E,CAAC;AACJ,CAAC,CAAC;AAtCW,QAAA,mBAAmB,uBAsC9B;AAEF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE;QACR,GAAG,aAAK,CAAC,KAAK,CAAC,QAAQ;KACxB;IACD,iBAAiB,EAAE,EAAE;CACtB,CAAC,CAAC"}
1
+ {"version":3,"file":"ParticipantReaction.js","sourceRoot":"","sources":["../../../src/components/ParticipantReaction.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAmD;AAEnD,+CAAsD;AACtD,0EAA0D;AAC1D,oCAAiC;AACjC,oCAAyC;AAQlC,MAAM,mBAAmB,GAAG,CAAC,KAAoB,EAAE,EAAE;IAC1D,MAAM,EAAE,kBAAkB,EAAE,GAAG,qBAAa,CAAC,SAAS,EAAE,CAAC;IACzD,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,oBAAoB,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IACnE,MAAM,IAAI,GAAG,IAAA,8BAAO,GAAE,CAAC;IACvB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAU,KAAK,CAAC,CAAC;IAE3D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,SAAyB,CAAC;QAC9B,IAAI,IAAI,EAAE;YACR,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC1B,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;YAChC,CAAC,EAAE,oBAAoB,CAAC,CAAC;SAC1B;QACD,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEtD,MAAM,eAAe,GACnB,QAAQ;QACR,kBAAkB,CAAC,IAAI,CACrB,CAAC,iBAAiB,EAAE,EAAE,CACpB,iBAAiB,CAAC,UAAU,KAAK,QAAQ,CAAC,UAAU,CACvD,CAAC;IAEJ,IAAI,SAAS,CAAC;IACd,IAAI,SAAS,EAAE;QACb,IAAI,OAAO,eAAe,EAAE,IAAI,KAAK,QAAQ,EAAE;YAC7C,SAAS,GAAG,eAAe,EAAE,IAAI,CAAC;SACnC;aAAM;YACL,SAAS,GAAG,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,mBAAI,CAAC,CAAC;SACzE;KACF;IAED,OAAO,CACL,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,mBAAI,CAAC,CAC3E,CAAC;AACJ,CAAC,CAAC;AAvCW,QAAA,mBAAmB,uBAuC9B;AAEF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,QAAQ,EAAE;QACR,GAAG,aAAK,CAAC,KAAK,CAAC,QAAQ;KACxB;IACD,iBAAiB,EAAE,EAAE;CACtB,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  type ReactionModalType = {
3
3
  isReactionModalActive: boolean;
4
4
  setIsReactionModalActive: React.Dispatch<React.SetStateAction<boolean>>;
@@ -1,9 +1,32 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
2
25
  Object.defineProperty(exports, "__esModule", { value: true });
3
26
  exports.ReactionModal = void 0;
4
27
  const react_native_1 = require("react-native");
5
28
  const theme_1 = require("../theme");
6
- const react_1 = require("react");
29
+ const react_1 = __importStar(require("react"));
7
30
  const video_react_bindings_1 = require("@stream-io/video-react-bindings");
8
31
  const utils_1 = require("../utils");
9
32
  const icons_1 = require("../icons");
@@ -13,7 +36,7 @@ const ReactionModal = (props) => {
13
36
  setIsReactionModalActive(false);
14
37
  }, [setIsReactionModalActive]);
15
38
  const call = (0, video_react_bindings_1.useCall)();
16
- const { supportedReactions } = utils_1.StreamVideoRN.config;
39
+ const { supportedReactions } = utils_1.StreamVideoRN.getConfig();
17
40
  const sendReaction = async (reaction) => {
18
41
  await call?.sendReaction(reaction);
19
42
  setIsReactionModalActive(false);
@@ -1 +1 @@
1
- {"version":3,"file":"ReactionsModal.js","sourceRoot":"","sources":["../../../src/components/ReactionsModal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReactionsModal.js","sourceRoot":"","sources":["../../../src/components/ReactionsModal.tsx"],"names":[],"mappings":"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"}
@@ -2,8 +2,9 @@ export * from './useCallControls';
2
2
  export * from './useCallCycleEffect';
3
3
  export * from './useMutingState';
4
4
  export * from './useLocalVideoStream';
5
- export * from './useCallKeep';
6
5
  export * from './useIncallManager';
7
6
  export * from './usePublishMediaStreams';
8
7
  export * from './usePermissionRequest';
9
8
  export * from './usePermissionNotification';
9
+ export * from './push';
10
+ export * from './useAndroidKeepCallAliveEffect';
@@ -18,9 +18,10 @@ __exportStar(require("./useCallControls"), exports);
18
18
  __exportStar(require("./useCallCycleEffect"), exports);
19
19
  __exportStar(require("./useMutingState"), exports);
20
20
  __exportStar(require("./useLocalVideoStream"), exports);
21
- __exportStar(require("./useCallKeep"), exports);
22
21
  __exportStar(require("./useIncallManager"), exports);
23
22
  __exportStar(require("./usePublishMediaStreams"), exports);
24
23
  __exportStar(require("./usePermissionRequest"), exports);
25
24
  __exportStar(require("./usePermissionNotification"), exports);
25
+ __exportStar(require("./push"), exports);
26
+ __exportStar(require("./useAndroidKeepCallAliveEffect"), exports);
26
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,uDAAqC;AACrC,mDAAiC;AACjC,wDAAsC;AACtC,gDAA8B;AAC9B,qDAAmC;AACnC,2DAAyC;AACzC,yDAAuC;AACvC,8DAA4C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,uDAAqC;AACrC,mDAAiC;AACjC,wDAAsC;AACtC,qDAAmC;AACnC,2DAAyC;AACzC,yDAAuC;AACvC,8DAA4C;AAC5C,yCAAuB;AACvB,kEAAgD"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * This hook is used to do the initial setup for push notifications.
3
+ * It must be used in a component which is a child of StreamVideo from bindings
4
+ */
5
+ export declare const usePushRegisterEffect: () => void;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.usePushRegisterEffect = void 0;
4
+ const useIosCallKeepEffect_1 = require("./useIosCallKeepEffect");
5
+ const useIosPushEffect_1 = require("./useIosPushEffect");
6
+ const useProcessPushCallEffect_1 = require("./useProcessPushCallEffect");
7
+ const useInitAndroidTokenAndRest_1 = require("./useInitAndroidTokenAndRest");
8
+ /**
9
+ * This hook is used to do the initial setup for push notifications.
10
+ * It must be used in a component which is a child of StreamVideo from bindings
11
+ */
12
+ const usePushRegisterEffect = () => {
13
+ (0, useIosCallKeepEffect_1.useIosCallKeepEffect)();
14
+ (0, useIosPushEffect_1.useIosPushEffect)();
15
+ (0, useProcessPushCallEffect_1.useProcessPushCallEffect)();
16
+ (0, useInitAndroidTokenAndRest_1.useInitAndroidTokenAndRest)();
17
+ };
18
+ exports.usePushRegisterEffect = usePushRegisterEffect;
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/hooks/push/index.ts"],"names":[],"mappings":";;;AAAA,iEAA8D;AAC9D,yDAAsD;AACtD,yEAAsE;AACtE,6EAA0E;AAE1E;;;GAGG;AACI,MAAM,qBAAqB,GAAG,GAAG,EAAE;IACxC,IAAA,2CAAoB,GAAE,CAAC;IACvB,IAAA,mCAAgB,GAAE,CAAC;IACnB,IAAA,mDAAwB,GAAE,CAAC;IAC3B,IAAA,uDAA0B,GAAE,CAAC;AAC/B,CAAC,CAAC;AALW,QAAA,qBAAqB,yBAKhC"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * This hook is used to initialize the push token for Android and ask notification permissions.
3
+ */
4
+ export declare const useInitAndroidTokenAndRest: () => void;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useInitAndroidTokenAndRest = void 0;
4
+ const video_react_bindings_1 = require("@stream-io/video-react-bindings");
5
+ const react_1 = require("react");
6
+ const utils_1 = require("../../utils");
7
+ const utils_2 = require("../../utils/push/utils");
8
+ /**
9
+ * This hook is used to initialize the push token for Android and ask notification permissions.
10
+ */
11
+ const useInitAndroidTokenAndRest = () => {
12
+ const client = (0, video_react_bindings_1.useStreamVideoClient)();
13
+ const connectedUserId = (0, video_react_bindings_1.useConnectedUser)()?.id;
14
+ (0, react_1.useEffect)(() => {
15
+ const pushConfig = utils_1.StreamVideoRN.getConfig().push;
16
+ // NOTE: we need to wait for user to be connected before we can send the push token
17
+ if (!client || !connectedUserId || !pushConfig) {
18
+ return;
19
+ }
20
+ (0, utils_2.initAndroidPushTokenAndAskPermissions)(client, pushConfig);
21
+ }, [client, connectedUserId]);
22
+ };
23
+ exports.useInitAndroidTokenAndRest = useInitAndroidTokenAndRest;
24
+ //# sourceMappingURL=useInitAndroidTokenAndRest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useInitAndroidTokenAndRest.js","sourceRoot":"","sources":["../../../../src/hooks/push/useInitAndroidTokenAndRest.ts"],"names":[],"mappings":";;;AAAA,0EAGyC;AACzC,iCAAkC;AAClC,uCAA4C;AAC5C,kDAA+E;AAE/E;;GAEG;AACI,MAAM,0BAA0B,GAAG,GAAG,EAAE;IAC7C,MAAM,MAAM,GAAG,IAAA,2CAAoB,GAAE,CAAC;IACtC,MAAM,eAAe,GAAG,IAAA,uCAAgB,GAAE,EAAE,EAAE,CAAC;IAC/C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,qBAAa,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;QAClD,mFAAmF;QACnF,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,IAAI,CAAC,UAAU,EAAE;YAC9C,OAAO;SACR;QACD,IAAA,6CAAqC,EAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC;AAXW,QAAA,0BAA0B,8BAWrC"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * This hook is used to listen to callkeep events and do the necessary actions
3
+ */
4
+ export declare const useIosCallKeepEffect: () => void;
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useIosCallKeepEffect = void 0;
4
+ const react_1 = require("react");
5
+ const libs_1 = require("../../utils/push/libs");
6
+ const rxSubjects_1 = require("../../utils/push/rxSubjects");
7
+ const react_native_1 = require("react-native");
8
+ const utils_1 = require("../../utils");
9
+ /**
10
+ * This hook is used to listen to callkeep events and do the necessary actions
11
+ */
12
+ const useIosCallKeepEffect = () => {
13
+ (0, react_1.useEffect)(() => {
14
+ const pushConfig = utils_1.StreamVideoRN.getConfig().push;
15
+ if (react_native_1.Platform.OS !== 'ios' || !pushConfig) {
16
+ return;
17
+ }
18
+ const callkeep = (0, libs_1.getCallKeepLib)();
19
+ callkeep.addEventListener('didReceiveStartCallAction', ({ handle, callUUID, name }) => {
20
+ console.log('didReceiveStartCallAction', { handle, callUUID, name });
21
+ });
22
+ callkeep.addEventListener('answerCall', ({ callUUID }) => {
23
+ console.log('answerCall', { callUUID });
24
+ callkeep.backToForeground();
25
+ // close the dialer screen so that the app can be seen (only android needs this)
26
+ // callkeep.endCall(callUUID);
27
+ rxSubjects_1.pushAcceptedIncomingCallCId$.next(callUUID);
28
+ pushConfig.navigateAcceptCall();
29
+ });
30
+ callkeep.addEventListener('endCall', ({ callUUID }) => {
31
+ if (callUUID) {
32
+ callkeep.endCall(callUUID);
33
+ }
34
+ rxSubjects_1.pushRejectedIncomingCallCId$.next(callUUID);
35
+ console.log('endCall', { callUUID });
36
+ });
37
+ callkeep.addEventListener('didDisplayIncomingCall', ({ error, callUUID, handle, localizedCallerName, hasVideo, fromPushKit, payload, }) => {
38
+ console.log('didDisplayIncomingCall', {
39
+ error,
40
+ callUUID,
41
+ handle,
42
+ localizedCallerName,
43
+ hasVideo,
44
+ fromPushKit,
45
+ payload,
46
+ });
47
+ });
48
+ callkeep.addEventListener('didPerformSetMutedCallAction', ({ muted, callUUID }) => {
49
+ console.log('didPerformSetMutedCallAction', { muted, callUUID });
50
+ });
51
+ callkeep.addEventListener('didToggleHoldCallAction', ({ hold, callUUID }) => {
52
+ console.log('didToggleHoldCallAction', { hold, callUUID });
53
+ });
54
+ callkeep.addEventListener('didPerformDTMFAction', ({ digits, callUUID }) => {
55
+ console.log('didPerformDTMFAction', { digits, callUUID });
56
+ });
57
+ callkeep.addEventListener('didActivateAudioSession', () => {
58
+ console.log('didActivateAudioSession');
59
+ });
60
+ callkeep.addEventListener('checkReachability', () => {
61
+ /*
62
+ * On Android when the application is in background, after a certain delay the OS will close every connection with informing about it. So we have to check if the application is reachable before making a call from the native phone application.
63
+ */
64
+ callkeep.setReachable();
65
+ });
66
+ return () => {
67
+ callkeep.removeEventListener('didReceiveStartCallAction');
68
+ callkeep.removeEventListener('answerCall');
69
+ callkeep.removeEventListener('endCall');
70
+ callkeep.removeEventListener('didDisplayIncomingCall');
71
+ callkeep.removeEventListener('didPerformSetMutedCallAction');
72
+ callkeep.removeEventListener('didToggleHoldCallAction');
73
+ callkeep.removeEventListener('didPerformDTMFAction');
74
+ callkeep.removeEventListener('didActivateAudioSession');
75
+ callkeep.removeEventListener('checkReachability');
76
+ };
77
+ }, []);
78
+ };
79
+ exports.useIosCallKeepEffect = useIosCallKeepEffect;
80
+ //# sourceMappingURL=useIosCallKeepEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIosCallKeepEffect.js","sourceRoot":"","sources":["../../../../src/hooks/push/useIosCallKeepEffect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * This hook is used to do the initial setup of listeners
3
+ * for ios voip push notifications.
4
+ */
5
+ export declare const useIosPushEffect: () => void;
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useIosPushEffect = void 0;
4
+ const react_1 = require("react");
5
+ const libs_1 = require("../../utils/push/libs");
6
+ const react_native_1 = require("react-native");
7
+ const utils_1 = require("../../utils");
8
+ const video_react_bindings_1 = require("@stream-io/video-react-bindings");
9
+ /**
10
+ * This hook is used to do the initial setup of listeners
11
+ * for ios voip push notifications.
12
+ */
13
+ const useIosPushEffect = () => {
14
+ const client = (0, video_react_bindings_1.useStreamVideoClient)();
15
+ (0, react_1.useEffect)(() => {
16
+ const pushConfig = utils_1.StreamVideoRN.getConfig().push;
17
+ if (react_native_1.Platform.OS !== 'ios' || !pushConfig || !client) {
18
+ return;
19
+ }
20
+ const voipPushNotification = (0, libs_1.getVoipPushNotificationLib)();
21
+ const onTokenReceived = (token) => {
22
+ // send token to stream
23
+ const push_provider_name = pushConfig.ios.pushProviderName;
24
+ client.addVoipDevice(token, 'apn', push_provider_name).catch((err) => {
25
+ console.warn('Failed to send voip token to APN', err);
26
+ });
27
+ };
28
+ voipPushNotification.addEventListener('register', (token) => {
29
+ onTokenReceived(token);
30
+ });
31
+ // ===== Step 2: subscribe `notification` event =====
32
+ // --- this.onvoipPushNotificationReceived
33
+ voipPushNotification.addEventListener('notification', (notification) => {
34
+ // --- when receive remote voip push, register your VoIP client, show local notification ... etc
35
+ console.log({ notification });
36
+ // --- optionally, if you `addCompletionHandler` from the native side, once you have done the js jobs to initiate a call, call `completion()`
37
+ // voipPushNotification.onVoipNotificationCompleted(notification.uuid);
38
+ });
39
+ // ===== Step 3: subscribe `didLoadWithEvents` event =====
40
+ voipPushNotification.addEventListener('didLoadWithEvents', (events) => {
41
+ // --- this will fire when there are events occured before js bridge initialized
42
+ // --- use this event to execute your event handler manually by event type
43
+ if (!events || !Array.isArray(events) || events.length < 1) {
44
+ return;
45
+ }
46
+ for (let voipPushEvent of events) {
47
+ let { name, data } = voipPushEvent;
48
+ console.log({ voipPushEvent });
49
+ if (name === 'RNVoipPushRemoteNotificationsRegisteredEvent') {
50
+ onTokenReceived(data);
51
+ }
52
+ else if (name === 'RNVoipPushRemoteNotificationReceivedEvent') {
53
+ console.log('RNVoipPushRemoteNotificationReceivedEvent', { data });
54
+ // voipPushNotification.onVoipNotificationCompleted(data.uuid);
55
+ }
56
+ }
57
+ });
58
+ return () => {
59
+ voipPushNotification.removeEventListener('didLoadWithEvents');
60
+ voipPushNotification.removeEventListener('register');
61
+ voipPushNotification.removeEventListener('notification');
62
+ };
63
+ }, [client]);
64
+ };
65
+ exports.useIosPushEffect = useIosPushEffect;
66
+ //# sourceMappingURL=useIosPushEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIosPushEffect.js","sourceRoot":"","sources":["../../../../src/hooks/push/useIosPushEffect.ts"],"names":[],"mappings":";;;AAAA,iCAAkC;AAClC,gDAAmE;AAEnE,+CAAwC;AACxC,uCAA4C;AAC5C,0EAAuE;AAEvE;;;GAGG;AACI,MAAM,gBAAgB,GAAG,GAAG,EAAE;IACnC,MAAM,MAAM,GAAG,IAAA,2CAAoB,GAAE,CAAC;IACtC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,qBAAa,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;QAClD,IAAI,uBAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,EAAE;YACnD,OAAO;SACR;QACD,MAAM,oBAAoB,GAAG,IAAA,iCAA0B,GAAE,CAAC;QAC1D,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,EAAE;YACxC,uBAAuB;YACvB,MAAM,kBAAkB,GAAG,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC;YAC3D,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnE,OAAO,CAAC,IAAI,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,oBAAoB,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1D,eAAe,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,qDAAqD;QACrD,0CAA0C;QAC1C,oBAAoB,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC,YAAY,EAAE,EAAE;YACrE,gGAAgG;YAChG,OAAO,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;YAE9B,6IAA6I;YAC7I,uEAAuE;QACzE,CAAC,CAAC,CAAC;QAEH,0DAA0D;QAC1D,oBAAoB,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,EAAE;YACpE,gFAAgF;YAChF,0EAA0E;YAE1E,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC1D,OAAO;aACR;YACD,KAAK,IAAI,aAAa,IAAI,MAAM,EAAE;gBAChC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,aAAa,CAAC;gBACnC,OAAO,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC/B,IAAI,IAAI,KAAK,8CAA8C,EAAE;oBAC3D,eAAe,CAAC,IAAI,CAAC,CAAC;iBACvB;qBAAM,IAAI,IAAI,KAAK,2CAA2C,EAAE;oBAC/D,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;oBACnE,+DAA+D;iBAChE;aACF;QACH,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,EAAE;YACV,oBAAoB,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;YAC9D,oBAAoB,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACrD,oBAAoB,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QAC3D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,CAAC,CAAC;AAtDW,QAAA,gBAAgB,oBAsD3B"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * This hook is used to process the incoming call data via push notifications using the relevant rxjs subjects
3
+ * It either joins or leaves the call based on the user's action.
4
+ * Note: this effect cannot work when push notifications are received when the app is in quit state this is only if app is in background state
5
+ */
6
+ export declare const useProcessPushCallEffect: () => void;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useProcessPushCallEffect = void 0;
4
+ const rxSubjects_1 = require("../../utils/push/rxSubjects");
5
+ const react_1 = require("react");
6
+ const utils_1 = require("../../utils");
7
+ const video_react_bindings_1 = require("@stream-io/video-react-bindings");
8
+ const operators_1 = require("rxjs/operators");
9
+ const utils_2 = require("../../utils/push/utils");
10
+ /**
11
+ * This hook is used to process the incoming call data via push notifications using the relevant rxjs subjects
12
+ * It either joins or leaves the call based on the user's action.
13
+ * Note: this effect cannot work when push notifications are received when the app is in quit state this is only if app is in background state
14
+ */
15
+ const useProcessPushCallEffect = () => {
16
+ const client = (0, video_react_bindings_1.useStreamVideoClient)();
17
+ const connectedUserId = (0, video_react_bindings_1.useConnectedUser)()?.id;
18
+ // The Effect to join/reject call automatically when incoming call was received and processed from push notification
19
+ (0, react_1.useEffect)(() => {
20
+ const pushConfig = utils_1.StreamVideoRN.getConfig().push;
21
+ if (!pushConfig || !client || !connectedUserId) {
22
+ return;
23
+ }
24
+ // if the user accepts the call from push notification we join the call
25
+ const acceptedCallSubscription = rxSubjects_1.pushAcceptedIncomingCallCId$
26
+ .pipe((0, operators_1.filter)(cidIsNotUndefined))
27
+ .subscribe(async (callCId) => {
28
+ await (0, utils_2.processCallFromPush)(client, callCId, 'accept');
29
+ rxSubjects_1.pushAcceptedIncomingCallCId$.next(undefined); // remove the current call id to avoid processing again
30
+ });
31
+ // if the user rejects the call from push notification we leave the call
32
+ const declinedCallSubscription = rxSubjects_1.pushRejectedIncomingCallCId$
33
+ .pipe((0, operators_1.filter)(cidIsNotUndefined))
34
+ .subscribe(async (callCId) => {
35
+ await (0, utils_2.processCallFromPush)(client, callCId, 'decline');
36
+ rxSubjects_1.pushRejectedIncomingCallCId$.next(undefined); // remove the current call id to avoid processing again
37
+ });
38
+ return () => {
39
+ acceptedCallSubscription.unsubscribe();
40
+ declinedCallSubscription.unsubscribe();
41
+ };
42
+ }, [client, connectedUserId]);
43
+ };
44
+ exports.useProcessPushCallEffect = useProcessPushCallEffect;
45
+ /**
46
+ * A type guard to check if the cid is not undefined
47
+ */
48
+ function cidIsNotUndefined(cid) {
49
+ return cid !== undefined;
50
+ }
51
+ //# sourceMappingURL=useProcessPushCallEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProcessPushCallEffect.js","sourceRoot":"","sources":["../../../../src/hooks/push/useProcessPushCallEffect.ts"],"names":[],"mappings":";;;AAAA,4DAGqC;AACrC,iCAAkC;AAClC,uCAA4C;AAC5C,0EAGyC;AACzC,8CAAwC;AACxC,kDAA6D;AAE7D;;;;GAIG;AACI,MAAM,wBAAwB,GAAG,GAAG,EAAE;IAC3C,MAAM,MAAM,GAAG,IAAA,2CAAoB,GAAE,CAAC;IACtC,MAAM,eAAe,GAAG,IAAA,uCAAgB,GAAE,EAAE,EAAE,CAAC;IAC/C,oHAAoH;IACpH,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,qBAAa,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC;QAClD,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE;YAC9C,OAAO;SACR;QAED,uEAAuE;QACvE,MAAM,wBAAwB,GAAG,yCAA4B;aAC1D,IAAI,CAAC,IAAA,kBAAM,EAAC,iBAAiB,CAAC,CAAC;aAC/B,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC3B,MAAM,IAAA,2BAAmB,EAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YACrD,yCAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,uDAAuD;QACvG,CAAC,CAAC,CAAC;QACL,wEAAwE;QACxE,MAAM,wBAAwB,GAAG,yCAA4B;aAC1D,IAAI,CAAC,IAAA,kBAAM,EAAC,iBAAiB,CAAC,CAAC;aAC/B,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YAC3B,MAAM,IAAA,2BAAmB,EAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACtD,yCAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,uDAAuD;QACvG,CAAC,CAAC,CAAC;QACL,OAAO,GAAG,EAAE;YACV,wBAAwB,CAAC,WAAW,EAAE,CAAC;YACvC,wBAAwB,CAAC,WAAW,EAAE,CAAC;QACzC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;AAChC,CAAC,CAAC;AA7BW,QAAA,wBAAwB,4BA6BnC;AAEF;;GAEG;AACH,SAAS,iBAAiB,CAAC,GAAuB;IAChD,OAAO,GAAG,KAAK,SAAS,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * This hook is used to keep the call alive in the background for Android.
3
+ * It starts a foreground service to keep the call alive as soon as the call is joined
4
+ * and stops the foreground Service when the call is left.
5
+ */
6
+ export declare const useAndroidKeepCallAliveEffect: () => void;