@fishjam-cloud/react-native-client 0.18.1 → 0.19.0

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 (39) hide show
  1. package/README.md +1 -1
  2. package/android/src/main/java/io/fishjam/reactnative/RNFishjamClientModule.kt +40 -0
  3. package/build/RNFishjamClientModule.d.ts +6 -1
  4. package/build/RNFishjamClientModule.d.ts.map +1 -1
  5. package/build/RNFishjamClientModule.js.map +1 -1
  6. package/build/components/FishjamRoom/index.d.ts +6 -0
  7. package/build/components/FishjamRoom/index.d.ts.map +1 -1
  8. package/build/components/FishjamRoom/index.js +6 -0
  9. package/build/components/FishjamRoom/index.js.map +1 -1
  10. package/build/components/LivestreamView.d.ts +33 -1
  11. package/build/components/LivestreamView.d.ts.map +1 -1
  12. package/build/components/LivestreamView.js +1 -1
  13. package/build/components/LivestreamView.js.map +1 -1
  14. package/build/components/VideoPreviewView.d.ts +1 -1
  15. package/build/components/VideoPreviewView.js +1 -0
  16. package/build/components/VideoPreviewView.js.map +1 -1
  17. package/build/components/VideoRendererView.d.ts +2 -2
  18. package/build/components/VideoRendererView.js +3 -2
  19. package/build/components/VideoRendererView.js.map +1 -1
  20. package/build/debug/stats/useRTCStatistics.js.map +1 -1
  21. package/build/hooks/useCamera.d.ts +5 -5
  22. package/build/hooks/useCamera.js.map +1 -1
  23. package/build/hooks/usePeers.js.map +1 -1
  24. package/build/hooks/usePermissions.d.ts +24 -0
  25. package/build/hooks/usePermissions.d.ts.map +1 -0
  26. package/build/hooks/usePermissions.js +61 -0
  27. package/build/hooks/usePermissions.js.map +1 -0
  28. package/build/hooks/useScreenShare.d.ts +1 -1
  29. package/build/hooks/useScreenShare.js.map +1 -1
  30. package/build/index.d.ts +2 -1
  31. package/build/index.d.ts.map +1 -1
  32. package/build/index.js +2 -0
  33. package/build/index.js.map +1 -1
  34. package/ios/CameraPermissionsRequester.swift +117 -0
  35. package/ios/RNFishjamClientModule.swift +168 -119
  36. package/package.json +16 -11
  37. package/plugin/build/types.d.ts +2 -0
  38. package/plugin/build/withFishjamAndroid.js +16 -4
  39. package/plugin/build/withFishjamIos.js +58 -13
@@ -3,7 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.withFishjamAndroid = void 0;
4
4
  const config_plugins_1 = require("@expo/config-plugins");
5
5
  const Manifest_1 = require("@expo/config-plugins/build/android/Manifest");
