From 61b5835e236133067a2b84342d13bee5666a3473 Mon Sep 17 00:00:00 2001 From: lucas Date: Thu, 17 Oct 2024 19:29:50 -0300 Subject: [PATCH] fix android --- .../java/io/sentry/RNSentryTimeToDisplay.java | 39 ------------------- .../io/sentry/react/RNSentryModuleImpl.java | 12 ------ .../sentry/react/RNSentryTimeToDisplay.java | 39 +++++++++++++++++++ 3 files changed, 39 insertions(+), 51 deletions(-) delete mode 100644 packages/core/android/src/main/java/io/sentry/RNSentryTimeToDisplay.java create mode 100644 packages/core/android/src/main/java/io/sentry/react/RNSentryTimeToDisplay.java diff --git a/packages/core/android/src/main/java/io/sentry/RNSentryTimeToDisplay.java b/packages/core/android/src/main/java/io/sentry/RNSentryTimeToDisplay.java deleted file mode 100644 index 264048c28..000000000 --- a/packages/core/android/src/main/java/io/sentry/RNSentryTimeToDisplay.java +++ /dev/null @@ -1,39 +0,0 @@ -package io.sentry.react; - -import com.facebook.react.bridge.Promise; - -import android.os.Handler; -import android.os.Looper; -import android.view.Choreographer; - -import org.jetbrains.annotations.NotNull; -import io.sentry.SentryDate; -import io.sentry.SentryDateProvider; -import io.sentry.android.core.SentryAndroidDateProvider; - -public class RNSentryTimeToDisplay { - public static void GetTimeToDisplay(Promise promise, SentryDateProvider dateProvider) { - Looper mainLooper = Looper.getMainLooper(); - - if (mainLooper == null) { - promise.reject("GetTimeToDisplay is not able to measure the time to display: Main looper not available."); - return; - } - - // Ensure the code runs on the main thread - new Handler(mainLooper) - .post(() -> { - try { - Choreographer choreographer = Choreographer.getInstance(); - - // Invoke the callback after the frame is rendered - choreographer.postFrameCallback(frameTimeNanos -> { - final SentryDate endDate = dateProvider.now(); - promise.resolve(endDate.nanoTimestamp() / 1e9); - }); - } catch (Exception exception) { - promise.reject("Failed to receive the instance of Choreographer", exception); - } - }); - } -} diff --git a/packages/core/android/src/main/java/io/sentry/react/RNSentryModuleImpl.java b/packages/core/android/src/main/java/io/sentry/react/RNSentryModuleImpl.java index 71ee344df..1a8435bbf 100644 --- a/packages/core/android/src/main/java/io/sentry/react/RNSentryModuleImpl.java +++ b/packages/core/android/src/main/java/io/sentry/react/RNSentryModuleImpl.java @@ -173,7 +173,6 @@ public void initNativeReactNavigationNewFrameTracking(Promise promise) { } public void initNativeSdk(final ReadableMap rnOptions, Promise promise) { -<<<<<<< HEAD SentryAndroid.init( this.getReactApplicationContext(), options -> { @@ -274,17 +273,6 @@ public void initNativeSdk(final ReadableMap rnOptions, Promise promise) { } } catch (Throwable ignored) { // NOPMD - We don't want to crash in any case // We do nothing -======= - try { - SentryAndroid.init( - this.getReactApplicationContext(), - options -> { - @Nullable SdkVersion sdkVersion = options.getSdkVersion(); - if (sdkVersion == null) { - sdkVersion = new SdkVersion(ANDROID_SDK_NAME, BuildConfig.VERSION_NAME); - } else { - sdkVersion.setName(ANDROID_SDK_NAME); ->>>>>>> 4ef0e98c (port navigation tracker #4042 to V6 / Todo: Fix tests) } options.setSentryClientName(sdkVersion.getName() + "/" + sdkVersion.getVersion()); diff --git a/packages/core/android/src/main/java/io/sentry/react/RNSentryTimeToDisplay.java b/packages/core/android/src/main/java/io/sentry/react/RNSentryTimeToDisplay.java new file mode 100644 index 000000000..3ab96ce23 --- /dev/null +++ b/packages/core/android/src/main/java/io/sentry/react/RNSentryTimeToDisplay.java @@ -0,0 +1,39 @@ +package io.sentry.react; + +import android.os.Handler; +import android.os.Looper; +import android.view.Choreographer; +import com.facebook.react.bridge.Promise; +import io.sentry.SentryDate; +import io.sentry.SentryDateProvider; + +public class RNSentryTimeToDisplay { + public static void GetTimeToDisplay(Promise promise, SentryDateProvider dateProvider) { + Looper mainLooper = Looper.getMainLooper(); + + if (mainLooper == null) { + promise.reject( + "GetTimeToDisplay is not able to measure the time to display: Main looper not" + + " available."); + return; + } + + // Ensure the code runs on the main thread + new Handler(mainLooper) + .post( + () -> { + try { + Choreographer choreographer = Choreographer.getInstance(); + + // Invoke the callback after the frame is rendered + choreographer.postFrameCallback( + frameTimeNanos -> { + final SentryDate endDate = dateProvider.now(); + promise.resolve(endDate.nanoTimestamp() / 1e9); + }); + } catch (Exception exception) { + promise.reject("Failed to receive the instance of Choreographer", exception); + } + }); + } +}