Skip to content

Commit

Permalink
chore: improve readability of C++ namespaced types (#1856)
Browse files Browse the repository at this point in the history
## Description

1. Typing `facebook::react` is tedious (XCode completion does not work
correctly in case of namespaces for some reason I do not want to spend
any more time investigating)
2. `facebook` prefix does not convey any useful meaning from the
perspective of this library -- we can achieve the same code-isolation by
using just `react` or `rct`
3. We can not resign completely from using this prefix (by putting
`using namespace facebook::react` in our `.mm` files) because some C++
codegened types have the same names as their counterparts from
Objective-C and we need to distinguish between them (take a look into
`RNSConvert.h`).

## Changes

Replace all usages of `facebook::react::` with `react::`.

Added `namespace react = facebook::react;` where necessary.

## Checklist

- [ ] Ensured that CI passes
  • Loading branch information
kkafar authored Aug 3, 2023
1 parent 0844c85 commit d062c91
Show file tree
Hide file tree
Showing 12 changed files with 190 additions and 176 deletions.
26 changes: 12 additions & 14 deletions ios/RNSConvert.h
Original file line number Diff line number Diff line change
Expand Up @@ -2,36 +2,34 @@
#import <react/renderer/components/rnscreens/Props.h>
#import "RNSEnums.h"

namespace react = facebook::react;

@interface RNSConvert : NSObject

+ (RNSScreenStackPresentation)RNSScreenStackPresentationFromCppEquivalent:
(facebook::react::RNSScreenStackPresentation)stackPresentation;
(react::RNSScreenStackPresentation)stackPresentation;

+ (RNSScreenStackAnimation)RNSScreenStackAnimationFromCppEquivalent:
(facebook::react::RNSScreenStackAnimation)stackAnimation;
+ (RNSScreenStackAnimation)RNSScreenStackAnimationFromCppEquivalent:(react::RNSScreenStackAnimation)stackAnimation;

+ (RNSScreenStackHeaderSubviewType)RNSScreenStackHeaderSubviewTypeFromCppEquivalent:
(facebook::react::RNSScreenStackHeaderSubviewType)subviewType;
(react::RNSScreenStackHeaderSubviewType)subviewType;

+ (RNSScreenReplaceAnimation)RNSScreenReplaceAnimationFromCppEquivalent:
(facebook::react::RNSScreenReplaceAnimation)replaceAnimation;
(react::RNSScreenReplaceAnimation)replaceAnimation;

+ (RNSScreenSwipeDirection)RNSScreenSwipeDirectionFromCppEquivalent:
(facebook::react::RNSScreenSwipeDirection)swipeDirection;
+ (RNSScreenSwipeDirection)RNSScreenSwipeDirectionFromCppEquivalent:(react::RNSScreenSwipeDirection)swipeDirection;

+ (RNSScreenDetentType)RNSScreenDetentTypeFromAllowedDetents:
(facebook::react::RNSScreenSheetAllowedDetents)allowedDetents;
+ (RNSScreenDetentType)RNSScreenDetentTypeFromAllowedDetents:(react::RNSScreenSheetAllowedDetents)allowedDetents;

+ (RNSScreenDetentType)RNSScreenDetentTypeFromLargestUndimmedDetent:
(facebook::react::RNSScreenSheetLargestUndimmedDetent)detent;
+ (RNSScreenDetentType)RNSScreenDetentTypeFromLargestUndimmedDetent:(react::RNSScreenSheetLargestUndimmedDetent)detent;

+ (NSDictionary *)gestureResponseDistanceDictFromCppStruct:
(const facebook::react::RNSScreenGestureResponseDistanceStruct &)gestureResponseDistance;
(const react::RNSScreenGestureResponseDistanceStruct &)gestureResponseDistance;

+ (UITextAutocapitalizationType)UITextAutocapitalizationTypeFromCppEquivalent:
(facebook::react::RNSSearchBarAutoCapitalize)autoCapitalize;
(react::RNSSearchBarAutoCapitalize)autoCapitalize;

+ (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(facebook::react::RNSSearchBarPlacement)placement;
+ (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RNSSearchBarPlacement)placement;

@end

Expand Down
102 changes: 49 additions & 53 deletions ios/RNSConvert.mm
Original file line number Diff line number Diff line change
Expand Up @@ -4,119 +4,115 @@
@implementation RNSConvert

+ (RNSScreenStackPresentation)RNSScreenStackPresentationFromCppEquivalent:
(facebook::react::RNSScreenStackPresentation)stackPresentation
(react::RNSScreenStackPresentation)stackPresentation
{
switch (stackPresentation) {
case facebook::react::RNSScreenStackPresentation::Push:
case react::RNSScreenStackPresentation::Push:
return RNSScreenStackPresentationPush;
case facebook::react::RNSScreenStackPresentation::Modal:
case react::RNSScreenStackPresentation::Modal:
return RNSScreenStackPresentationModal;
case facebook::react::RNSScreenStackPresentation::FullScreenModal:
case react::RNSScreenStackPresentation::FullScreenModal:
return RNSScreenStackPresentationFullScreenModal;
case facebook::react::RNSScreenStackPresentation::FormSheet:
case react::RNSScreenStackPresentation::FormSheet:
return RNSScreenStackPresentationFormSheet;
case facebook::react::RNSScreenStackPresentation::ContainedModal:
case react::RNSScreenStackPresentation::ContainedModal:
return RNSScreenStackPresentationContainedModal;
case facebook::react::RNSScreenStackPresentation::TransparentModal:
case react::RNSScreenStackPresentation::TransparentModal:
return RNSScreenStackPresentationTransparentModal;
case facebook::react::RNSScreenStackPresentation::ContainedTransparentModal:
case react::RNSScreenStackPresentation::ContainedTransparentModal:
return RNSScreenStackPresentationContainedTransparentModal;
}
}

+ (RNSScreenStackAnimation)RNSScreenStackAnimationFromCppEquivalent:
(facebook::react::RNSScreenStackAnimation)stackAnimation
+ (RNSScreenStackAnimation)RNSScreenStackAnimationFromCppEquivalent:(react::RNSScreenStackAnimation)stackAnimation
{
switch (stackAnimation) {
// these three are intentionally grouped
case facebook::react::RNSScreenStackAnimation::Slide_from_right:
case facebook::react::RNSScreenStackAnimation::Slide_from_left:
case facebook::react::RNSScreenStackAnimation::Default:
case react::RNSScreenStackAnimation::Slide_from_right:
case react::RNSScreenStackAnimation::Slide_from_left:
case react::RNSScreenStackAnimation::Default:
return RNSScreenStackAnimationDefault;
case facebook::react::RNSScreenStackAnimation::Flip:
case react::RNSScreenStackAnimation::Flip:
return RNSScreenStackAnimationFlip;
case facebook::react::RNSScreenStackAnimation::Simple_push:
case react::RNSScreenStackAnimation::Simple_push:
return RNSScreenStackAnimationSimplePush;
case facebook::react::RNSScreenStackAnimation::None:
case react::RNSScreenStackAnimation::None:
return RNSScreenStackAnimationNone;
case facebook::react::RNSScreenStackAnimation::Fade:
case react::RNSScreenStackAnimation::Fade:
return RNSScreenStackAnimationFade;
case facebook::react::RNSScreenStackAnimation::Slide_from_bottom:
case react::RNSScreenStackAnimation::Slide_from_bottom:
return RNSScreenStackAnimationSlideFromBottom;
case facebook::react::RNSScreenStackAnimation::Fade_from_bottom:
case react::RNSScreenStackAnimation::Fade_from_bottom:
return RNSScreenStackAnimationFadeFromBottom;
}
}

+ (RNSScreenStackHeaderSubviewType)RNSScreenStackHeaderSubviewTypeFromCppEquivalent:
(facebook::react::RNSScreenStackHeaderSubviewType)subviewType
(react::RNSScreenStackHeaderSubviewType)subviewType
{
switch (subviewType) {
case facebook::react::RNSScreenStackHeaderSubviewType::Left:
case react::RNSScreenStackHeaderSubviewType::Left:
return RNSScreenStackHeaderSubviewTypeLeft;
case facebook::react::RNSScreenStackHeaderSubviewType::Right:
case react::RNSScreenStackHeaderSubviewType::Right:
return RNSScreenStackHeaderSubviewTypeRight;
case facebook::react::RNSScreenStackHeaderSubviewType::Title:
case react::RNSScreenStackHeaderSubviewType::Title:
return RNSScreenStackHeaderSubviewTypeTitle;
case facebook::react::RNSScreenStackHeaderSubviewType::Center:
case react::RNSScreenStackHeaderSubviewType::Center:
return RNSScreenStackHeaderSubviewTypeCenter;
case facebook::react::RNSScreenStackHeaderSubviewType::SearchBar:
case react::RNSScreenStackHeaderSubviewType::SearchBar:
return RNSScreenStackHeaderSubviewTypeSearchBar;
case facebook::react::RNSScreenStackHeaderSubviewType::Back:
case react::RNSScreenStackHeaderSubviewType::Back:
return RNSScreenStackHeaderSubviewTypeBackButton;
}
}

+ (RNSScreenReplaceAnimation)RNSScreenReplaceAnimationFromCppEquivalent:
(facebook::react::RNSScreenReplaceAnimation)replaceAnimation
(react::RNSScreenReplaceAnimation)replaceAnimation
{
switch (replaceAnimation) {
case facebook::react::RNSScreenReplaceAnimation::Pop:
case react::RNSScreenReplaceAnimation::Pop:
return RNSScreenReplaceAnimationPop;
case facebook::react::RNSScreenReplaceAnimation::Push:
case react::RNSScreenReplaceAnimation::Push:
return RNSScreenReplaceAnimationPush;
}
}

+ (RNSScreenSwipeDirection)RNSScreenSwipeDirectionFromCppEquivalent:
(facebook::react::RNSScreenSwipeDirection)swipeDirection
+ (RNSScreenSwipeDirection)RNSScreenSwipeDirectionFromCppEquivalent:(react::RNSScreenSwipeDirection)swipeDirection
{
switch (swipeDirection) {
case facebook::react::RNSScreenSwipeDirection::Horizontal:
case react::RNSScreenSwipeDirection::Horizontal:
return RNSScreenSwipeDirectionHorizontal;
case facebook::react::RNSScreenSwipeDirection::Vertical:
case react::RNSScreenSwipeDirection::Vertical:
return RNSScreenSwipeDirectionVertical;
}
}

+ (RNSScreenDetentType)RNSScreenDetentTypeFromAllowedDetents:
(facebook::react::RNSScreenSheetAllowedDetents)allowedDetents
+ (RNSScreenDetentType)RNSScreenDetentTypeFromAllowedDetents:(react::RNSScreenSheetAllowedDetents)allowedDetents
{
switch (allowedDetents) {
case facebook::react::RNSScreenSheetAllowedDetents::All:
case react::RNSScreenSheetAllowedDetents::All:
return RNSScreenDetentTypeAll;
case facebook::react::RNSScreenSheetAllowedDetents::Large:
case react::RNSScreenSheetAllowedDetents::Large:
return RNSScreenDetentTypeLarge;
case facebook::react::RNSScreenSheetAllowedDetents::Medium:
case react::RNSScreenSheetAllowedDetents::Medium:
return RNSScreenDetentTypeMedium;
}
}

+ (RNSScreenDetentType)RNSScreenDetentTypeFromLargestUndimmedDetent:
(facebook::react::RNSScreenSheetLargestUndimmedDetent)detent
+ (RNSScreenDetentType)RNSScreenDetentTypeFromLargestUndimmedDetent:(react::RNSScreenSheetLargestUndimmedDetent)detent
{
switch (detent) {
case facebook::react::RNSScreenSheetLargestUndimmedDetent::All:
case react::RNSScreenSheetLargestUndimmedDetent::All:
return RNSScreenDetentTypeAll;
case facebook::react::RNSScreenSheetLargestUndimmedDetent::Large:
case react::RNSScreenSheetLargestUndimmedDetent::Large:
return RNSScreenDetentTypeLarge;
case facebook::react::RNSScreenSheetLargestUndimmedDetent::Medium:
case react::RNSScreenSheetLargestUndimmedDetent::Medium:
return RNSScreenDetentTypeMedium;
}
}

+ (NSDictionary *)gestureResponseDistanceDictFromCppStruct:
(const facebook::react::RNSScreenGestureResponseDistanceStruct &)gestureResponseDistance
(const react::RNSScreenGestureResponseDistanceStruct &)gestureResponseDistance
{
return @{
@"start" : @(gestureResponseDistance.start),
Expand All @@ -127,28 +123,28 @@ + (NSDictionary *)gestureResponseDistanceDictFromCppStruct:
}

+ (UITextAutocapitalizationType)UITextAutocapitalizationTypeFromCppEquivalent:
(facebook::react::RNSSearchBarAutoCapitalize)autoCapitalize
(react::RNSSearchBarAutoCapitalize)autoCapitalize
{
switch (autoCapitalize) {
case facebook::react::RNSSearchBarAutoCapitalize::Words:
case react::RNSSearchBarAutoCapitalize::Words:
return UITextAutocapitalizationTypeWords;
case facebook::react::RNSSearchBarAutoCapitalize::Sentences:
case react::RNSSearchBarAutoCapitalize::Sentences:
return UITextAutocapitalizationTypeSentences;
case facebook::react::RNSSearchBarAutoCapitalize::Characters:
case react::RNSSearchBarAutoCapitalize::Characters:
return UITextAutocapitalizationTypeAllCharacters;
case facebook::react::RNSSearchBarAutoCapitalize::None:
case react::RNSSearchBarAutoCapitalize::None:
return UITextAutocapitalizationTypeNone;
}
}

+ (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(facebook::react::RNSSearchBarPlacement)placement
+ (RNSSearchBarPlacement)RNSScreenSearchBarPlacementFromCppEquivalent:(react::RNSSearchBarPlacement)placement
{
switch (placement) {
case facebook::react::RNSSearchBarPlacement::Stacked:
case react::RNSSearchBarPlacement::Stacked:
return RNSSearchBarPlacementStacked;
case facebook::react::RNSSearchBarPlacement::Automatic:
case react::RNSSearchBarPlacement::Automatic:
return RNSSearchBarPlacementAutomatic;
case facebook::react::RNSSearchBarPlacement::Inline:
case react::RNSSearchBarPlacement::Inline:
return RNSSearchBarPlacementInline;
}
}
Expand Down
8 changes: 6 additions & 2 deletions ios/RNSFullWindowOverlay.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
#import <React/RCTView.h>
#endif

#ifdef RCT_NEW_ARCH_ENABLED
namespace react = facebook::react;
#endif // RCT_NEW_ARCH_ENABLED

@interface RNSFullWindowOverlayManager : RCTViewManager

@end
Expand All @@ -23,8 +27,8 @@
#endif // RCT_NEW_ARCH_ENABLED

#ifdef RCT_NEW_ARCH_ENABLED
@property (nonatomic) facebook::react::LayoutMetrics oldLayoutMetrics;
@property (nonatomic) facebook::react::LayoutMetrics newLayoutMetrics;
@property (nonatomic) react::LayoutMetrics oldLayoutMetrics;
@property (nonatomic) react::LayoutMetrics newLayoutMetrics;
#endif // RCT_NEW_ARCH_ENABLED

@end
11 changes: 5 additions & 6 deletions ios/RNSFullWindowOverlay.mm
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ @implementation RNSFullWindowOverlay {
- (instancetype)init
{
if (self = [super init]) {
static const auto defaultProps = std::make_shared<const facebook::react::RNSFullWindowOverlayProps>();
static const auto defaultProps = std::make_shared<const react::RNSFullWindowOverlayProps>();
_props = defaultProps;
[self _initCommon];
}
Expand Down Expand Up @@ -162,10 +162,9 @@ - (void)maybeShow
}
}

+ (facebook::react::ComponentDescriptorProvider)componentDescriptorProvider
+ (react::ComponentDescriptorProvider)componentDescriptorProvider
{
return facebook::react::concreteComponentDescriptorProvider<
facebook::react::RNSFullWindowOverlayComponentDescriptor>();
return react::concreteComponentDescriptorProvider<react::RNSFullWindowOverlayComponentDescriptor>();
}

- (void)prepareForRecycle
Expand Down Expand Up @@ -193,8 +192,8 @@ - (void)unmountChildComponentView:(UIView<RCTComponentViewProtocol> *)childCompo
[childComponentView removeFromSuperview];
}

- (void)updateLayoutMetrics:(facebook::react::LayoutMetrics const &)layoutMetrics
oldLayoutMetrics:(facebook::react::LayoutMetrics const &)oldLayoutMetrics
- (void)updateLayoutMetrics:(react::LayoutMetrics const &)layoutMetrics
oldLayoutMetrics:(react::LayoutMetrics const &)oldLayoutMetrics
{
CGRect frame = RCTCGRectFromRect(layoutMetrics.frame);
_reactFrame = frame;
Expand Down
10 changes: 7 additions & 3 deletions ios/RNSScreen.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,14 @@
#import <React/RCTViewComponentView.h>
#else
#import <React/RCTView.h>
#endif
#endif // RCT_NEW_ARCH_ENABLED

NS_ASSUME_NONNULL_BEGIN

#ifdef RCT_NEW_ARCH_ENABLED
namespace react = facebook::react;
#endif // RCT_NEW_ARCH_ENABLED

@interface RCTConvert (RNSScreen)

+ (RNSScreenStackPresentation)RNSScreenStackPresentation:(id)json;
Expand Down Expand Up @@ -88,8 +92,8 @@ NS_ASSUME_NONNULL_BEGIN

#ifdef RCT_NEW_ARCH_ENABLED
// we recreate the behavior of `reactSetFrame` on new architecture
@property (nonatomic) facebook::react::LayoutMetrics oldLayoutMetrics;
@property (nonatomic) facebook::react::LayoutMetrics newLayoutMetrics;
@property (nonatomic) react::LayoutMetrics oldLayoutMetrics;
@property (nonatomic) react::LayoutMetrics newLayoutMetrics;
@property (weak, nonatomic) RNSScreenStackHeaderConfig *config;
@property (nonatomic, readonly) BOOL hasHeaderConfig;
#else
Expand Down
Loading

0 comments on commit d062c91

Please sign in to comment.