From b1c3fa03a071e3e8d42c63f771068bde98210c86 Mon Sep 17 00:00:00 2001 From: Satyajit Sahoo Date: Fri, 9 Jan 2026 22:16:20 +0100 Subject: [PATCH] refactor: simplify fabric template --- .../{%- project.name %}ViewManager.kt | 4 +-- .../{%- project.name %}ViewNativeComponent.ts | 8 +++-- .../{%- project.name %}.kt | 2 -- .../ios/{%- project.name %}View.mm | 29 ++----------------- 4 files changed, 11 insertions(+), 32 deletions(-) diff --git a/packages/create-react-native-library/templates/kotlin-view-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}ViewManager.kt b/packages/create-react-native-library/templates/kotlin-view-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}ViewManager.kt index e7ba9d693..5d616397a 100644 --- a/packages/create-react-native-library/templates/kotlin-view-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}ViewManager.kt +++ b/packages/create-react-native-library/templates/kotlin-view-new/android/src/main/java/com/{%- project.package_dir %}/{%- project.name %}ViewManager.kt @@ -31,8 +31,8 @@ class <%- project.name -%>ViewManager : SimpleViewManager<<%- project.name -%>Vi } @ReactProp(name = "color") - override fun setColor(view: <%- project.name -%>View?, color: String?) { - view?.setBackgroundColor(Color.parseColor(color)) + override fun setColor(view: <%- project.name -%>View?, color: Int?) { + view?.setBackgroundColor(color ?: Color.TRANSPARENT) } companion object { diff --git a/packages/create-react-native-library/templates/native-view-new/src/{%- project.name %}ViewNativeComponent.ts b/packages/create-react-native-library/templates/native-view-new/src/{%- project.name %}ViewNativeComponent.ts index 4bd616d97..202144057 100644 --- a/packages/create-react-native-library/templates/native-view-new/src/{%- project.name %}ViewNativeComponent.ts +++ b/packages/create-react-native-library/templates/native-view-new/src/{%- project.name %}ViewNativeComponent.ts @@ -1,7 +1,11 @@ -import { codegenNativeComponent, type ViewProps } from 'react-native'; +import { + codegenNativeComponent, + type ColorValue, + type ViewProps, +} from 'react-native'; interface NativeProps extends ViewProps { - color?: string; + color?: ColorValue; } export default codegenNativeComponent('<%- project.name -%>View'); diff --git a/packages/create-react-native-library/templates/nitro-view/android/src/main/java/com/margelo/nitro/{%- project.package_dir %}/{%- project.name %}.kt b/packages/create-react-native-library/templates/nitro-view/android/src/main/java/com/margelo/nitro/{%- project.package_dir %}/{%- project.name %}.kt index 9634f8d57..3977d3dc7 100644 --- a/packages/create-react-native-library/templates/nitro-view/android/src/main/java/com/margelo/nitro/{%- project.package_dir %}/{%- project.name %}.kt +++ b/packages/create-react-native-library/templates/nitro-view/android/src/main/java/com/margelo/nitro/{%- project.package_dir %}/{%- project.name %}.kt @@ -8,10 +8,8 @@ import androidx.core.graphics.toColorInt @DoNotStrip class Hybrid<%- project.name %>(val context: ThemedReactContext) : Hybrid<%- project.name %>Spec() { - // View override val view: View = View(context) - // Props private var _color = "#000" override var color: String get() = _color diff --git a/packages/create-react-native-library/templates/objc-view-new/ios/{%- project.name %}View.mm b/packages/create-react-native-library/templates/objc-view-new/ios/{%- project.name %}View.mm index 187c18d2e..c9b518d79 100644 --- a/packages/create-react-native-library/templates/objc-view-new/ios/{%- project.name %}View.mm +++ b/packages/create-react-native-library/templates/objc-view-new/ios/{%- project.name %}View.mm @@ -1,7 +1,8 @@ #import "<%- project.name -%>View.h" +#import + #import ViewSpec/ComponentDescriptors.h> -#import ViewSpec/EventEmitters.h> #import ViewSpec/Props.h> #import ViewSpec/RCTComponentViewHelpers.h> @@ -9,10 +10,6 @@ using namespace facebook::react; -@interface <%- project.name -%>View () ViewViewProtocol> - -@end - @implementation <%- project.name -%>View { UIView * _view; } @@ -42,30 +39,10 @@ - (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const & const auto &newViewProps = *std::static_pointer_cast<<%- project.name -%>ViewProps const>(props); if (oldViewProps.color != newViewProps.color) { - NSString * colorToConvert = [[NSString alloc] initWithUTF8String: newViewProps.color.c_str()]; - [_view setBackgroundColor:[self hexStringToColor:colorToConvert]]; + [_view setBackgroundColor: RCTUIColorFromSharedColor(newViewProps.color)]; } [super updateProps:props oldProps:oldProps]; } -Class <%- project.name -%>ViewCls(void) -{ - return <%- project.name -%>View.class; -} - -- hexStringToColor:(NSString *)stringToConvert -{ - NSString *noHashString = [stringToConvert stringByReplacingOccurrencesOfString:@"#" withString:@""]; - NSScanner *stringScanner = [NSScanner scannerWithString:noHashString]; - - unsigned hex; - if (![stringScanner scanHexInt:&hex]) return nil; - int r = (hex >> 16) & 0xFF; - int g = (hex >> 8) & 0xFF; - int b = (hex) & 0xFF; - - return [UIColor colorWithRed:r / 255.0f green:g / 255.0f blue:b / 255.0f alpha:1.0f]; -} - @end