Skip to content

Commit 67d87f5

Browse files
committed
Merge branch 'main' into support-images-from-media-library
2 parents 76cefdf + 538ec7d commit 67d87f5

32 files changed

+403
-85
lines changed

android/src/main/java/com/margelo/nitro/image/HybridImageView.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,19 @@ import android.view.View
55
import android.widget.ImageView
66

77
class HybridImageView(context: Context): HybridNitroImageViewSpec() {
8+
override var resizeMode: ResizeMode? = ResizeMode.CONTAIN
9+
set(value) {
10+
field = value
11+
imageView.scaleType = when (value) {
12+
ResizeMode.COVER -> ImageView.ScaleType.CENTER_CROP
13+
ResizeMode.CONTAIN -> ImageView.ScaleType.FIT_CENTER
14+
ResizeMode.STRETCH -> ImageView.ScaleType.FIT_XY
15+
ResizeMode.CENTER -> ImageView.ScaleType.CENTER
16+
null -> ImageView.ScaleType.FIT_CENTER
17+
}
18+
updateImage()
19+
}
20+
821
override var image: HybridImageSpec? = null
922
set(value) {
1023
field = value

example/ios/Podfile.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ PODS:
4747
- ReactCommon/turbomodule/core
4848
- SDWebImage
4949
- Yoga
50-
- NitroModules (0.26.3):
50+
- NitroModules (0.26.4):
5151
- DoubleConversion
5252
- glog
5353
- hermes-engine
@@ -1890,7 +1890,7 @@ DEPENDENCIES:
18901890
- glog (from `../../node_modules/react-native/third-party-podspecs/glog.podspec`)
18911891
- hermes-engine (from `../../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`)
18921892
- NitroImage (from `../node_modules/react-native-nitro-image`)
1893-
- NitroModules (from `../../node_modules/react-native-nitro-modules`)
1893+
- NitroModules (from `../node_modules/react-native-nitro-modules`)
18941894
- RCT-Folly (from `../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
18951895
- RCT-Folly/Fabric (from `../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`)
18961896
- RCTDeprecation (from `../../node_modules/react-native/ReactApple/Libraries/RCTFoundation/RCTDeprecation`)
@@ -1988,7 +1988,7 @@ EXTERNAL SOURCES:
19881988
NitroImage:
19891989
:path: "../node_modules/react-native-nitro-image"
19901990
NitroModules:
1991-
:path: "../../node_modules/react-native-nitro-modules"
1991+
:path: "../node_modules/react-native-nitro-modules"
19921992
RCT-Folly:
19931993
:podspec: "../../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec"
19941994
RCTDeprecation:
@@ -2134,7 +2134,7 @@ SPEC CHECKSUMS:
21342134
hermes-engine: 94ed01537bdeccaab1adbf94b040d115d6fa1a7f
21352135
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
21362136
NitroImage: 7f0a8fda3268c7169c9f4f23437d5841cbf4c96a
2137-
NitroModules: f36b94e48ff1705fc6b84bc1953f40e2da4196c2
2137+
NitroModules: 763fe03c46a734a615e648ff2c77158cd26d8f89
21382138
RCT-Folly: e78785aa9ba2ed998ea4151e314036f6c49e6d82
21392139
RCTDeprecation: c3e3f5b4ea83e7ff3bc86ce09e2a54b7affd687d
21402140
RCTRequired: ee438439880dffc9425930d1dd1a3c883ee6879c

example/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"scripts": {
66
"android": "react-native run-android",
77
"ios": "react-native run-ios",
8-
"lint": "biome check . --fix",
8+
"lint": "biome check .",
99
"start": "react-native start --client-logs",
1010
"pods": "bundle install && cd ios && bundle exec pod install"
1111
},
@@ -37,4 +37,4 @@
3737
"engines": {
3838
"node": ">=18"
3939
}
40-
}
40+
}

example/src/NitroImageTab.tsx

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
1-
import React, { useMemo } from "react";
2-
import { FlatList, StyleSheet, Text, View } from "react-native";
3-
import { NitroImage, useWebImage } from "react-native-nitro-image";
1+
import { useMemo } from "react";
2+
import { FlatList, Text, View } from "react-native";
3+
import { NitroWebImage } from "react-native-nitro-image";
44
import { createImageURLs } from "./createImageURLs";
55

6-
function AsyncImageImpl({ url }: { url: string }): React.ReactNode {
7-
const image = useWebImage(url);
8-
return <NitroImage style={styles.image} image={image} />;
9-
}
10-
const AsyncImage = React.memo(AsyncImageImpl);
11-
126
export function NitroImageTab() {
137
const imageURLs = useMemo(() => createImageURLs(), []);
148

@@ -19,15 +13,10 @@ export function NitroImageTab() {
1913
numColumns={4}
2014
windowSize={3}
2115
data={imageURLs}
22-
renderItem={({ item: url }) => <AsyncImage url={url} />}
16+
renderItem={({ item: url }) => (
17+
<NitroWebImage url={url} resizeMode="cover" />
18+
)}
2319
/>
2420
</View>
2521
);
2622
}
27-
28-
const styles = StyleSheet.create({
29-
image: {
30-
width: "25%",
31-
aspectRatio: 1,
32-
},
33-
});

ios/HybridImageView.swift

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,24 @@ class HybridImageView: HybridNitroImageViewSpec {
1212
let imageView = UIImageView(image: nil)
1313
var view: UIView { imageView }
1414

15+
var resizeMode: ResizeMode? {
16+
didSet {
17+
let mode = resizeMode ?? .contain
18+
switch mode {
19+
case .cover:
20+
imageView.contentMode = .scaleAspectFill
21+
imageView.clipsToBounds = true
22+
case .contain:
23+
imageView.contentMode = .scaleAspectFit
24+
case .stretch:
25+
imageView.contentMode = .scaleToFill
26+
case .center:
27+
imageView.contentMode = .center
28+
}
29+
updateImage()
30+
}
31+
}
32+
1533
var image: (any HybridImageSpec)? {
1634
didSet {
1735
updateImage()
@@ -23,7 +41,6 @@ class HybridImageView: HybridNitroImageViewSpec {
2341
print("Updating ImageView's image...")
2442

2543
print("Frame: \(imageView.frame)")
26-
imageView.contentMode = .scaleAspectFit
2744
imageView.image = hybridImage.uiImage
2845
}
2946
}

nitrogen/generated/android/c++/JHybridNitroImageViewSpec.cpp

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nitrogen/generated/android/c++/JHybridNitroImageViewSpec.hpp

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nitrogen/generated/android/c++/JResizeMode.hpp

Lines changed: 65 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nitrogen/generated/android/c++/views/JHybridNitroImageViewStateUpdater.cpp

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nitrogen/generated/android/kotlin/com/margelo/nitro/image/HybridNitroImageViewSpec.kt

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)