- voip-push: build both APNs Provider (production+sandbox) and try each per token with memoization. Fixes BadDeviceToken on Xcode-Dev-Builds where the token is Sandbox-only. - stores/call: only call callkit.displayIncomingCall when app NOT in foreground \u2014 in foreground the /call route handles ringing UI, otherwise double UI (system banner + fullscreen). - patch react-native-callkeep: New-Arch TurboModule compatibility (no overloads, no Bundle params in @ReactMethod). - pushTokenRegistration: more verbose [voip] diagnostics.
73 lines
4.1 KiB
Diff
73 lines
4.1 KiB
Diff
diff --git a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java
|
|
index 025480ac97460cc45775ea11aa43af36522d5df6..106fbf0081b21ea02029add0aca86f55e8a55c07 100644
|
|
--- a/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java
|
|
+++ b/android/src/main/java/io/wazo/callkeep/RNCallKeepModule.java
|
|
@@ -189,7 +189,7 @@ public class RNCallKeepModule extends ReactContextBaseJavaModule implements Life
|
|
public void reportNewIncomingCall(String uuid, String number, String callerName, boolean hasVideo, String payload) {
|
|
Log.d(TAG, "[RNCallKeepModule] reportNewIncomingCall, uuid: " + uuid + ", number: " + number + ", callerName: " + callerName);
|
|
|
|
- this.displayIncomingCall(uuid, number, callerName, hasVideo);
|
|
+ this.displayIncomingCall(uuid, number, callerName, hasVideo, null);
|
|
|
|
// Send event to JS
|
|
WritableMap args = Arguments.createMap();
|
|
@@ -434,17 +434,26 @@ public class RNCallKeepModule extends ReactContextBaseJavaModule implements Life
|
|
this.hasListeners = false;
|
|
}
|
|
|
|
- @ReactMethod
|
|
- public void displayIncomingCall(String uuid, String number, String callerName) {
|
|
+ // REBREAK_PATCH: @ReactMethod entfernt — RN New Architecture TurboModule
|
|
+ // erlaubt keine overloaded methods mit gleichem JS-Namen. JS ruft immer den
|
|
+ // 5-arg-Overload (siehe RNCallKeep.js displayIncomingCall implementation).
|
|
+ public void displayIncomingCall3args(String uuid, String number, String callerName) {
|
|
this.displayIncomingCall(uuid, number, callerName, false, null);
|
|
}
|
|
|
|
+ // REBREAK_PATCH: TurboModule-Interop unterstützt android.os.Bundle nicht als
|
|
+ // @ReactMethod-Parameter. Daher: 4-arg-Variante (ohne Bundle) ist die einzige
|
|
+ // exposed @ReactMethod. JS-Wrapper ruft nie mit payload-Bundle.
|
|
@ReactMethod
|
|
public void displayIncomingCall(String uuid, String number, String callerName, boolean hasVideo) {
|
|
- this.displayIncomingCall(uuid, number, callerName, hasVideo, null);
|
|
+ this.displayIncomingCallInternal(uuid, number, callerName, hasVideo, null);
|
|
}
|
|
|
|
public void displayIncomingCall(String uuid, String number, String callerName, boolean hasVideo, @Nullable Bundle payload) {
|
|
+ this.displayIncomingCallInternal(uuid, number, callerName, hasVideo, payload);
|
|
+ }
|
|
+
|
|
+ private void displayIncomingCallInternal(String uuid, String number, String callerName, boolean hasVideo, @Nullable Bundle payload) {
|
|
if (!isConnectionServiceAvailable() || !hasPhoneAccount()) {
|
|
Log.w(TAG, "[RNCallKeepModule] displayIncomingCall ignored due to no ConnectionService or no phone account");
|
|
return;
|
|
@@ -483,17 +492,25 @@ public class RNCallKeepModule extends ReactContextBaseJavaModule implements Life
|
|
conn.onAnswer();
|
|
}
|
|
|
|
- @ReactMethod
|
|
- public void startCall(String uuid, String number, String callerName) {
|
|
+ // REBREAK_PATCH: @ReactMethod entfernt (siehe displayIncomingCall above).
|
|
+ public void startCall3args(String uuid, String number, String callerName) {
|
|
this.startCall(uuid, number, callerName, false, null);
|
|
}
|
|
|
|
+ public void startCall4args(String uuid, String number, String callerName, boolean hasVideo) {
|
|
+ this.startCall(uuid, number, callerName, hasVideo, null);
|
|
+ }
|
|
+
|
|
@ReactMethod
|
|
public void startCall(String uuid, String number, String callerName, boolean hasVideo) {
|
|
- this.startCall(uuid, number, callerName, hasVideo, null);
|
|
+ this.startCallInternal(uuid, number, callerName, hasVideo, null);
|
|
}
|
|
|
|
public void startCall(String uuid, String number, String callerName, boolean hasVideo, @Nullable Bundle payload) {
|
|
+ this.startCallInternal(uuid, number, callerName, hasVideo, payload);
|
|
+ }
|
|
+
|
|
+ private void startCallInternal(String uuid, String number, String callerName, boolean hasVideo, @Nullable Bundle payload) {
|
|
Log.d(TAG, "[RNCallKeepModule] startCall called, uuid: " + uuid + ", number: " + number + ", callerName: " + callerName + ", payload: " + payload);
|
|
|
|
if (!isConnectionServiceAvailable() || !hasPhoneAccount() || !hasPermissions() || number == null) {
|