Skip to content

Commit e9f2791

Browse files
Allow to provide a custom ImageManager for cxx platform (#48109)
Summary: Pull Request resolved: #48109 [Changelog] [Internal] - Allow to provide a custom ImageManager for cxx platform This change allows target platforms to pass a platform specific or app specific ImageManager implementation Reviewed By: javache Differential Revision: D66788794 fbshipit-source-id: d7e99cae5de0a4c60047763dce368271dd191b9c
1 parent 7a81fd7 commit e9f2791

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.cpp

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,31 @@
88
#include "ImageComponentDescriptor.h"
99
#include <react/renderer/imagemanager/ImageManager.h>
1010

11+
namespace {
12+
13+
std::shared_ptr<facebook::react::ImageManager> getImageManager(
14+
std::shared_ptr<const facebook::react::ContextContainer>&
15+
contextContainer) {
16+
if (auto imageManager =
17+
contextContainer
18+
->find<std::shared_ptr<facebook::react::ImageManager>>(
19+
facebook::react::ImageManagerKey);
20+
imageManager.has_value()) {
21+
return imageManager.value();
22+
}
23+
return std::make_shared<facebook::react::ImageManager>(contextContainer);
24+
}
25+
26+
} // namespace
27+
1128
namespace facebook::react {
1229

30+
extern const char ImageManagerKey[] = "ImageManager";
31+
1332
ImageComponentDescriptor::ImageComponentDescriptor(
1433
const ComponentDescriptorParameters& parameters)
1534
: ConcreteComponentDescriptor(parameters),
16-
imageManager_(std::make_shared<ImageManager>(contextContainer_)){};
35+
imageManager_(getImageManager(contextContainer_)){};
1736

1837
void ImageComponentDescriptor::adopt(ShadowNode& shadowNode) const {
1938
ConcreteComponentDescriptor::adopt(shadowNode);

packages/react-native/ReactCommon/react/renderer/components/image/ImageComponentDescriptor.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ namespace facebook::react {
1414

1515
class ImageManager;
1616

17+
extern const char ImageManagerKey[];
18+
1719
/*
1820
* Descriptor for <Image> component.
1921
*/

0 commit comments

Comments
 (0)