Skip to content

Commit 0d97270

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

32 files changed

+401
-84
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: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2166,8 +2166,7 @@ SPEC CHECKSUMS:
21662166
React-logger: 514fac028fee60c84591f951c7c04ba1c5023334
21672167
React-Mapbuffer: fae8da2c01aeb7f26ad739731b6dba61fd02fd97
21682168
React-microtasksnativemodule: 20454ffccff553f0ee73fd20873aa8555a5867fb
2169-
react-native-cameraroll: 41084e42ab4ec08940452737aca3fd5e0edc63fe
2170-
react-native-safe-area-context: 7e926a200d4bc9c56562275743705c6b56176455
2169+
react-native-safe-area-context: 5594ec631ede9c311c5c0efa244228eff845ce88
21712170
React-NativeModulesApple: 65b2735133d6ce8a3cb5f23215ef85e427b0139c
21722171
React-oscompat: f26aa2a4adc84c34212ab12c07988fe19e9cf16a
21732172
React-perflogger: e15a0d43d1928e1c82f4f0b7fc05f7e9bccfede8
@@ -2200,7 +2199,7 @@ SPEC CHECKSUMS:
22002199
ReactCodegen: 16c2bfcebf870208d7e29ff0c065f4c0fa03034d
22012200
ReactCommon: e243aa261effc83c10208f0794bade55ca9ae5b6
22022201
RNFastImage: 462a183c4b0b6b26fdfd639e1ed6ba37536c3b87
2203-
RNScreens: d8f03344886bd566bba24b9e02dbd28979631d3e
2202+
RNScreens: 482e9707f9826230810c92e765751af53826d509
22042203
SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d
22052204
SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d
22062205
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748

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)