Skip to content

Commit 51a4927

Browse files
author
Di Da
committed
Address PR comments
1 parent 72f2dc9 commit 51a4927

File tree

8 files changed

+33
-26
lines changed

8 files changed

+33
-26
lines changed

src/RNCamera.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ const requestPermissions = async (
4545
} else {
4646
hasCameraPermissions = cameraPermissionResult === PermissionsAndroid.RESULTS.GRANTED;
4747
}
48+
} else if (Platform.OS === 'windows') {
49+
hasCameraPermissions = await CameraManager.checkMediaCapturePermission();
4850
}
4951

5052
if (captureAudio) {
@@ -69,6 +71,8 @@ const requestPermissions = async (
6971
`Otherwise you should set the 'captureAudio' property on the component instance to 'false'.`,
7072
);
7173
}
74+
} else if (Platform.OS === 'windows') {
75+
hasRecordAudioPermissions = await CameraManager.checkMediaCapturePermission();
7276
}
7377
}
7478

windows/ReactNativeCameraCPP/CameraRotationHelper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ namespace winrt::ReactNativeCameraCPP::implementation
7878
return result;
7979
}
8080

81-
int CameraRotationHelper::GetConvertedCameraPreviewOrientation()
81+
int CameraRotationHelper::GetCameraPreviewClockwiseDegrees()
8282
{
8383
auto rotation = GetCameraPreviewOrientation();
8484
return ConvertSimpleOrientationToClockwiseDegrees(rotation);

windows/ReactNativeCameraCPP/CameraRotationHelper.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ namespace winrt::ReactNativeCameraCPP::implementation
1717
winrt::Windows::Devices::Sensors::SimpleOrientation GetCameraCaptureOrientation();
1818
winrt::Windows::Storage::FileProperties::PhotoOrientation GetConvertedCameraCaptureOrientation();
1919
winrt::Windows::Devices::Sensors::SimpleOrientation GetCameraPreviewOrientation();
20-
int GetConvertedCameraPreviewOrientation();
20+
int GetCameraPreviewClockwiseDegrees();
2121

2222
private:
2323

@@ -34,11 +34,12 @@ namespace winrt::ReactNativeCameraCPP::implementation
3434
winrt::Windows::Devices::Sensors::SimpleOrientation MirrorOrientation(winrt::Windows::Devices::Sensors::SimpleOrientation orientation);
3535
winrt::Windows::Devices::Sensors::SimpleOrientation AddOrientations(winrt::Windows::Devices::Sensors::SimpleOrientation a, winrt::Windows::Devices::Sensors::SimpleOrientation b);
3636

37-
winrt::Windows::Storage::FileProperties::PhotoOrientation ConvertSimpleOrientationToPhotoOrientation(
38-
winrt::Windows::Devices::Sensors::SimpleOrientation orientation);
39-
int ConvertSimpleOrientationToClockwiseDegrees(winrt::Windows::Devices::Sensors::SimpleOrientation orientation);
4037
winrt::Windows::Devices::Sensors::SimpleOrientation ConvertDisplayOrientationToSimpleOrientation(Windows::Graphics::Display::DisplayOrientations orientation);
41-
winrt::Windows::Devices::Sensors::SimpleOrientation ConvertClockwiseDegreesToSimpleOrientation(int orientation);
38+
39+
static winrt::Windows::Storage::FileProperties::PhotoOrientation ConvertSimpleOrientationToPhotoOrientation(
40+
winrt::Windows::Devices::Sensors::SimpleOrientation orientation);
41+
static int ConvertSimpleOrientationToClockwiseDegrees(winrt::Windows::Devices::Sensors::SimpleOrientation orientation);
42+
static winrt::Windows::Devices::Sensors::SimpleOrientation ConvertClockwiseDegreesToSimpleOrientation(int orientation);
4243

4344
void SimpleOrientationSensor_OrientationChanged(IInspectable const& sender, IInspectable const& args);
4445
void DisplayInformation_OrientationChanged(IInspectable const& sender, IInspectable const& args);

windows/ReactNativeCameraCPP/CameraRotationHelper.idl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ namespace ReactNativeCameraCPP
77
Windows.Devices.Sensors.SimpleOrientation GetCameraCaptureOrientation();
88
Windows.Devices.Sensors.SimpleOrientation GetCameraPreviewOrientation();
99
Windows.Storage.FileProperties.PhotoOrientation GetConvertedCameraCaptureOrientation();
10-
Int32 GetConvertedCameraPreviewOrientation();
10+
Int32 GetCameraPreviewClockwiseDegrees();
1111

1212
event Windows.Foundation.EventHandler<Boolean> OrientationChanged;
1313
}

windows/ReactNativeCameraCPP/ReactCameraModule.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,9 @@ namespace winrt::ReactNativeCameraCPP {
8989
#pragma endregion
9090

9191
public:
92-
RNCameraModule() {
93-
}
92+
RNCameraModule() = default;
9493

95-
~RNCameraModule() {
96-
}
94+
~RNCameraModule() = default;
9795

9896
};
9997

windows/ReactNativeCameraCPP/ReactCameraView.cpp

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -93,13 +93,17 @@ namespace winrt::ReactNativeCameraCPP {
9393
auto titleString = titleValue.String();
9494
props.Title(winrt::to_hstring(titleString));
9595
}
96+
else
97+
{
98+
throw winrt::hresult_invalid_argument();
99+
}
96100
co_await props.SavePropertiesAsync();
97101
}
98102
}
99103

