Skip to content

Commit 9abf88d

Browse files
committed
✨ feat: doing Camera on iOS
1 parent b373eb9 commit 9abf88d

File tree

14 files changed

+69
-56
lines changed

14 files changed

+69
-56
lines changed

example/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "multipleimagepickerexample",
3-
"version": "1.0.0",
3+
"version": "2.0.4",
44
"main": "expo/AppEntry.js",
55
"scripts": {
66
"start": "expo start",
@@ -13,6 +13,7 @@
1313
"gradle": "cd android && ./gradlew clean && ./gradlew build"
1414
},
1515
"dependencies": {
16+
"@baronha/react-native-multiple-image-picker": "file:../",
1617
"@baronha/react-native-image-grid": "^0.2.7",
1718
"@react-native-segmented-control/segmented-control": "2.5.2",
1819
"expo": "~51.0.38",

example/yarn.lock

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1151,6 +1151,9 @@
11511151
resolved "https://registry.npmjs.org/@baronha/react-native-image-grid/-/react-native-image-grid-0.2.7.tgz"
11521152
integrity sha512-F5q+hJ1p0+hfWYhOK4uL2EgseG89hpiMu0rMIaiw7lMpEA3sKC1AUOhOTKS58LeX1xE/XoqZ0P7tzyntKN+EoQ==
11531153

1154+
"@baronha/react-native-multiple-image-picker@file:..":
1155+
version "2.0.4"
1156+
11541157
"@expo/bunyan@^4.0.0":
11551158
version "4.0.1"
11561159
resolved "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.1.tgz"

ios/HybridMultipleImagePicker+Camera.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ extension HybridMultipleImagePicker {
3434
cameraConfig.focusColor = focusColor
3535
}
3636

37-
switch Int(config.cameraDevice.rawValue) {
37+
switch Int(config.cameraDevice?.rawValue ?? 1) {
3838
case 0:
3939
cameraConfig.position = .front
4040
default:
@@ -54,7 +54,7 @@ extension HybridMultipleImagePicker {
5454
config.editExportPreset = .highQuality
5555
config.videoQuality = .typeHigh
5656

57-
switch Int(options.cameraDevice.rawValue) {
57+
switch Int(options.cameraDevice?.rawValue ?? 1) {
5858
case 0:
5959
config.cameraDevice = .front
6060
default:

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ namespace margelo::nitro::multipleimagepicker {
7070
isSaveSystemAlbum != nullptr ? std::make_optional(static_cast<bool>(isSaveSystemAlbum->value())) : std::nullopt,
7171
allowLocation != nullptr ? std::make_optional(static_cast<bool>(allowLocation->value())) : std::nullopt,
7272
color != nullptr ? std::make_optional(color->value()) : std::nullopt,
73-
cameraDevice->toCpp(),
73+
cameraDevice != nullptr ? std::make_optional(cameraDevice->toCpp()) : std::nullopt,
7474
videoMaximumDuration != nullptr ? std::make_optional(videoMaximumDuration->value()) : std::nullopt
7575
);
7676
}
@@ -89,7 +89,7 @@ namespace margelo::nitro::multipleimagepicker {
8989
value.isSaveSystemAlbum.has_value() ? jni::JBoolean::valueOf(value.isSaveSystemAlbum.value()) : nullptr,
9090
value.allowLocation.has_value() ? jni::JBoolean::valueOf(value.allowLocation.value()) : nullptr,
9191
value.color.has_value() ? jni::JDouble::valueOf(value.color.value()) : nullptr,
92-
JCameraDevice::fromCpp(value.cameraDevice),
92+
value.cameraDevice.has_value() ? JCameraDevice::fromCpp(value.cameraDevice.value()) : nullptr,
9393
value.videoMaximumDuration.has_value() ? jni::JDouble::valueOf(value.videoMaximumDuration.value()) : nullptr
9494
);
9595
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ namespace margelo::nitro::multipleimagepicker {
3737
static const auto fieldVideoMaximumDuration = clazz->getField<jni::JDouble>("videoMaximumDuration");
3838
jni::local_ref<jni::JDouble> videoMaximumDuration = this->getFieldValue(fieldVideoMaximumDuration);
3939
return PickerCameraConfig(
40-
cameraDevice->toCpp(),
40+
cameraDevice != nullptr ? std::make_optional(cameraDevice->toCpp()) : std::nullopt,
4141
videoMaximumDuration != nullptr ? std::make_optional(videoMaximumDuration->value()) : std::nullopt
4242
);
4343
}
@@ -49,7 +49,7 @@ namespace margelo::nitro::multipleimagepicker {
4949
[[maybe_unused]]
5050
static jni::local_ref<JPickerCameraConfig::javaobject> fromCpp(const PickerCameraConfig& value) {
5151
return newInstance(
52-
JCameraDevice::fromCpp(value.cameraDevice),
52+
value.cameraDevice.has_value() ? JCameraDevice::fromCpp(value.cameraDevice.value()) : nullptr,
5353
value.videoMaximumDuration.has_value() ? jni::JDouble::valueOf(value.videoMaximumDuration.value()) : nullptr
5454
);
5555
}

nitrogen/generated/android/kotlin/com/margelo/nitro/multipleimagepicker/NitroCameraConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,6 @@ data class NitroCameraConfig(
2424
val isSaveSystemAlbum: Boolean?,
2525
val allowLocation: Boolean?,
2626
val color: Double?,
27-
val cameraDevice: CameraDevice,
27+
val cameraDevice: CameraDevice?,
2828
val videoMaximumDuration: Double?
2929
)

nitrogen/generated/android/kotlin/com/margelo/nitro/multipleimagepicker/PickerCameraConfig.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ import com.margelo.nitro.core.*
1717
@DoNotStrip
1818
@Keep
1919
data class PickerCameraConfig(
20-
val cameraDevice: CameraDevice,
20+
val cameraDevice: CameraDevice?,
2121
val videoMaximumDuration: Double?
2222
)

nitrogen/generated/ios/MultipleImagePicker-Swift-Cxx-Bridge.hpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,15 @@ namespace margelo::nitro::multipleimagepicker::bridge::swift {
135135
return std::optional<Text>(value);
136136
}
137137

138+
// pragma MARK: std::optional<CameraDevice>
139+
/**
140+
* Specialized version of `std::optional<CameraDevice>`.
141+
*/
142+
using std__optional_CameraDevice_ = std::optional<CameraDevice>;
143+
inline std::optional<CameraDevice> create_std__optional_CameraDevice_(const CameraDevice& value) {
144+
return std::optional<CameraDevice>(value);
145+
}
146+
138147
// pragma MARK: std::optional<PickerCameraConfig>
139148
/**
140149
* Specialized version of `std::optional<PickerCameraConfig>`.

nitrogen/generated/ios/swift/NitroCameraConfig.swift

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public extension NitroCameraConfig {
1818
/**
1919
* Create a new instance of `NitroCameraConfig`.
2020
*/
21-
init(mediaType: MediaType, presentation: Presentation, language: Language, crop: PickerCropConfig?, isSaveSystemAlbum: Bool?, allowLocation: Bool?, color: Double?, cameraDevice: CameraDevice, videoMaximumDuration: Double?) {
21+
init(mediaType: MediaType, presentation: Presentation, language: Language, crop: PickerCropConfig?, isSaveSystemAlbum: Bool?, allowLocation: Bool?, color: Double?, cameraDevice: CameraDevice?, videoMaximumDuration: Double?) {
2222
self.init(mediaType, presentation, language, { () -> bridge.std__optional_PickerCropConfig_ in
2323
if let __unwrappedValue = crop {
2424
return bridge.create_std__optional_PickerCropConfig_(__unwrappedValue)
@@ -43,7 +43,13 @@ public extension NitroCameraConfig {
4343
} else {
4444
return .init()
4545
}
46-
}(), cameraDevice, { () -> bridge.std__optional_double_ in
46+
}(), { () -> bridge.std__optional_CameraDevice_ in
47+
if let __unwrappedValue = cameraDevice {
48+
return bridge.create_std__optional_CameraDevice_(__unwrappedValue)
49+
} else {
50+
return .init()
51+
}
52+
}(), { () -> bridge.std__optional_double_ in
4753
if let __unwrappedValue = videoMaximumDuration {
4854
return bridge.create_std__optional_double_(__unwrappedValue)
4955
} else {
@@ -159,14 +165,20 @@ public extension NitroCameraConfig {
159165
}
160166
}
161167

162-
var cameraDevice: CameraDevice {
168+
var cameraDevice: CameraDevice? {
163169
@inline(__always)
164170
get {
165-
return self.__cameraDevice
171+
return self.__cameraDevice.value
166172
}
167173
@inline(__always)
168174
set {
169-
self.__cameraDevice = newValue
175+
self.__cameraDevice = { () -> bridge.std__optional_CameraDevice_ in
176+
if let __unwrappedValue = newValue {
177+
return bridge.create_std__optional_CameraDevice_(__unwrappedValue)
178+
} else {
179+
return .init()
180+
}
181+
}()
170182
}
171183
}
172184

nitrogen/generated/ios/swift/PickerCameraConfig.swift

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,14 @@ public extension PickerCameraConfig {
1818
/**
1919
* Create a new instance of `PickerCameraConfig`.
2020
*/
21-
init(cameraDevice: CameraDevice, videoMaximumDuration: Double?) {
22-
self.init(cameraDevice, { () -> bridge.std__optional_double_ in
21+
init(cameraDevice: CameraDevice?, videoMaximumDuration: Double?) {
22+
self.init({ () -> bridge.std__optional_CameraDevice_ in
23+
if let __unwrappedValue = cameraDevice {
24+
return bridge.create_std__optional_CameraDevice_(__unwrappedValue)
25+
} else {
26+
return .init()
27+
}
28+
}(), { () -> bridge.std__optional_double_ in
2329
if let __unwrappedValue = videoMaximumDuration {
2430
return bridge.create_std__optional_double_(__unwrappedValue)
2531
} else {
@@ -28,14 +34,20 @@ public extension PickerCameraConfig {
2834
}())
2935
}
3036

31-
var cameraDevice: CameraDevice {
37+
var cameraDevice: CameraDevice? {
3238
@inline(__always)
3339
get {
34-
return self.__cameraDevice
40+
return self.__cameraDevice.value
3541
}
3642
@inline(__always)
3743
set {
38-
self.__cameraDevice = newValue
44+
self.__cameraDevice = { () -> bridge.std__optional_CameraDevice_ in
45+
if let __unwrappedValue = newValue {
46+
return bridge.create_std__optional_CameraDevice_(__unwrappedValue)
47+
} else {
48+
return .init()
49+
}
50+
}()
3951
}
4052
}
4153

0 commit comments

Comments
 (0)