6
- const withFishjamForegroundService = (config) => (0, config_plugins_1.withAndroidManifest)(config, async (configuration) => {
6
+ const withFishjamForegroundService = (config, props) => (0, config_plugins_1.withAndroidManifest)(config, async (configuration) => {
7
+ if (!props?.android?.enableForegroundService) {
8
+ return configuration;
9
+ }
7
10
  const mainApplication = (0, Manifest_1.getMainApplicationOrThrow)(configuration.modResults);
8
11
  mainApplication.service = mainApplication.service || [];
9
12
  const newService = {
@@ -22,10 +25,19 @@ const withFishjamForegroundService = (config) => (0, config_plugins_1.withAndroi
22
25
  }
23
26
  return configuration;
24
27
  });
25
- const withFishjamAndroid = (config, props) => {
26
- if (props?.android?.enableForegroundService) {
27
- config = withFishjamForegroundService(config);
28
+ const withFishjamPictureInPicture = (config, props) => (0, config_plugins_1.withAndroidManifest)(config, (configuration) => {
29
+ const activity = config_plugins_1.AndroidConfig.Manifest.getMainActivityOrThrow(configuration.modResults);
30
+ if (props?.android?.supportsPictureInPicture) {
31
+ activity.$['android:supportsPictureInPicture'] = 'true';
32
+ }
33
+ else {
34
+ delete activity.$['android:supportsPictureInPicture'];
28
35
  }
36
+ return configuration;
37
+ });
38
+ const withFishjamAndroid = (config, props) => {
39
+ config = withFishjamForegroundService(config, props);
40
+ config = withFishjamPictureInPicture(config, props);
29
41
  return config;
30
42
  };
31
43
  exports.withFishjamAndroid = withFishjamAndroid;
@@ -88,18 +88,54 @@ async function updatePodfile(iosPath) {
88
88
  */
89
89
  const withAppGroupPermissions = (config) => {
90
90
  const APP_GROUP_KEY = 'com.apple.security.application-groups';
91
- return (0, config_plugins_1.withEntitlementsPlist)(config, (newConfig) => {
92
- if (!Array.isArray(newConfig.modResults[APP_GROUP_KEY])) {
93
- newConfig.modResults[APP_GROUP_KEY] = [];
94
- }
95
- const modResultsArray = newConfig.modResults[APP_GROUP_KEY];
96
- const entitlement = `group.${newConfig?.ios?.bundleIdentifier || ''}`;
97
- if (modResultsArray.indexOf(entitlement) !== -1) {
98
- return newConfig;
91
+ const bundleIdentifier = config.ios?.bundleIdentifier || '';
92
+ const groupIdentifier = `group.${bundleIdentifier}`;
93
+ config.ios ??= {};
94
+ config.ios.entitlements ??= {};
95
+ config.ios.entitlements[APP_GROUP_KEY] ??= [];
96
+ const entitlementsArray = config.ios.entitlements[APP_GROUP_KEY];
97
+ if (!entitlementsArray.includes(groupIdentifier)) {
98
+ entitlementsArray.push(groupIdentifier);
99
+ }
100
+ config = (0, config_plugins_1.withEntitlementsPlist)(config, (newConfig) => {
101
+ const modResultsArray = newConfig.modResults[APP_GROUP_KEY] || [];
102
+ if (!modResultsArray.includes(groupIdentifier)) {
103
+ modResultsArray.push(groupIdentifier);
99
104
  }
100
- modResultsArray.push(entitlement);
105
+ newConfig.modResults[APP_GROUP_KEY] = modResultsArray;
101
106
  return newConfig;
102
107
  });
108
+ config = (0, config_plugins_1.withXcodeProject)(config, (props) => {
109
+ const xcodeProject = props.modResults;
110
+ const targets = xcodeProject.getFirstTarget();
111
+ const project = xcodeProject.getFirstProject();
112
+ if (!targets || !project) {
113
+ return props;
114
+ }
115
+ const targetUuid = targets.uuid;
116
+ const projectUuid = project.uuid;
117
+ const projectObj = xcodeProject.hash.project.objects.PBXProject[projectUuid];
118
+ projectObj.attributes ??= {};
119
+ projectObj.attributes.TargetAttributes ??= {};
120
+ projectObj.attributes.TargetAttributes[targetUuid] ??= {};
121
+ projectObj.attributes.TargetAttributes[targetUuid].SystemCapabilities ??=
122
+ {};
123
+ projectObj.attributes.TargetAttributes[targetUuid].SystemCapabilities['com.apple.ApplicationGroups.iOS'] = {
124
+ enabled: 1,
125
+ };
126
+ const entitlementsFilePath = `${props.modRequest.projectName}/${props.modRequest.projectName}.entitlements`;
127
+ const configurations = xcodeProject.pbxXCBuildConfigurationSection();
128
+ Object.keys(configurations).forEach((key) => {
129
+ const config = configurations[key];
130
+ if (config.buildSettings?.PRODUCT_NAME?.includes(props.modRequest.projectName)) {
131
+ if (!config.buildSettings.CODE_SIGN_ENTITLEMENTS) {
132
+ config.buildSettings.CODE_SIGN_ENTITLEMENTS = entitlementsFilePath;
133
+ }
134
+ }
135
+ });
136
+ return props;
137
+ });
138
+ return config;
103
139
  };
104
140
  /**
105
141
  * Adds constants to Info.plist
@@ -208,21 +244,30 @@ const withFishjamSBE = (config, options) => (0, config_plugins_1.withXcodeProjec
208
244
  });
209
245
  return props;
210
246
  });
247
+ const withFishjamPictureInPicture = (config, props) => (0, config_plugins_1.withInfoPlist)(config, (configuration) => {
248
+ if (props?.ios?.supportsPictureInPicture) {
249
+ const backgroundModes = new Set(configuration.modResults.UIBackgroundModes ?? []);
250
+ backgroundModes.add('audio');
251
+ configuration.modResults.UIBackgroundModes = Array.from(backgroundModes);
252
+ }
253
+ return configuration;
254
+ });
211
255
  /**
212
256
  * Applies screen sharing plugin if enabled. In order for screensharing to work, we need to copy extension files to your iOS project.
213
257
  * Allows for dynamically changing deploymentTarget.
214
258
  */
215
259
  const withFishjamIos = (config, props) => {
216
260
  if (props?.ios?.enableScreensharing) {
217
- withAppGroupPermissions(config);
218
- withInfoPlistConstants(config);
219
- withFishjamSBE(config, props);
261
+ config = withAppGroupPermissions(config);
262
+ config = withInfoPlistConstants(config);
263
+ config = withFishjamSBE(config, props);
220
264
  }
221
- (0, config_plugins_1.withPodfileProperties)(config, (configuration) => {
265
+ config = (0, config_plugins_1.withPodfileProperties)(config, (configuration) => {
222
266
  configuration.modResults['ios.deploymentTarget'] =
223
267
  props?.ios?.iphoneDeploymentTarget ?? IPHONEOS_DEPLOYMENT_TARGET;
224
268
  return configuration;
225
269
  });
270
+ config = withFishjamPictureInPicture(config, props);
226
271
  return config;
227
272
  };
228
273
  exports.default = withFishjamIos;