100104
// RNW has a bug where the numeric value is set as int in debug but double in release
101105
// ToDo: remove this function once bug https://github.com/microsoft/react-native-windows/issues/4225 is fixed.
102-
bool ReactCameraView::GetNumericValue(std::map<std::wstring, JSValue> const& options, const std::wstring key, int &value)
106+
bool ReactCameraView::TryGetalueAsInt(std::map<std::wstring, JSValue> const& options, const std::wstring key, int &value)
103107
{
104108
bool found = false;
105109
auto search = options.find(key);
@@ -130,7 +134,7 @@ namespace winrt::ReactNativeCameraCPP {
130134
{
131135
if (!m_isInitialized)
132136
{
133-
result.Reject(L"Media device is not initialized!");
137+
result.Reject(L"Media device is not initialized.");
134138
return;
135139
}
136140

@@ -142,9 +146,9 @@ namespace winrt::ReactNativeCameraCPP {
142146
auto randomStream = winrt::InMemoryRandomAccessStream();
143147
co_await mediaCapture.CapturePhotoToStreamAsync(encoding, randomStream);
144148
int target;
145-
if (!GetNumericValue(options, L"target", target))
149+
if (!TryGetalueAsInt(options, L"target", target))
146150
{
147-
result.Reject(L"target parameter not specified!");
151+
result.Reject(L"target parameter not specified.");
148152
return;
149153
}
150154
if (target == CameraCaptureTargetMemory)
@@ -178,7 +182,7 @@ namespace winrt::ReactNativeCameraCPP {
178182
}
179183
else
180184
{
181-
result.Reject(L"Media device is not initialized!");
185+
result.Reject(L"Media device is not initialized.");
182186
}
183187

184188
co_await resume_background();
@@ -188,7 +192,7 @@ namespace winrt::ReactNativeCameraCPP {
188192
{
189193
if (!m_isInitialized)
190194
{
191-
result.Reject(L"Media device is not initialized!");
195+
result.Reject(L"Media device is not initialized.");
192196
return;
193197
}
194198

@@ -197,7 +201,7 @@ namespace winrt::ReactNativeCameraCPP {
197201
if (auto mediaCapture = m_childElement.Source())
198202
{
199203
int quality = static_cast<int>(VideoEncodingQuality::Auto);
200-
GetNumericValue(options, L"quality", quality);
204+
TryGetalueAsInt(options, L"quality", quality);
201205
auto encodingProfile = winrt::MediaEncodingProfile();
202206
auto encoding = encodingProfile.CreateMp4(static_cast<VideoEncodingQuality>(quality));
203207

@@ -209,12 +213,12 @@ namespace winrt::ReactNativeCameraCPP {
209213
}
210214

211215
int totalSeconds = INT_MAX;
212-
GetNumericValue(options, L"totalSeconds", totalSeconds);
216+
TryGetalueAsInt(options, L"totalSeconds", totalSeconds);
213217

214218
int target;
215-
if (!GetNumericValue(options, L"target", target))
219+
if (!TryGetalueAsInt(options, L"target", target))
216220
{
217-
result.Reject(L"target parameter not specified!");
221+
result.Reject(L"target parameter not specified.");
218222
return;
219223
}
220224
if (target == CameraCaptureTargetMemory)
@@ -248,7 +252,7 @@ namespace winrt::ReactNativeCameraCPP {
248252
}
249253
else
250254
{
251-
result.Reject("No media capture device found!");
255+
result.Reject("No media capture device found");
252256
}
253257
co_await resume_background();
254258
}
@@ -482,7 +486,7 @@ namespace winrt::ReactNativeCameraCPP {
482486
{
483487
const GUID RotationKey = { 0xC380465D, 0x2271, 0x428C, {0x9B, 0x83, 0xEC, 0xEA, 0x3B, 0x4A, 0x85, 0xC1} };
484488
auto props = mediaCapture.VideoDeviceController().GetMediaStreamProperties(MediaStreamType::VideoPreview);
485-
props.Properties().Insert(RotationKey, winrt::box_value(m_rotationHelper.GetConvertedCameraPreviewOrientation()));
489+
props.Properties().Insert(RotationKey, winrt::box_value(m_rotationHelper.GetCameraPreviewClockwiseDegrees()));
486490
co_await mediaCapture.SetEncodingPropertiesAsync(MediaStreamType::VideoPreview, props, nullptr);
487491
}
488492
}

windows/ReactNativeCameraCPP/ReactCameraView.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ namespace winrt::ReactNativeCameraCPP {
4444
void OnApplicationResuming();
4545
winrt::Windows::Foundation::IAsyncAction OnUnloaded();
4646

47-
bool GetNumericValue(std::map<std::wstring, winrt::Microsoft::ReactNative::JSValue> const& options, const std::wstring key, int& value);
47+
bool TryGetalueAsInt(std::map<std::wstring, winrt::Microsoft::ReactNative::JSValue> const& options, const std::wstring key, int& value);
4848

4949
winrt::Microsoft::ReactNative::IReactContext m_reactContext{ nullptr };
5050
winrt::Windows::UI::Xaml::Controls::CaptureElement m_childElement;

windows/ReactNativeCameraCPP/ReactCameraViewManager.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ namespace winrt::ReactNativeCameraCPP::implementation {
9494
}
9595
else
9696
{
97-
result.Reject("No camera instance found!");
97+
result.Reject("No camera instance found.");
9898
}
9999
}
100100

@@ -111,7 +111,7 @@ namespace winrt::ReactNativeCameraCPP::implementation {
111111
}
112112
else
113113
{
114-
result.Reject("No camera instance found!");
114+
result.Reject("No camera instance found.");
115115
}
116116
}
117117

0 commit comments

Comments
 (0)