From 7f8a6200f6a83d3831173f630b92990d0d653140 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Thu, 10 Jun 2021 16:06:19 +0200 Subject: [PATCH 01/15] Add custom sentry native implementation --- .../project.pbxproj | 8 ++ packages/react-native-bridge/ios/RNSentry.m | 40 +++++++ .../react-native-bridge/ios/RNSentry.swift | 100 ++++++++++++++++++ 3 files changed, 148 insertions(+) create mode 100644 packages/react-native-bridge/ios/RNSentry.m create mode 100644 packages/react-native-bridge/ios/RNSentry.swift diff --git a/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.xcodeproj/project.pbxproj b/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.xcodeproj/project.pbxproj index 48780c86d09f52..0cd5fa523bb979 100644 --- a/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.xcodeproj/project.pbxproj +++ b/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 1D6BF0B0266F7F9300265FA5 /* RNSentry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D6BF0AF266F7F9300265FA5 /* RNSentry.swift */; }; + 1D6BF0E5266F862600265FA5 /* RNSentry.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D6BF0E4266F862600265FA5 /* RNSentry.m */; }; 7EA30CEF21AC8C250092F894 /* Gutenberg.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EA30CEE21AC8C250092F894 /* Gutenberg.swift */; }; 7EA30CF321AC91E20092F894 /* RNReactNativeGutenbergBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EA30CF221AC91E20092F894 /* RNReactNativeGutenbergBridge.swift */; }; 7EA30DA721AD7A100092F894 /* GutenbergBridgeDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EA30DA621AD7A100092F894 /* GutenbergBridgeDelegate.swift */; }; @@ -28,6 +30,8 @@ /* Begin PBXFileReference section */ 134814201AA4EA6300B7C361 /* libRNReactNativeGutenbergBridge.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNReactNativeGutenbergBridge.a; sourceTree = BUILT_PRODUCTS_DIR; }; + 1D6BF0AF266F7F9300265FA5 /* RNSentry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNSentry.swift; sourceTree = ""; }; + 1D6BF0E4266F862600265FA5 /* RNSentry.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNSentry.m; sourceTree = ""; }; 7EA30CED21AC8C240092F894 /* RNReactNativeGutenbergBridge-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RNReactNativeGutenbergBridge-Bridging-Header.h"; sourceTree = ""; }; 7EA30CEE21AC8C250092F894 /* Gutenberg.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Gutenberg.swift; sourceTree = ""; }; 7EA30CF221AC91E20092F894 /* RNReactNativeGutenbergBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNReactNativeGutenbergBridge.swift; sourceTree = ""; }; @@ -61,6 +65,8 @@ isa = PBXGroup; children = ( B3E7B5891CC2AC0600A0062D /* RNReactNativeGutenbergBridge.m */, + 1D6BF0E4266F862600265FA5 /* RNSentry.m */, + 1D6BF0AF266F7F9300265FA5 /* RNSentry.swift */, 7EA30CF221AC91E20092F894 /* RNReactNativeGutenbergBridge.swift */, 7EA30DA821AD7A2F0092F894 /* GutenbergBridgeDataSource.swift */, 7EA30DA621AD7A100092F894 /* GutenbergBridgeDelegate.swift */, @@ -140,9 +146,11 @@ files = ( 7EA30DA921AD7A2F0092F894 /* GutenbergBridgeDataSource.swift in Sources */, B3E7B58A1CC2AC0600A0062D /* RNReactNativeGutenbergBridge.m in Sources */, + 1D6BF0B0266F7F9300265FA5 /* RNSentry.swift in Sources */, 7EA30CEF21AC8C250092F894 /* Gutenberg.swift in Sources */, 7EA30CF321AC91E20092F894 /* RNReactNativeGutenbergBridge.swift in Sources */, 7EA30DA721AD7A100092F894 /* GutenbergBridgeDelegate.swift in Sources */, + 1D6BF0E5266F862600265FA5 /* RNSentry.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/packages/react-native-bridge/ios/RNSentry.m b/packages/react-native-bridge/ios/RNSentry.m new file mode 100644 index 00000000000000..71d3eebd8324f3 --- /dev/null +++ b/packages/react-native-bridge/ios/RNSentry.m @@ -0,0 +1,40 @@ +#import + +@interface RCT_EXTERN_MODULE(RNSentry, NSObject) + +// Extra methods to extract data from the Sentry SDK configured in the main apps. +RCT_EXTERN_METHOD(getOptions:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)rejecter) +RCT_EXTERN_METHOD(attachScopeToEvent:(NSDictionary * _Nonnull)event resolve:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)rejecter) +RCT_EXTERN_METHOD(shouldSendEvent:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)rejecter) + + +// This methods are extracted from the original implementation. +// Reference: https://github.com/getsentry/sentry-react-native/blob/master/ios/RNSentry.m +RCT_EXTERN_METHOD(startWithOptions:(NSDictionary *_Nonnull)options resolve:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)rejecter) +RCT_EXTERN_METHOD(deviceContexts:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)rejecter) +RCT_EXTERN_METHOD(setLogLevel:(int)level) +RCT_EXTERN_METHOD(fetchRelease:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)rejecter) +RCT_EXTERN_METHOD(captureEnvelope:(NSDictionary * _Nonnull)envelopeDict + resolve:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)rejecter) +RCT_EXTERN_METHOD(setUser:(NSDictionary *)user + otherUserKeys:(NSDictionary *)otherUserKeys +) +RCT_EXTERN_METHOD(addBreadcrumb:(NSDictionary *)breadcrumb) +RCT_EXTERN_METHOD(clearBreadcrumbs) +RCT_EXTERN_METHOD(setExtra:(NSString *)key + extra:(NSString *)extra +) +RCT_EXTERN_METHOD(setContext:(NSString *)key + context:(NSDictionary *)context +) +RCT_EXTERN_METHOD(setTag:(NSString *)key + value:(NSString *)value +) +RCT_EXTERN_METHOD(crash) +@end diff --git a/packages/react-native-bridge/ios/RNSentry.swift b/packages/react-native-bridge/ios/RNSentry.swift new file mode 100644 index 00000000000000..22a082600d5fdb --- /dev/null +++ b/packages/react-native-bridge/ios/RNSentry.swift @@ -0,0 +1,100 @@ +@objc (RNSentry) +public class RNSentry: NSObject, RCTBridgeModule { + weak var gutenbergBridge: RNReactNativeGutenbergBridge? + weak var dataSource: GutenbergBridgeDataSource? + + public static func moduleName() -> String! { + return "RNSentry" + } + + public static func requiresMainQueueSetup() -> Bool { + return true + } + + public func constantsToExport() -> [AnyHashable : Any]! { + return ["nativeClientAvailable": true, "nativeTransport": true] + } + + @objc + func attachScopeToEvent(_ event: [String: Any], resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { + DispatchQueue.main.async { + let eventWithScope = self.dataSource?.attachScopeToSentryEvent(event) + resolve(eventWithScope); + } + } + + @objc + func shouldSendEvent(_ resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { + DispatchQueue.main.async { + let shouldSendEvent = self.dataSource?.shouldSendSentryEvent() + resolve(shouldSendEvent); + } + } + + @objc + func getOptions(_ resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { + DispatchQueue.main.async { + resolve(self.dataSource?.getSentryOptions()) + } + } + + @objc + func captureEnvelope(_ envelopeDict: [String: Any], resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { + gutenbergBridge?.logSentryEnvelope(envelopeDict) + resolve(true); + } +} + +// MARK: - Disabled original methods + +extension RNSentry { + // Disabled because the Sentry SDK is initialized in the main apps. + @objc + func startWithOptions(_ options: [String:Any], resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { + resolve(true); + } + + // Disabled because the device context is fetched via the attachScopeToEvent method. + @objc + func deviceContexts(_ resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { + resolve({}); + } + + // Disabled + @objc + func setLogLevel(_ level: Int) { } + + // Disabled as it's not required by the current Sentry integrations. + @objc + func fetchRelease(_ resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { + resolve({}); + } + + // Disabled as it's set by the main apps. + @objc + func setUser(_ user: [String:Any], otherUserKeys: [String:Any]) { } + + // Disabled as breadcrumbs are managed by the main apps. + @objc + func addBreadcrumb(_ breadcrumb: [String: Any]) { } + + // Disabled as breadcrumbs are managed by the main apps. + @objc + func clearBreadcrumbs() { } + + // Disabled as extra tags are managed by the main apps. + @objc + func setExtra(_ key: String, extra: String) { } + + // Disabled as context is managed by the main apps. + @objc + func setContext(_ key: String, context: [String: Any]) { } + + // Disabled as tags are managed by the main apps. + @objc + func setTag(_ key: String, value: String) { } + + // Disabled as it's only meant to be used in development. + @objc + func crash() { } +} From 787f4d32ece40833b9b52f39a5a319393e38e1c5 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Thu, 10 Jun 2021 16:06:50 +0200 Subject: [PATCH 02/15] Add sentry module to Gutenberg bridge --- packages/react-native-bridge/ios/Gutenberg.swift | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/react-native-bridge/ios/Gutenberg.swift b/packages/react-native-bridge/ios/Gutenberg.swift index d6cc7605385125..9eb5e4334731b8 100644 --- a/packages/react-native-bridge/ios/Gutenberg.swift +++ b/packages/react-native-bridge/ios/Gutenberg.swift @@ -49,6 +49,9 @@ public class Gutenberg: NSObject { private let bridgeModule = RNReactNativeGutenbergBridge() private unowned let dataSource: GutenbergBridgeDataSource + // Additional modules + private let sentryModule = RNSentry() + private lazy var bridge: RCTBridge = { return RCTBridge(delegate: self, launchOptions: [:]) }() @@ -226,9 +229,16 @@ extension Gutenberg: RCTBridgeDelegate { } public func extraModules(for bridge: RCTBridge!) -> [RCTBridgeModule]! { + // Aztec let aztecManager = RCTAztecViewManager() aztecManager.attachmentDelegate = dataSource.aztecAttachmentDelegate() - let baseModules:[RCTBridgeModule] = [bridgeModule, aztecManager] + + // Sentry + let sentryModule = RNSentry() + sentryModule.gutenbergBridge = bridgeModule + sentryModule.dataSource = dataSource + + let baseModules:[RCTBridgeModule] = [bridgeModule, aztecManager, sentryModule] return baseModules + extraModules } } From b9e22cdbac5af6f5e0d0d7980c3f7beb0fef27da Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Thu, 10 Jun 2021 16:09:59 +0200 Subject: [PATCH 03/15] Add log sentry envelope bridge method --- packages/react-native-bridge/ios/GutenbergBridgeDelegate.swift | 3 +++ .../react-native-bridge/ios/RNReactNativeGutenbergBridge.swift | 3 +++ 2 files changed, 6 insertions(+) diff --git a/packages/react-native-bridge/ios/GutenbergBridgeDelegate.swift b/packages/react-native-bridge/ios/GutenbergBridgeDelegate.swift index f89563063e63a5..767545d89f3993 100644 --- a/packages/react-native-bridge/ios/GutenbergBridgeDelegate.swift +++ b/packages/react-native-bridge/ios/GutenbergBridgeDelegate.swift @@ -250,4 +250,7 @@ public extension GutenbergBridgeDelegate { func gutenbergDidRequestMediaFilesUploadCancelDialog(_ mediaFiles: [[String: Any]]) { } func gutenbergDidRequestMediaFilesSaveCancelDialog(_ mediaFiles: [[String: Any]]) { } func gutenbergDidRequestMediaFilesBlockReplaceSync(_ mediaFiles: [[String: Any]], clientId: String) {} + + // Crash logging - Sentry + func gutenbergDidLogSentryEnvelope(_ envelope: [String: Any]) { } } diff --git a/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.swift b/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.swift index 82f19d50a5a154..4593b658263ca2 100644 --- a/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.swift +++ b/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.swift @@ -350,6 +350,9 @@ public class RNReactNativeGutenbergBridge: RCTEventEmitter { } } + func logSentryEnvelope(_ envelope: [String: Any]) { + self.delegate?.gutenbergDidLogSentryEnvelope(envelope) + } } // MARK: - RCTBridgeModule delegate From 8617fdeecf46cd12a7d8fbf154b189095989a27c Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Thu, 10 Jun 2021 16:20:03 +0200 Subject: [PATCH 04/15] Add crash logging methods to Gutenberg data source --- .../ios/GutenbergBridgeDataSource.swift | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift b/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift index d6023f4d1508d7..827bef8f4c5c87 100644 --- a/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift +++ b/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift @@ -70,6 +70,24 @@ public extension GutenbergBridgeDataSource { } } +// MARK: - Crash logging - Sentry +public extension GutenbergBridgeDataSource { + /// Asks the data source for the Sentry SDK options to initialize the SDK in the React native side. + /// + /// - Returns: Sentry SDK options. + func getSentryOptions() -> [String: Any]? { return [:] } + + /// Asks the data source for the current Sentry scope and includes it to an event. + /// + /// - Returns: Event object with attached scope. + func attachScopeToSentryEvent(_ event: [String: Any]) -> [String: Any]? { return event } + + /// Asks the data source to know if the app should send Sentry events depending on user preferences. + /// + /// - Returns: True if Sentry events can be sent. + func shouldSendSentryEvent() -> Bool? { return false } +} + public protocol GutenbergEditorTheme { var colors: [[String: String]]? { get } var gradients: [[String: String]]? { get } From dc1db5d63664e35ea52589b342b1a5540411c31b Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Thu, 10 Jun 2021 16:30:37 +0200 Subject: [PATCH 05/15] Exclude sentry path from babel presets --- packages/react-native-editor/babel.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/react-native-editor/babel.config.js b/packages/react-native-editor/babel.config.js index 76fd0ba03c5c2a..b8a3266d1b11db 100644 --- a/packages/react-native-editor/babel.config.js +++ b/packages/react-native-editor/babel.config.js @@ -32,7 +32,7 @@ module.exports = function ( api ) { }, ], ], - exclude: /node_modules\/(react-native|@react-native-community|@react-navigation)/, + exclude: /node_modules\/(react-native|@react-native-community|@react-navigation|@sentry)/, }, { // Auto-add `import { createElement } from '@wordpress/element';` when JSX is found @@ -47,7 +47,7 @@ module.exports = function ( api ) { }, ], ], - exclude: /node_modules\/(react-native|@react-native-community|@react-navigation)/, + exclude: /node_modules\/(react-native|@react-native-community|@react-navigation|@sentry)/, }, ], env: { From d7940888b8e354f4097be5f1a4f669265745923c Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Thu, 10 Jun 2021 17:20:01 +0200 Subject: [PATCH 06/15] Relocate sentry crash logging data source methods --- .../ios/GutenbergBridgeDataSource.swift | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift b/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift index 827bef8f4c5c87..87e1e97c57d933 100644 --- a/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift +++ b/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift @@ -50,6 +50,21 @@ public protocol GutenbergBridgeDataSource: class { /// Asks the data source for a view to show while the Editor is loading. var loadingView: UIView? { get } + + /// Asks the data source for the Sentry SDK options to initialize the SDK in the React native side. + /// + /// - Returns: Sentry SDK options. + func getSentryOptions() -> [String: Any]? + + /// Asks the data source for the current Sentry scope and includes it to an event. + /// + /// - Returns: Event object with attached scope. + func attachScopeToSentryEvent(_ event: [String: Any]) -> [String: Any]? + + /// Asks the data source to know if the app should send Sentry events depending on user preferences. + /// + /// - Returns: True if Sentry events can be sent. + func shouldSendSentryEvent() -> Bool? } public extension GutenbergBridgeDataSource { @@ -70,24 +85,6 @@ public extension GutenbergBridgeDataSource { } } -// MARK: - Crash logging - Sentry -public extension GutenbergBridgeDataSource { - /// Asks the data source for the Sentry SDK options to initialize the SDK in the React native side. - /// - /// - Returns: Sentry SDK options. - func getSentryOptions() -> [String: Any]? { return [:] } - - /// Asks the data source for the current Sentry scope and includes it to an event. - /// - /// - Returns: Event object with attached scope. - func attachScopeToSentryEvent(_ event: [String: Any]) -> [String: Any]? { return event } - - /// Asks the data source to know if the app should send Sentry events depending on user preferences. - /// - /// - Returns: True if Sentry events can be sent. - func shouldSendSentryEvent() -> Bool? { return false } -} - public protocol GutenbergEditorTheme { var colors: [[String: String]]? { get } var gradients: [[String: String]]? { get } From 80f6010112882f0871e911dd7cf577e0369496c8 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Thu, 10 Jun 2021 17:32:33 +0200 Subject: [PATCH 07/15] Relocate sentry crash logging bridge methods --- .../react-native-bridge/ios/GutenbergBridgeDelegate.swift | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-native-bridge/ios/GutenbergBridgeDelegate.swift b/packages/react-native-bridge/ios/GutenbergBridgeDelegate.swift index 767545d89f3993..e1c0e71d62940b 100644 --- a/packages/react-native-bridge/ios/GutenbergBridgeDelegate.swift +++ b/packages/react-native-bridge/ios/GutenbergBridgeDelegate.swift @@ -232,6 +232,9 @@ public protocol GutenbergBridgeDelegate: class { func gutenbergDidRequestMediaFilesUploadCancelDialog(_ mediaFiles: [[String: Any]]) func gutenbergDidRequestMediaFilesSaveCancelDialog(_ mediaFiles: [[String: Any]]) + + // Crash logging - Sentry + func gutenbergDidLogSentryEnvelope(_ envelope: [String: Any]) } // MARK: - Optional GutenbergBridgeDelegate methods @@ -250,7 +253,4 @@ public extension GutenbergBridgeDelegate { func gutenbergDidRequestMediaFilesUploadCancelDialog(_ mediaFiles: [[String: Any]]) { } func gutenbergDidRequestMediaFilesSaveCancelDialog(_ mediaFiles: [[String: Any]]) { } func gutenbergDidRequestMediaFilesBlockReplaceSync(_ mediaFiles: [[String: Any]], clientId: String) {} - - // Crash logging - Sentry - func gutenbergDidLogSentryEnvelope(_ envelope: [String: Any]) { } } From c28a31d59a7b06027760c212bc6099f59ef4cb7d Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Mon, 14 Jun 2021 19:52:02 +0200 Subject: [PATCH 08/15] Update Sentry setLogLevel description --- packages/react-native-bridge/ios/RNSentry.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native-bridge/ios/RNSentry.swift b/packages/react-native-bridge/ios/RNSentry.swift index 22a082600d5fdb..ac6576c54078fe 100644 --- a/packages/react-native-bridge/ios/RNSentry.swift +++ b/packages/react-native-bridge/ios/RNSentry.swift @@ -60,7 +60,7 @@ extension RNSentry { resolve({}); } - // Disabled + // Disabled as it's set by the main apps. @objc func setLogLevel(_ level: Int) { } From d9bf085716a6368fdd44518e6ea687ecbb14f0ca Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Wed, 16 Jun 2021 17:16:30 +0200 Subject: [PATCH 09/15] Add get Sentry user function --- .../ios/GutenbergBridgeDataSource.swift | 5 +++++ packages/react-native-bridge/ios/RNSentry.m | 2 ++ packages/react-native-bridge/ios/RNSentry.swift | 7 +++++++ 3 files changed, 14 insertions(+) diff --git a/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift b/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift index 87e1e97c57d933..47405ec87b1532 100644 --- a/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift +++ b/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift @@ -56,6 +56,11 @@ public protocol GutenbergBridgeDataSource: class { /// - Returns: Sentry SDK options. func getSentryOptions() -> [String: Any]? + /// Asks the data source for the current user of Sentry SDK. + /// + /// - Returns: Sentry user. + func getSentryUser() -> [String: Any]? + /// Asks the data source for the current Sentry scope and includes it to an event. /// /// - Returns: Event object with attached scope. diff --git a/packages/react-native-bridge/ios/RNSentry.m b/packages/react-native-bridge/ios/RNSentry.m index 71d3eebd8324f3..e6c08e0d82420c 100644 --- a/packages/react-native-bridge/ios/RNSentry.m +++ b/packages/react-native-bridge/ios/RNSentry.m @@ -5,6 +5,8 @@ @interface RCT_EXTERN_MODULE(RNSentry, NSObject) // Extra methods to extract data from the Sentry SDK configured in the main apps. RCT_EXTERN_METHOD(getOptions:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)rejecter) +RCT_EXTERN_METHOD(getUser:(RCTPromiseResolveBlock)resolve + rejecter:(RCTPromiseRejectBlock)rejecter) RCT_EXTERN_METHOD(attachScopeToEvent:(NSDictionary * _Nonnull)event resolve:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)rejecter) RCT_EXTERN_METHOD(shouldSendEvent:(RCTPromiseResolveBlock)resolve diff --git a/packages/react-native-bridge/ios/RNSentry.swift b/packages/react-native-bridge/ios/RNSentry.swift index ac6576c54078fe..287476a8b4e955 100644 --- a/packages/react-native-bridge/ios/RNSentry.swift +++ b/packages/react-native-bridge/ios/RNSentry.swift @@ -37,6 +37,13 @@ public class RNSentry: NSObject, RCTBridgeModule { resolve(self.dataSource?.getSentryOptions()) } } + + @objc + func getUser(_ resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { + DispatchQueue.main.async { + resolve(self.dataSource?.getSentryUser()) + } + } @objc func captureEnvelope(_ envelopeDict: [String: Any], resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { From ce3babf6955e99dbdd1fb95156a4d05a4aaf03f4 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Thu, 17 Jun 2021 12:31:34 +0200 Subject: [PATCH 10/15] Pass Sentry options as an initial prop --- packages/react-native-bridge/ios/Gutenberg.swift | 2 ++ packages/react-native-bridge/ios/RNSentry.m | 2 -- packages/react-native-bridge/ios/RNSentry.swift | 7 ------- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/packages/react-native-bridge/ios/Gutenberg.swift b/packages/react-native-bridge/ios/Gutenberg.swift index 9eb5e4334731b8..9ba83355f34999 100644 --- a/packages/react-native-bridge/ios/Gutenberg.swift +++ b/packages/react-native-bridge/ios/Gutenberg.swift @@ -91,6 +91,8 @@ public class Gutenberg: NSObject { initialProps["gradients"] = gradients } + initialProps["sentryOptions"] = dataSource.getSentryOptions() + return initialProps } diff --git a/packages/react-native-bridge/ios/RNSentry.m b/packages/react-native-bridge/ios/RNSentry.m index e6c08e0d82420c..fd8e39ccdd43ad 100644 --- a/packages/react-native-bridge/ios/RNSentry.m +++ b/packages/react-native-bridge/ios/RNSentry.m @@ -3,8 +3,6 @@ @interface RCT_EXTERN_MODULE(RNSentry, NSObject) // Extra methods to extract data from the Sentry SDK configured in the main apps. -RCT_EXTERN_METHOD(getOptions:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)rejecter) RCT_EXTERN_METHOD(getUser:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)rejecter) RCT_EXTERN_METHOD(attachScopeToEvent:(NSDictionary * _Nonnull)event resolve:(RCTPromiseResolveBlock)resolve diff --git a/packages/react-native-bridge/ios/RNSentry.swift b/packages/react-native-bridge/ios/RNSentry.swift index 287476a8b4e955..a2ff307dcc9886 100644 --- a/packages/react-native-bridge/ios/RNSentry.swift +++ b/packages/react-native-bridge/ios/RNSentry.swift @@ -31,13 +31,6 @@ public class RNSentry: NSObject, RCTBridgeModule { } } - @objc - func getOptions(_ resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { - DispatchQueue.main.async { - resolve(self.dataSource?.getSentryOptions()) - } - } - @objc func getUser(_ resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { DispatchQueue.main.async { From 25d818de7cc2861ab01845fae03e393861928e36 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Thu, 17 Jun 2021 13:00:14 +0200 Subject: [PATCH 11/15] Add Sentry bridge functions to demo project --- .../GutenbergViewController.swift | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift b/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift index 08b4123d7579bd..7841eb0b51113f 100644 --- a/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift +++ b/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift @@ -240,6 +240,10 @@ extension GutenbergViewController: GutenbergBridgeDelegate { func gutenbergDidRequestSetFocalPointPickerTooltipShown(_ tooltipShown: Bool) { print("Gutenberg requested setting tooltip flag") } + + func gutenbergDidLogSentryEnvelope(_ envelope: [String : Any]) { + print(#function) + } } extension GutenbergViewController: GutenbergWebDelegate { @@ -303,6 +307,22 @@ extension GutenbergViewController: GutenbergBridgeDataSource { func gutenbergMediaSources() -> [Gutenberg.MediaSource] { return [.filesApp, .otherApps] } + + func getSentryOptions() -> [String: Any]? { + return nil + } + + func getSentryUser() -> [String: Any]? { + return nil + } + + func attachScopeToSentryEvent(_ event: [String: Any]) -> [String: Any]? { + return nil + } + + func shouldSendSentryEvent() -> Bool? { + return nil + } } extension Gutenberg.MediaSource { From 7aa67ccc20849d842bd22dfde7364a1dc8fad46e Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Fri, 2 Jul 2021 18:14:36 +0200 Subject: [PATCH 12/15] Remove sentry native module --- .../react-native-bridge/ios/Gutenberg.swift | 10 +- .../ios/GutenbergBridgeDataSource.swift | 15 --- .../ios/GutenbergBridgeDelegate.swift | 3 - .../ios/RNReactNativeGutenbergBridge.swift | 3 - .../project.pbxproj | 8 -- packages/react-native-bridge/ios/RNSentry.m | 40 ------- .../react-native-bridge/ios/RNSentry.swift | 100 ------------------ .../GutenbergViewController.swift | 16 --- 8 files changed, 1 insertion(+), 194 deletions(-) delete mode 100644 packages/react-native-bridge/ios/RNSentry.m delete mode 100644 packages/react-native-bridge/ios/RNSentry.swift diff --git a/packages/react-native-bridge/ios/Gutenberg.swift b/packages/react-native-bridge/ios/Gutenberg.swift index 9ba83355f34999..fbfd2287ea5792 100644 --- a/packages/react-native-bridge/ios/Gutenberg.swift +++ b/packages/react-native-bridge/ios/Gutenberg.swift @@ -49,9 +49,6 @@ public class Gutenberg: NSObject { private let bridgeModule = RNReactNativeGutenbergBridge() private unowned let dataSource: GutenbergBridgeDataSource - // Additional modules - private let sentryModule = RNSentry() - private lazy var bridge: RCTBridge = { return RCTBridge(delegate: self, launchOptions: [:]) }() @@ -235,12 +232,7 @@ extension Gutenberg: RCTBridgeDelegate { let aztecManager = RCTAztecViewManager() aztecManager.attachmentDelegate = dataSource.aztecAttachmentDelegate() - // Sentry - let sentryModule = RNSentry() - sentryModule.gutenbergBridge = bridgeModule - sentryModule.dataSource = dataSource - - let baseModules:[RCTBridgeModule] = [bridgeModule, aztecManager, sentryModule] + let baseModules:[RCTBridgeModule] = [bridgeModule, aztecManager] return baseModules + extraModules } } diff --git a/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift b/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift index 47405ec87b1532..306ec1fa88a694 100644 --- a/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift +++ b/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift @@ -55,21 +55,6 @@ public protocol GutenbergBridgeDataSource: class { /// /// - Returns: Sentry SDK options. func getSentryOptions() -> [String: Any]? - - /// Asks the data source for the current user of Sentry SDK. - /// - /// - Returns: Sentry user. - func getSentryUser() -> [String: Any]? - - /// Asks the data source for the current Sentry scope and includes it to an event. - /// - /// - Returns: Event object with attached scope. - func attachScopeToSentryEvent(_ event: [String: Any]) -> [String: Any]? - - /// Asks the data source to know if the app should send Sentry events depending on user preferences. - /// - /// - Returns: True if Sentry events can be sent. - func shouldSendSentryEvent() -> Bool? } public extension GutenbergBridgeDataSource { diff --git a/packages/react-native-bridge/ios/GutenbergBridgeDelegate.swift b/packages/react-native-bridge/ios/GutenbergBridgeDelegate.swift index c69758ce9e6643..6143ba78bc2909 100644 --- a/packages/react-native-bridge/ios/GutenbergBridgeDelegate.swift +++ b/packages/react-native-bridge/ios/GutenbergBridgeDelegate.swift @@ -233,9 +233,6 @@ public protocol GutenbergBridgeDelegate: class { func gutenbergDidRequestMediaFilesUploadCancelDialog(_ mediaFiles: [[String: Any]]) func gutenbergDidRequestMediaFilesSaveCancelDialog(_ mediaFiles: [[String: Any]]) - - // Crash logging - Sentry - func gutenbergDidLogSentryEnvelope(_ envelope: [String: Any]) } // MARK: - Optional GutenbergBridgeDelegate methods diff --git a/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.swift b/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.swift index 4593b658263ca2..82f19d50a5a154 100644 --- a/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.swift +++ b/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.swift @@ -350,9 +350,6 @@ public class RNReactNativeGutenbergBridge: RCTEventEmitter { } } - func logSentryEnvelope(_ envelope: [String: Any]) { - self.delegate?.gutenbergDidLogSentryEnvelope(envelope) - } } // MARK: - RCTBridgeModule delegate diff --git a/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.xcodeproj/project.pbxproj b/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.xcodeproj/project.pbxproj index 0cd5fa523bb979..48780c86d09f52 100644 --- a/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.xcodeproj/project.pbxproj +++ b/packages/react-native-bridge/ios/RNReactNativeGutenbergBridge.xcodeproj/project.pbxproj @@ -7,8 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 1D6BF0B0266F7F9300265FA5 /* RNSentry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D6BF0AF266F7F9300265FA5 /* RNSentry.swift */; }; - 1D6BF0E5266F862600265FA5 /* RNSentry.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D6BF0E4266F862600265FA5 /* RNSentry.m */; }; 7EA30CEF21AC8C250092F894 /* Gutenberg.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EA30CEE21AC8C250092F894 /* Gutenberg.swift */; }; 7EA30CF321AC91E20092F894 /* RNReactNativeGutenbergBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EA30CF221AC91E20092F894 /* RNReactNativeGutenbergBridge.swift */; }; 7EA30DA721AD7A100092F894 /* GutenbergBridgeDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EA30DA621AD7A100092F894 /* GutenbergBridgeDelegate.swift */; }; @@ -30,8 +28,6 @@ /* Begin PBXFileReference section */ 134814201AA4EA6300B7C361 /* libRNReactNativeGutenbergBridge.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNReactNativeGutenbergBridge.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 1D6BF0AF266F7F9300265FA5 /* RNSentry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNSentry.swift; sourceTree = ""; }; - 1D6BF0E4266F862600265FA5 /* RNSentry.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RNSentry.m; sourceTree = ""; }; 7EA30CED21AC8C240092F894 /* RNReactNativeGutenbergBridge-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "RNReactNativeGutenbergBridge-Bridging-Header.h"; sourceTree = ""; }; 7EA30CEE21AC8C250092F894 /* Gutenberg.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Gutenberg.swift; sourceTree = ""; }; 7EA30CF221AC91E20092F894 /* RNReactNativeGutenbergBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RNReactNativeGutenbergBridge.swift; sourceTree = ""; }; @@ -65,8 +61,6 @@ isa = PBXGroup; children = ( B3E7B5891CC2AC0600A0062D /* RNReactNativeGutenbergBridge.m */, - 1D6BF0E4266F862600265FA5 /* RNSentry.m */, - 1D6BF0AF266F7F9300265FA5 /* RNSentry.swift */, 7EA30CF221AC91E20092F894 /* RNReactNativeGutenbergBridge.swift */, 7EA30DA821AD7A2F0092F894 /* GutenbergBridgeDataSource.swift */, 7EA30DA621AD7A100092F894 /* GutenbergBridgeDelegate.swift */, @@ -146,11 +140,9 @@ files = ( 7EA30DA921AD7A2F0092F894 /* GutenbergBridgeDataSource.swift in Sources */, B3E7B58A1CC2AC0600A0062D /* RNReactNativeGutenbergBridge.m in Sources */, - 1D6BF0B0266F7F9300265FA5 /* RNSentry.swift in Sources */, 7EA30CEF21AC8C250092F894 /* Gutenberg.swift in Sources */, 7EA30CF321AC91E20092F894 /* RNReactNativeGutenbergBridge.swift in Sources */, 7EA30DA721AD7A100092F894 /* GutenbergBridgeDelegate.swift in Sources */, - 1D6BF0E5266F862600265FA5 /* RNSentry.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/packages/react-native-bridge/ios/RNSentry.m b/packages/react-native-bridge/ios/RNSentry.m deleted file mode 100644 index fd8e39ccdd43ad..00000000000000 --- a/packages/react-native-bridge/ios/RNSentry.m +++ /dev/null @@ -1,40 +0,0 @@ -#import - -@interface RCT_EXTERN_MODULE(RNSentry, NSObject) - -// Extra methods to extract data from the Sentry SDK configured in the main apps. -RCT_EXTERN_METHOD(getUser:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)rejecter) -RCT_EXTERN_METHOD(attachScopeToEvent:(NSDictionary * _Nonnull)event resolve:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)rejecter) -RCT_EXTERN_METHOD(shouldSendEvent:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)rejecter) - - -// This methods are extracted from the original implementation. -// Reference: https://github.com/getsentry/sentry-react-native/blob/master/ios/RNSentry.m -RCT_EXTERN_METHOD(startWithOptions:(NSDictionary *_Nonnull)options resolve:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)rejecter) -RCT_EXTERN_METHOD(deviceContexts:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)rejecter) -RCT_EXTERN_METHOD(setLogLevel:(int)level) -RCT_EXTERN_METHOD(fetchRelease:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)rejecter) -RCT_EXTERN_METHOD(captureEnvelope:(NSDictionary * _Nonnull)envelopeDict - resolve:(RCTPromiseResolveBlock)resolve - rejecter:(RCTPromiseRejectBlock)rejecter) -RCT_EXTERN_METHOD(setUser:(NSDictionary *)user - otherUserKeys:(NSDictionary *)otherUserKeys -) -RCT_EXTERN_METHOD(addBreadcrumb:(NSDictionary *)breadcrumb) -RCT_EXTERN_METHOD(clearBreadcrumbs) -RCT_EXTERN_METHOD(setExtra:(NSString *)key - extra:(NSString *)extra -) -RCT_EXTERN_METHOD(setContext:(NSString *)key - context:(NSDictionary *)context -) -RCT_EXTERN_METHOD(setTag:(NSString *)key - value:(NSString *)value -) -RCT_EXTERN_METHOD(crash) -@end diff --git a/packages/react-native-bridge/ios/RNSentry.swift b/packages/react-native-bridge/ios/RNSentry.swift deleted file mode 100644 index a2ff307dcc9886..00000000000000 --- a/packages/react-native-bridge/ios/RNSentry.swift +++ /dev/null @@ -1,100 +0,0 @@ -@objc (RNSentry) -public class RNSentry: NSObject, RCTBridgeModule { - weak var gutenbergBridge: RNReactNativeGutenbergBridge? - weak var dataSource: GutenbergBridgeDataSource? - - public static func moduleName() -> String! { - return "RNSentry" - } - - public static func requiresMainQueueSetup() -> Bool { - return true - } - - public func constantsToExport() -> [AnyHashable : Any]! { - return ["nativeClientAvailable": true, "nativeTransport": true] - } - - @objc - func attachScopeToEvent(_ event: [String: Any], resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { - DispatchQueue.main.async { - let eventWithScope = self.dataSource?.attachScopeToSentryEvent(event) - resolve(eventWithScope); - } - } - - @objc - func shouldSendEvent(_ resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { - DispatchQueue.main.async { - let shouldSendEvent = self.dataSource?.shouldSendSentryEvent() - resolve(shouldSendEvent); - } - } - - @objc - func getUser(_ resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { - DispatchQueue.main.async { - resolve(self.dataSource?.getSentryUser()) - } - } - - @objc - func captureEnvelope(_ envelopeDict: [String: Any], resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { - gutenbergBridge?.logSentryEnvelope(envelopeDict) - resolve(true); - } -} - -// MARK: - Disabled original methods - -extension RNSentry { - // Disabled because the Sentry SDK is initialized in the main apps. - @objc - func startWithOptions(_ options: [String:Any], resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { - resolve(true); - } - - // Disabled because the device context is fetched via the attachScopeToEvent method. - @objc - func deviceContexts(_ resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { - resolve({}); - } - - // Disabled as it's set by the main apps. - @objc - func setLogLevel(_ level: Int) { } - - // Disabled as it's not required by the current Sentry integrations. - @objc - func fetchRelease(_ resolve: @escaping RCTPromiseResolveBlock, rejecter:@escaping RCTPromiseRejectBlock) { - resolve({}); - } - - // Disabled as it's set by the main apps. - @objc - func setUser(_ user: [String:Any], otherUserKeys: [String:Any]) { } - - // Disabled as breadcrumbs are managed by the main apps. - @objc - func addBreadcrumb(_ breadcrumb: [String: Any]) { } - - // Disabled as breadcrumbs are managed by the main apps. - @objc - func clearBreadcrumbs() { } - - // Disabled as extra tags are managed by the main apps. - @objc - func setExtra(_ key: String, extra: String) { } - - // Disabled as context is managed by the main apps. - @objc - func setContext(_ key: String, context: [String: Any]) { } - - // Disabled as tags are managed by the main apps. - @objc - func setTag(_ key: String, value: String) { } - - // Disabled as it's only meant to be used in development. - @objc - func crash() { } -} diff --git a/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift b/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift index 613cefc4dded3c..8bc098830aaffe 100644 --- a/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift +++ b/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift @@ -240,10 +240,6 @@ extension GutenbergViewController: GutenbergBridgeDelegate { func gutenbergDidRequestSetFocalPointPickerTooltipShown(_ tooltipShown: Bool) { print("Gutenberg requested setting tooltip flag") } - - func gutenbergDidLogSentryEnvelope(_ envelope: [String : Any]) { - print(#function) - } } extension GutenbergViewController: GutenbergWebDelegate { @@ -311,18 +307,6 @@ extension GutenbergViewController: GutenbergBridgeDataSource { func getSentryOptions() -> [String: Any]? { return nil } - - func getSentryUser() -> [String: Any]? { - return nil - } - - func attachScopeToSentryEvent(_ event: [String: Any]) -> [String: Any]? { - return nil - } - - func shouldSendSentryEvent() -> Bool? { - return nil - } } extension Gutenberg.MediaSource { From bf074384b15c45af279a98712f101c7d9563a02e Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Mon, 5 Jul 2021 13:24:10 +0200 Subject: [PATCH 13/15] Rename getSentryOptions to gutenbergSentryOptions --- packages/react-native-bridge/ios/Gutenberg.swift | 2 +- .../ios/GutenbergBridgeDataSource.swift | 8 ++++---- .../ios/GutenbergDemo/GutenbergViewController.swift | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/react-native-bridge/ios/Gutenberg.swift b/packages/react-native-bridge/ios/Gutenberg.swift index fbfd2287ea5792..37d9bba41f1f79 100644 --- a/packages/react-native-bridge/ios/Gutenberg.swift +++ b/packages/react-native-bridge/ios/Gutenberg.swift @@ -88,7 +88,7 @@ public class Gutenberg: NSObject { initialProps["gradients"] = gradients } - initialProps["sentryOptions"] = dataSource.getSentryOptions() + initialProps["sentryOptions"] = dataSource.gutenbergSentryOptions() return initialProps } diff --git a/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift b/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift index 306ec1fa88a694..226ea67eb04fe9 100644 --- a/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift +++ b/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift @@ -48,13 +48,13 @@ public protocol GutenbergBridgeDataSource: class { /// Asks the data source for a list of theme colors. func gutenbergEditorTheme() -> GutenbergEditorTheme? - /// Asks the data source for a view to show while the Editor is loading. - var loadingView: UIView? { get } - /// Asks the data source for the Sentry SDK options to initialize the SDK in the React native side. /// /// - Returns: Sentry SDK options. - func getSentryOptions() -> [String: Any]? + func gutenbergSentryOptions() -> [String: Any]? + + /// Asks the data source for a view to show while the Editor is loading. + var loadingView: UIView? { get } } public extension GutenbergBridgeDataSource { diff --git a/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift b/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift index 8bc098830aaffe..1ab42f626e4c99 100644 --- a/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift +++ b/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift @@ -304,7 +304,7 @@ extension GutenbergViewController: GutenbergBridgeDataSource { return [.filesApp, .otherApps] } - func getSentryOptions() -> [String: Any]? { + func gutenbergSentryOptions() -> [String: Any]? { return nil } } From a1497a0532f0d7b7c6c8ffa43c0216e8402bd0c5 Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Fri, 9 Jul 2021 14:02:18 +0200 Subject: [PATCH 14/15] Rename sentry options to crash logging --- packages/react-native-bridge/ios/Gutenberg.swift | 2 +- .../react-native-bridge/ios/GutenbergBridgeDataSource.swift | 6 +++--- .../ios/GutenbergDemo/GutenbergViewController.swift | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/react-native-bridge/ios/Gutenberg.swift b/packages/react-native-bridge/ios/Gutenberg.swift index 37d9bba41f1f79..b24788be7c88c3 100644 --- a/packages/react-native-bridge/ios/Gutenberg.swift +++ b/packages/react-native-bridge/ios/Gutenberg.swift @@ -88,7 +88,7 @@ public class Gutenberg: NSObject { initialProps["gradients"] = gradients } - initialProps["sentryOptions"] = dataSource.gutenbergSentryOptions() + initialProps["crashLoggingOptions"] = dataSource.gutenbergCrashLoggingOptions() return initialProps } diff --git a/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift b/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift index 226ea67eb04fe9..a0bc31eb392935 100644 --- a/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift +++ b/packages/react-native-bridge/ios/GutenbergBridgeDataSource.swift @@ -48,10 +48,10 @@ public protocol GutenbergBridgeDataSource: class { /// Asks the data source for a list of theme colors. func gutenbergEditorTheme() -> GutenbergEditorTheme? - /// Asks the data source for the Sentry SDK options to initialize the SDK in the React native side. + /// Asks the data source for the crash logging options to initialize the SDK in the React native side. /// - /// - Returns: Sentry SDK options. - func gutenbergSentryOptions() -> [String: Any]? + /// - Returns: Crash logging SDK options. + func gutenbergCrashLoggingOptions() -> [String: Any]? /// Asks the data source for a view to show while the Editor is loading. var loadingView: UIView? { get } diff --git a/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift b/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift index 1ab42f626e4c99..744d0e137146af 100644 --- a/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift +++ b/packages/react-native-editor/ios/GutenbergDemo/GutenbergViewController.swift @@ -304,7 +304,7 @@ extension GutenbergViewController: GutenbergBridgeDataSource { return [.filesApp, .otherApps] } - func gutenbergSentryOptions() -> [String: Any]? { + func gutenbergCrashLoggingOptions() -> [String: Any]? { return nil } } From ac4b155f3c944b90b319d1c707f61af1736772bd Mon Sep 17 00:00:00 2001 From: Carlos Garcia Date: Fri, 9 Jul 2021 15:43:14 +0200 Subject: [PATCH 15/15] Revert react-native-editor babel config --- packages/react-native-editor/babel.config.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/react-native-editor/babel.config.js b/packages/react-native-editor/babel.config.js index b8a3266d1b11db..76fd0ba03c5c2a 100644 --- a/packages/react-native-editor/babel.config.js +++ b/packages/react-native-editor/babel.config.js @@ -32,7 +32,7 @@ module.exports = function ( api ) { }, ], ], - exclude: /node_modules\/(react-native|@react-native-community|@react-navigation|@sentry)/, + exclude: /node_modules\/(react-native|@react-native-community|@react-navigation)/, }, { // Auto-add `import { createElement } from '@wordpress/element';` when JSX is found @@ -47,7 +47,7 @@ module.exports = function ( api ) { }, ], ], - exclude: /node_modules\/(react-native|@react-native-community|@react-navigation|@sentry)/, + exclude: /node_modules\/(react-native|@react-native-community|@react-navigation)/, }, ], env: {