diff --git a/CHANGELOG.md b/CHANGELOG.md index 98aa7239f..cf77c55aa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## [Unreleased](https://github.com/Instabug/Instabug-Flutter/compare/v14.0.0...dev) + +### Added + +- Add support enable/disable capturing network body. ([#561](https://github.com/Instabug/Instabug-Flutter/pull/561)) + ## [14.1.0](https://github.com/Instabug/Instabug-Flutter/compare/v14.0.0...v14.1.0) (January 2, 2025) ### Changed diff --git a/android/build.gradle b/android/build.gradle index e3b5d0bca..f9443a9fe 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -44,7 +44,7 @@ android { } dependencies { - api 'com.instabug.library:instabug:14.1.0' + api 'com.instabug.library:instabug:14.2.0.6639544-SNAPSHOT' testImplementation 'junit:junit:4.13.2' testImplementation "org.mockito:mockito-inline:3.12.1" testImplementation "io.mockk:mockk:1.13.13" diff --git a/android/src/main/java/com/instabug/flutter/modules/InstabugApi.java b/android/src/main/java/com/instabug/flutter/modules/InstabugApi.java index 7a8549718..0c0af6643 100644 --- a/android/src/main/java/com/instabug/flutter/modules/InstabugApi.java +++ b/android/src/main/java/com/instabug/flutter/modules/InstabugApi.java @@ -492,4 +492,14 @@ public Map isW3CFeatureFlagsEnabled() { public void willRedirectToStore() { Instabug.willRedirectToStore(); } + + + @Override + public void setNetworkLogBodyEnabled(@NonNull Boolean isEnabled) { + try { + Instabug.setNetworkLogBodyEnabled(isEnabled); + } catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/android/src/test/java/com/instabug/flutter/InstabugApiTest.java b/android/src/test/java/com/instabug/flutter/InstabugApiTest.java index 3d0b15ed4..1ea247bef 100644 --- a/android/src/test/java/com/instabug/flutter/InstabugApiTest.java +++ b/android/src/test/java/com/instabug/flutter/InstabugApiTest.java @@ -643,4 +643,18 @@ public void isW3CFeatureFlagsEnabled() { assertEquals(isW3cCaughtHeaderEnabled, flags.get("isW3cCaughtHeaderEnabled")); } + + @Test + public void testSetNetworkLogBodyEnabled() { + api.setNetworkLogBodyEnabled(true); + + mInstabug.verify(() -> Instabug.setNetworkLogBodyEnabled(true)); + } + + @Test + public void testSetNetworkLogBodyDisabled() { + api.setNetworkLogBodyEnabled(false); + + mInstabug.verify(() -> Instabug.setNetworkLogBodyEnabled(false)); + } } diff --git a/example/ios/InstabugTests/InstabugApiTests.m b/example/ios/InstabugTests/InstabugApiTests.m index 6c9544d71..e7707241a 100644 --- a/example/ios/InstabugTests/InstabugApiTests.m +++ b/example/ios/InstabugTests/InstabugApiTests.m @@ -451,6 +451,15 @@ - (void)testWillRedirectToAppStore { OCMVerify([self.mInstabug willRedirectToAppStore]); } +- (void)testSetNetworkLogBodyEnabled { + NSNumber *isEnabled = @1; + FlutterError *error; + + [self.api setNetworkLogBodyEnabledIsEnabled:isEnabled error:&error]; + + XCTAssertTrue(IBGNetworkLogger.logBodyEnabled); +} + - (void)testNetworkLogWithW3Caught { NSString *url = @"https://example.com"; NSString *requestBody = @"hi"; diff --git a/example/ios/Podfile b/example/ios/Podfile index cdffbc5db..7fd8b545b 100644 --- a/example/ios/Podfile +++ b/example/ios/Podfile @@ -27,6 +27,7 @@ require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelpe flutter_ios_podfile_setup target 'Runner' do + pod 'Instabug', :podspec => 'https://ios-releases.instabug.com/custom/feature-stop-network-body-base/14.2.0/Instabug.podspec' use_frameworks! use_modular_headers! diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index 8072dd94f..3b367379e 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1,33 +1,35 @@ PODS: - Flutter (1.0.0) - - Instabug (14.1.0) + - Instabug (14.2.0) - instabug_flutter (14.0.0): - Flutter - - Instabug (= 14.1.0) + - Instabug (= 14.2.0) - OCMock (3.6) DEPENDENCIES: - Flutter (from `Flutter`) + - Instabug (from `https://ios-releases.instabug.com/custom/feature-stop-network-body-base/14.2.0/Instabug.podspec`) - instabug_flutter (from `.symlinks/plugins/instabug_flutter/ios`) - OCMock (= 3.6) SPEC REPOS: trunk: - - Instabug - OCMock EXTERNAL SOURCES: Flutter: :path: Flutter + Instabug: + :podspec: https://ios-releases.instabug.com/custom/feature-stop-network-body-base/14.2.0/Instabug.podspec instabug_flutter: :path: ".symlinks/plugins/instabug_flutter/ios" SPEC CHECKSUMS: Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - Instabug: 8cbca8974168c815658133e2813f5ac3a36f8e20 - instabug_flutter: a24751dfaedd29475da2af062d3e19d697438f72 + Instabug: fb30e419f172a2c405fad1d2d4c42ae64ea10877 + instabug_flutter: d689490b2b63ac341d75a3061ee35edc1c9d8b75 OCMock: 5ea90566be239f179ba766fd9fbae5885040b992 -PODFILE CHECKSUM: 8f7552fd115ace1988c3db54a69e4a123c448f84 +PODFILE CHECKSUM: 338614a69defdc536fc63f92095b4984aab6080e COCOAPODS: 1.16.2 diff --git a/ios/Classes/Modules/InstabugApi.m b/ios/Classes/Modules/InstabugApi.m index 8cdd336d1..245f61629 100644 --- a/ios/Classes/Modules/InstabugApi.m +++ b/ios/Classes/Modules/InstabugApi.m @@ -391,6 +391,9 @@ - (void)registerFeatureFlagChangeListenerWithError:(FlutterError * _Nullable __a }; return result; } - +- (void)setNetworkLogBodyEnabledIsEnabled:(NSNumber *)isEnabled + error:(FlutterError *_Nullable *_Nonnull)error { + IBGNetworkLogger.logBodyEnabled = [isEnabled boolValue]; +} @end diff --git a/ios/instabug_flutter.podspec b/ios/instabug_flutter.podspec index f339d7fe0..dd7ef3080 100644 --- a/ios/instabug_flutter.podspec +++ b/ios/instabug_flutter.podspec @@ -17,6 +17,6 @@ Pod::Spec.new do |s| s.pod_target_xcconfig = { 'OTHER_LDFLAGS' => '-framework "Flutter" -framework "Instabug"'} s.dependency 'Flutter' - s.dependency 'Instabug', '14.1.0' + s.dependency 'Instabug', '14.2.0' end diff --git a/lib/src/modules/network_logger.dart b/lib/src/modules/network_logger.dart index 14e524f87..b7acc74c2 100644 --- a/lib/src/modules/network_logger.dart +++ b/lib/src/modules/network_logger.dart @@ -126,4 +126,10 @@ class NetworkLogger { } return null; } + + /// Enables or disables network body logs capturing. + /// [boolean] isEnabled + static Future setNetworkLogBodyEnabled(bool isEnabled) async { + return _host.setNetworkLogBodyEnabled(isEnabled); + } } diff --git a/pigeons/instabug.api.dart b/pigeons/instabug.api.dart index c0187acb9..275306987 100644 --- a/pigeons/instabug.api.dart +++ b/pigeons/instabug.api.dart @@ -74,4 +74,6 @@ abstract class InstabugHostApi { Map isW3CFeatureFlagsEnabled(); void willRedirectToStore(); + + void setNetworkLogBodyEnabled(bool isEnabled); } diff --git a/test/network_logger_test.dart b/test/network_logger_test.dart index 77f5de51d..cbdc2db93 100644 --- a/test/network_logger_test.dart +++ b/test/network_logger_test.dart @@ -229,4 +229,14 @@ void main() { await logger.networkLog(networkData); expect(networkData.requestHeaders['traceparent'], 'test'); }); + + test('[setNetworkLogBodyEnabled] should call host method', () async { + const enabled = true; + + await NetworkLogger.setNetworkLogBodyEnabled(enabled); + + verify( + mInstabugHost.setNetworkLogBodyEnabled(enabled), + ).called(1); + }); }