rns-nativecall 0.8.8 → 0.8.9

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rns-nativecall",
3
- "version": "0.8.8",
3
+ "version": "0.8.9",
4
4
  "description": "High-performance React Native module for handling native VoIP call UI on Android and iOS.",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -157,13 +157,15 @@ function withIosAppDelegateMod(config) {
157
157
  return withAppDelegate(config, (config) => {
158
158
  let contents = config.modResults.contents;
159
159
 
160
- // 1. Add the Import if it doesn't exist
160
+ // 1. Check for the import
161
161
  if (!contents.includes('#import <React/RCTLinkingManager.h>')) {
162
162
  contents = '#import <React/RCTLinkingManager.h>\n' + contents;
163
163
  }
164
164
 
165
- // 2. The code to inject
166
- const linkingCode = `
165
+ // 2. Only inject if the method name doesn't exist AT ALL
166
+ // This prevents the "Duplicate Method" error
167
+ if (!contents.includes('continueUserActivity')) {
168
+ const linkingCode = `
167
169
  - (BOOL)application:(UIApplication *)application
168
170
  continueUserActivity:(NSUserActivity *)userActivity
169
171
  restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler
@@ -173,17 +175,22 @@ function withIosAppDelegateMod(config) {
173
175
  restorationHandler:restorationHandler];
174
176
  }
175
177
  `;
176
-
177
- // 3. Inject before the final @end if not already present
178
- if (!contents.includes('continueUserActivity')) {
179
- contents = contents.replace(/@end\s*$/, `${linkingCode}\n@end`);
178
+ // Inject before the LAST @end in the file
179
+ const parts = contents.split('@end');
180
+ const lastPart = parts.pop();
181
+ contents = parts.join('@end') + linkingCode + '\n@end' + lastPart;
182
+ } else {
183
+ // 3. If it DOES exist, ensure RCTLinkingManager is inside it
184
+ // Many Expo apps have an empty continueUserActivity or one that only handles notifications
185
+ if (!contents.includes('RCTLinkingManager')) {
186
+ console.warn("[rns-nativecall] continueUserActivity exists but doesn't have RCTLinkingManager. Manual check required.");
187
+ }
180
188
  }
181
189
 
182
190
  config.modResults.contents = contents;
183
191
  return config;
184
192
  });
185
193
  }
186
-
187
194
  /** 3. IOS INFO.PLIST CONFIG (Existing) **/
188
195
  function withIosConfig(config, props = {}) {
189
196
  return withInfoPlist(config, (config) => {
@@ -199,7 +206,6 @@ function withIosConfig(config, props = {}) {
199
206
  return config;
200
207
  });
201
208
  }
202
-
203
209
  // Main Plugin Entry
204
210
  module.exports = (config, props) => {
205
211
  return withPlugins(config, [