From 4101aacf9032ff0eb5c43bcede956e143d34988d Mon Sep 17 00:00:00 2001 From: "Deepanshu.shukla" Date: Fri, 12 Jul 2024 20:14:06 +0530 Subject: [PATCH 1/2] fix: add image header in fabric image component --- .../react/renderer/components/image/conversions.h | 9 +++++++++ .../imagemanager/RCTImagePrimitivesConversions.h | 4 +++- .../ReactCommon/react/renderer/imagemanager/primitives.h | 2 ++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h b/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h index e0d6d5f3780f..a59124eaf62c 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h @@ -80,6 +80,15 @@ inline void fromRawValue( result.type = ImageSource::Type::Local; } + if (items.find("headers") != items.end() && + items.at("headers").hasType>()) { + auto headers = (std::unordered_map)items.at("headers"); + for (const auto &header : headers) { + if (header.second.hasType()) { + result.headers[header.first] = (std::string)header.second; + } + } + } return; } diff --git a/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h b/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h index 6d63cdad1e6d..3e053a8bad0e 100644 --- a/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h +++ b/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h @@ -109,6 +109,8 @@ inline static NSURLRequest *NSURLRequestFromImageSource(const facebook::react::I request.cachePolicy = ...; request.allHTTPHeaderFields = ...; */ - + for (const auto &header : imageSource.headers) { + [request setValue:[NSString stringWithUTF8String:header.second.c_str()] forHTTPHeaderField:[NSString stringWithUTF8String:header.first.c_str()]]; + } return [request copy]; } diff --git a/packages/react-native/ReactCommon/react/renderer/imagemanager/primitives.h b/packages/react-native/ReactCommon/react/renderer/imagemanager/primitives.h index fcac8c10da5a..e754b05045f3 100644 --- a/packages/react-native/ReactCommon/react/renderer/imagemanager/primitives.h +++ b/packages/react-native/ReactCommon/react/renderer/imagemanager/primitives.h @@ -24,6 +24,8 @@ class ImageSource { std::string bundle{}; Float scale{3}; Size size{0}; + std::unordered_map headers{}; // Add headers field + bool operator==(const ImageSource& rhs) const { return std::tie(this->type, this->uri) == std::tie(rhs.type, rhs.uri); From 3277bd984fe29b164a1252357e283f4611d8ace5 Mon Sep 17 00:00:00 2001 From: "Deepanshu.shukla" Date: Sat, 13 Jul 2024 00:30:54 +0530 Subject: [PATCH 2/2] refactor: change code formatting --- .../renderer/components/image/conversions.h | 16 +++++++++------- .../imagemanager/RCTImagePrimitivesConversions.h | 7 +++++-- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h b/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h index a59124eaf62c..18658323a0a8 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h +++ b/packages/react-native/ReactCommon/react/renderer/components/image/conversions.h @@ -81,13 +81,15 @@ inline void fromRawValue( } if (items.find("headers") != items.end() && - items.at("headers").hasType>()) { - auto headers = (std::unordered_map)items.at("headers"); - for (const auto &header : headers) { - if (header.second.hasType()) { - result.headers[header.first] = (std::string)header.second; - } - } + items.at("headers").hasType>()) { + auto headers = (std::unordered_map)items.at("headers"); + for (const auto &header : headers) { + if (header.second.hasType()) { + result.headers[header.first] = (std::string)header.second; + } + } + // Add a debug log to print the headers + LOG(INFO) << "Parsed headers: " << result.headers.size(); } return; } diff --git a/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h b/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h index 3e053a8bad0e..a70da1c694a3 100644 --- a/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h +++ b/packages/react-native/ReactCommon/react/renderer/imagemanager/platform/ios/react/renderer/imagemanager/RCTImagePrimitivesConversions.h @@ -109,8 +109,11 @@ inline static NSURLRequest *NSURLRequestFromImageSource(const facebook::react::I request.cachePolicy = ...; request.allHTTPHeaderFields = ...; */ - for (const auto &header : imageSource.headers) { - [request setValue:[NSString stringWithUTF8String:header.second.c_str()] forHTTPHeaderField:[NSString stringWithUTF8String:header.first.c_str()]]; + // Set headers + for (const auto &header : imageSource.headers) { + [request setValue:[NSString stringWithUTF8String:header.second.c_str()] + forHTTPHeaderField:[NSString stringWithUTF8String:header.first.c_str()]]; } + return [request copy]; }