Skip to content

Commit 91dac76

Browse files
author
Luke Farrell
committed
fix(timestamp): android virtual method 'int java.lang.String.length()' on a null object reference
1 parent 219d0cf commit 91dac76

File tree

1 file changed

+23
-10
lines changed

1 file changed

+23
-10
lines changed

android/src/main/java/com/reactnativefileutils/FileUtilsModule.java

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -149,25 +149,38 @@ public void getTimestamp(String uri, String mediaType, Promise promise) {
149149
ExifInterface exif = new ExifInterface(inputStream);
150150
String timestamp = exif.getAttribute(ExifInterface.TAG_DATETIME);
151151

152-
Date date = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss", Locale.US).parse(timestamp);
153-
String formattedDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US).format(date);
154-
155-
promise.resolve(formattedDate);
152+
// Timestamp can't be found in file
153+
if(timestamp != null) {
154+
Date date = new SimpleDateFormat("yyyy:MM:dd HH:mm:ss", Locale.US).parse(timestamp);
155+
156+
if (date != null) {
157+
String formattedDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US).format(date);
158+
promise.resolve(formattedDate);
159+
} else {
160+
promise.resolve(null);
161+
}
162+
} else {
163+
promise.resolve(null);
164+
}
156165
} else {
157-
promise.reject("Android version must be above: " + android.os.Build.VERSION_CODES.N);
166+
promise.reject("VERSION_NOT_SUPPORTED", "Android version must be above: " + android.os.Build.VERSION_CODES.N);
158167
}
159168
} else {
160-
promise.reject("File path not supported: " + uri);
169+
promise.reject("PATH_NOT_SUPPORTED", "File path not supported: " + uri);
161170
}
162171
// Handle getting mime type for videos
163172
} else {
164173
MediaMetadataRetriever retriever = GetMediaMetadataRetriever(fileUri);
165174
String timestamp = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DATE);
166175
Date date = new SimpleDateFormat("yyyyMMdd'T'HHmmss", Locale.US).parse(timestamp);
167-
String formattedDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US).format(date);
168-
retriever.release();
169-
170-
promise.resolve(formattedDate);
176+
177+
if(date != null) {
178+
String formattedDate = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US).format(date);
179+
retriever.release();
180+
promise.resolve(formattedDate);
181+
} else {
182+
promise.resolve(null);
183+
}
171184
}
172185
} catch (Exception e) {
173186
promise.reject("Error getting timestamp of media file", e);

0 commit comments

Comments
 (0)