From e7cf8665d47e42a1f99e1d0aae3d50183de620e1 Mon Sep 17 00:00:00 2001 From: Antonio Gallo Date: Wed, 20 May 2020 19:35:59 +0200 Subject: [PATCH] feat: Added fileSize for getPhotos API (#180) Co-authored-by: Antonio Gallo --- README.md | 1 + .../reactnativecommunity/cameraroll/CameraRollModule.java | 7 ++++++- ios/RNCCameraRollManager.m | 1 + js/CameraRoll.js | 1 + typings/CameraRoll.d.ts | 1 + 5 files changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 3c87c4f..b082e5d 100644 --- a/README.md +++ b/README.md @@ -183,6 +183,7 @@ Returns a Promise which when resolved will be of the following shape: * `filename`: {string} * `height`: {number} * `width`: {number} + * `fileSize`: {number} * `isStored`: {boolean} * `playableDuration`: {number} * `timestamp`: {number} diff --git a/android/src/main/java/com/reactnativecommunity/cameraroll/CameraRollModule.java b/android/src/main/java/com/reactnativecommunity/cameraroll/CameraRollModule.java index b1aa269..acbc840 100644 --- a/android/src/main/java/com/reactnativecommunity/cameraroll/CameraRollModule.java +++ b/android/src/main/java/com/reactnativecommunity/cameraroll/CameraRollModule.java @@ -79,6 +79,7 @@ public class CameraRollModule extends ReactContextBaseJavaModule { Images.Media.DATE_TAKEN, MediaStore.MediaColumns.WIDTH, MediaStore.MediaColumns.HEIGHT, + MediaStore.MediaColumns.SIZE, MediaStore.MediaColumns.DATA }; @@ -465,13 +466,14 @@ public class CameraRollModule extends ReactContextBaseJavaModule { int dateTakenIndex = media.getColumnIndex(Images.Media.DATE_TAKEN); int widthIndex = media.getColumnIndex(MediaStore.MediaColumns.WIDTH); int heightIndex = media.getColumnIndex(MediaStore.MediaColumns.HEIGHT); + int sizeIndex = media.getColumnIndex(MediaStore.MediaColumns.SIZE); int dataIndex = media.getColumnIndex(MediaStore.MediaColumns.DATA); for (int i = 0; i < limit && !media.isAfterLast(); i++) { WritableMap edge = new WritableNativeMap(); WritableMap node = new WritableNativeMap(); boolean imageInfoSuccess = - putImageInfo(resolver, media, node, idIndex, widthIndex, heightIndex, dataIndex, mimeTypeIndex); + putImageInfo(resolver, media, node, idIndex, widthIndex, heightIndex, sizeIndex, dataIndex, mimeTypeIndex); if (imageInfoSuccess) { putBasicNodeInfo(media, node, mimeTypeIndex, groupNameIndex, dateTakenIndex); putLocationInfo(media, node, dataIndex); @@ -506,6 +508,7 @@ public class CameraRollModule extends ReactContextBaseJavaModule { int idIndex, int widthIndex, int heightIndex, + int sizeIndex, int dataIndex, int mimeTypeIndex) { WritableMap image = new WritableNativeMap(); @@ -516,6 +519,7 @@ public class CameraRollModule extends ReactContextBaseJavaModule { image.putString("filename", strFileName); float width = media.getInt(widthIndex); float height = media.getInt(heightIndex); + long fileSize = media.getLong(sizeIndex); String mimeType = media.getString(mimeTypeIndex); @@ -575,6 +579,7 @@ public class CameraRollModule extends ReactContextBaseJavaModule { } image.putDouble("width", width); image.putDouble("height", height); + image.putDouble("fileSize", fileSize); node.putMap("image", image); return true; diff --git a/ios/RNCCameraRollManager.m b/ios/RNCCameraRollManager.m index f609a2a..3fc2c22 100644 --- a/ios/RNCCameraRollManager.m +++ b/ios/RNCCameraRollManager.m @@ -354,6 +354,7 @@ RCT_EXPORT_METHOD(getPhotos:(NSDictionary *)params @"filename": origFilename, @"height": @([asset pixelHeight]), @"width": @([asset pixelWidth]), + @"fileSize": [resource valueForKey:@"fileSize"], @"isStored": @YES, // this field doesn't seem to exist on android @"playableDuration": @([asset duration]) // fractional seconds }, diff --git a/js/CameraRoll.js b/js/CameraRoll.js index bab3860..62c1238 100644 --- a/js/CameraRoll.js +++ b/js/CameraRoll.js @@ -78,6 +78,7 @@ export type PhotoIdentifier = { uri: string, height: number, width: number, + fileSize: number, isStored?: boolean, playableDuration: number, }, diff --git a/typings/CameraRoll.d.ts b/typings/CameraRoll.d.ts index 930b2f5..e266554 100644 --- a/typings/CameraRoll.d.ts +++ b/typings/CameraRoll.d.ts @@ -39,6 +39,7 @@ declare namespace CameraRoll { uri: string, height: number, width: number, + fileSize: number, isStored?: boolean, playableDuration: number, },