Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@chrispader can you please create an issue in Expensify and link it here that will track removing these patches once we add support upstream? We can then make it monthly and make sure this gets done over time

File renamed without changes.
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
diff --git a/node_modules/react-native-vision-camera/ios/RNCameraView.mm b/node_modules/react-native-vision-camera/ios/RNCameraView.mm
index b90427e..0be4171 100644
--- a/node_modules/react-native-vision-camera/ios/RNCameraView.mm
+++ b/node_modules/react-native-vision-camera/ios/RNCameraView.mm
@@ -34,26 +34,43 @@ + (ComponentDescriptorProvider)componentDescriptorProvider
return concreteComponentDescriptorProvider<CameraViewComponentDescriptor>();
}

-- (instancetype)initWithFrame:(CGRect)frame
-{
- self = [super initWithFrame:frame];
-if (self) {
- static const auto defaultProps = std::make_shared<const CameraViewProps>();
+- (void) initCamera {
+ static const auto defaultProps = std::make_shared<const CameraViewProps>();
_props = defaultProps;

- //The remaining part of the initializer is standard Objective-C code to create views and layout them with AutoLayout. Here we can change whatever we want to.
+ // The remaining part of the initializer is standard bjective-C code to create views and layout them with utoLayout. Here we can change whatever we want to.
_view = [[CameraView alloc] init];
_view.delegate = self;

self.contentView = _view;
}

-return self;
+- (instancetype)initWithFrame:(CGRect)frame
+{
+ self = [super initWithFrame:frame];
+ if (self) {
+ [self initCamera];
+ }
+
+ return self;
+}
+
+- (void) prepareForRecycle {
+ [super prepareForRecycle];
+
+ self.contentView = _view;
+ _view.delegate = nil;
+ _view = nil;
+ self.contentView = nil;
}

// why we need this func -> https://reactnative.dev/docs/next/the-new-architecture/pillars-fabric-components#write-the-native-ios-code
- (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const &)oldProps
{
+ if (_view == nil) {
+ [self initCamera];
+ }
+
const auto &newViewProps = *std::static_pointer_cast<CameraViewProps const>(props);
const auto &oldViewProps = *std::static_pointer_cast<CameraViewProps const>(_props);