Skip to content

Commit

Permalink
Merge pull request #17 from Qeepsake/mime_type_fallback
Browse files Browse the repository at this point in the history
fix(mime): added fallback for mime types to support simulators running on M1 chip
  • Loading branch information
Luke Brandon Farrell authored Dec 29, 2021
2 parents d13446d + 2d25fca commit 8c1ce3f
Show file tree
Hide file tree
Showing 6 changed files with 107 additions and 6 deletions.
1 change: 0 additions & 1 deletion .husky/commit-msg
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"

yarn commitlint -E HUSKY_GIT_PARAMS
npx --no-install commitlint --edit
Empty file modified .husky/pre-commit
100644 → 100755
Empty file.
4 changes: 2 additions & 2 deletions example/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ PODS:
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsinspector (0.63.4)
- react-native-file-utils (0.1.0):
- react-native-file-utils (1.0.5):
- React-Core
- react-native-image-picker (4.6.0):
- React-Core
Expand Down Expand Up @@ -362,7 +362,7 @@ SPEC CHECKSUMS:
React-jsi: a0418934cf48f25b485631deb27c64dc40fb4c31
React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949
React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a
react-native-file-utils: 53046bac551bc48c49fc6b084e0358f88d1bf10f
react-native-file-utils: e11f0eabd3f4c0c0a6d87edbf26fad497f255f09
react-native-image-picker: 8c83c5c7d137e866bcb9a2db93f1e1ca866fddbf
React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336
React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b
Expand Down
101 changes: 101 additions & 0 deletions ios/FileUtils.m
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,103 @@ @implementation FileUtils
rejecter:(RCTPromiseRejectBlock)reject
)
{
NSMutableDictionary *ListOfMimeTypes = [[NSMutableDictionary alloc] init];
[ListOfMimeTypes setObject:@"image/jpeg" forKey:@"jpg"];
[ListOfMimeTypes setObject:@"html" forKey:@"text/html"];
[ListOfMimeTypes setObject:@"htm" forKey:@"text/html"];
[ListOfMimeTypes setObject:@"shtml" forKey:@"text/html"];
[ListOfMimeTypes setObject:@"css" forKey:@"text/css"];
[ListOfMimeTypes setObject:@"xml" forKey:@"text/xml"];
[ListOfMimeTypes setObject:@"gif" forKey:@"image/gif"];
[ListOfMimeTypes setObject:@"jpeg" forKey:@"image/jpeg"];
[ListOfMimeTypes setObject:@"jpg" forKey:@"image/jpeg"];
[ListOfMimeTypes setObject:@"js" forKey:@"application/javascript"];
[ListOfMimeTypes setObject:@"atom" forKey:@"application/atom+xml"];
[ListOfMimeTypes setObject:@"rss" forKey:@"application/rss+xml"];
[ListOfMimeTypes setObject:@"mml" forKey:@"text/mathml"];
[ListOfMimeTypes setObject:@"txt" forKey:@"text/plain"];
[ListOfMimeTypes setObject:@"jad" forKey:@"text/vnd.sun.j2me.app-descriptor"];
[ListOfMimeTypes setObject:@"wml" forKey:@"text/vnd.wap.wml"];
[ListOfMimeTypes setObject:@"htc" forKey:@"text/x-component"];
[ListOfMimeTypes setObject:@"png" forKey:@"image/png"];
[ListOfMimeTypes setObject:@"tif" forKey:@"image/tiff"];
[ListOfMimeTypes setObject:@"tiff" forKey:@"image/tiff"];
[ListOfMimeTypes setObject:@"wbmp" forKey:@"image/vnd.wap.wbmp"];
[ListOfMimeTypes setObject:@"ico" forKey:@"image/x-icon"];
[ListOfMimeTypes setObject:@"jng" forKey:@"image/x-jng"];
[ListOfMimeTypes setObject:@"bmp" forKey:@"image/x-ms-bmp"];
[ListOfMimeTypes setObject:@"svg" forKey:@"image/svg+xml"];
[ListOfMimeTypes setObject:@"svgz" forKey:@"image/svg+xml"];
[ListOfMimeTypes setObject:@"webp" forKey:@"image/webp"];
[ListOfMimeTypes setObject:@"woff" forKey:@"application/font-woff"];
[ListOfMimeTypes setObject:@"jar" forKey:@"application/java-archive"];
[ListOfMimeTypes setObject:@"war" forKey:@"application/java-archive"];
[ListOfMimeTypes setObject:@"ear" forKey:@"application/java-archive"];
[ListOfMimeTypes setObject:@"json" forKey:@"application/json"];
[ListOfMimeTypes setObject:@"hqx" forKey:@"application/mac-binhex40"];
[ListOfMimeTypes setObject:@"doc" forKey:@"application/msword"];
[ListOfMimeTypes setObject:@"pdf" forKey:@"application/pdf"];
[ListOfMimeTypes setObject:@"ps" forKey:@"application/postscript"];
[ListOfMimeTypes setObject:@"eps" forKey:@"application/postscript"];
[ListOfMimeTypes setObject:@"ai" forKey:@"application/postscript"];
[ListOfMimeTypes setObject:@"rtf" forKey:@"application/rtf"];
[ListOfMimeTypes setObject:@"m3u8" forKey:@"application/vnd.apple.mpegurl"];
[ListOfMimeTypes setObject:@"xls" forKey:@"application/vnd.ms-excel"];
[ListOfMimeTypes setObject:@"eot" forKey:@"application/vnd.ms-fontobject"];
[ListOfMimeTypes setObject:@"ppt" forKey:@"application/vnd.ms-powerpoint"];
[ListOfMimeTypes setObject:@"wmlc" forKey:@"application/vnd.wap.wmlc"];
[ListOfMimeTypes setObject:@"kml" forKey:@"application/vnd.google-earth.kml+xml"];
[ListOfMimeTypes setObject:@"kmz" forKey:@"application/vnd.google-earth.kmz"];
[ListOfMimeTypes setObject:@"7z" forKey:@"application/x-7z-compressed"];
[ListOfMimeTypes setObject:@"cco" forKey:@"application/x-cocoa"];
[ListOfMimeTypes setObject:@"jardiff" forKey:@"application/x-java-archive-diff"];
[ListOfMimeTypes setObject:@"jnlp" forKey:@"application/x-java-jnlp-file"];
[ListOfMimeTypes setObject:@"run" forKey:@"application/x-makeself"];
[ListOfMimeTypes setObject:@"pl" forKey:@"application/x-perl"];
[ListOfMimeTypes setObject:@"pm" forKey:@"application/x-perl"];
[ListOfMimeTypes setObject:@"prc" forKey:@"application/x-pilot"];
[ListOfMimeTypes setObject:@"pdb" forKey:@"application/x-pilot"];
[ListOfMimeTypes setObject:@"rar" forKey:@"application/x-rar-compressed"];
[ListOfMimeTypes setObject:@"rpm" forKey:@"application/x-redhat-package-manager"];
[ListOfMimeTypes setObject:@"sea" forKey:@"application/x-sea"];
[ListOfMimeTypes setObject:@"swf" forKey:@"application/x-shockwave-flash"];
[ListOfMimeTypes setObject:@"sit" forKey:@"application/x-stuffit"];
[ListOfMimeTypes setObject:@"tcl" forKey:@"application/x-tcl"];
[ListOfMimeTypes setObject:@"tk" forKey:@"application/x-tcl"];
[ListOfMimeTypes setObject:@"der" forKey:@"application/x-x509-ca-cert"];
[ListOfMimeTypes setObject:@"pem" forKey:@"application/x-x509-ca-cert"];
[ListOfMimeTypes setObject:@"crt" forKey:@"application/x-x509-ca-cert"];
[ListOfMimeTypes setObject:@"xpi" forKey:@"application/x-xpinstall"];
[ListOfMimeTypes setObject:@"xhtml" forKey:@"application/xhtml+xml"];
[ListOfMimeTypes setObject:@"xspf" forKey:@"application/xspf+xml"];
[ListOfMimeTypes setObject:@"zip" forKey:@"application/zip"];
[ListOfMimeTypes setObject:@"epub" forKey:@"application/epub+zip"];
[ListOfMimeTypes setObject:@"docx" forKey:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document"];
[ListOfMimeTypes setObject:@"xlsx" forKey:@"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"];
[ListOfMimeTypes setObject:@"pptx" forKey:@"application/vnd.openxmlformats-officedocument.presentationml.presentation"];
[ListOfMimeTypes setObject:@"mid" forKey:@"audio/midi"];
[ListOfMimeTypes setObject:@"midi" forKey:@"audio/midi"];
[ListOfMimeTypes setObject:@"kar" forKey:@"audio/midi"];
[ListOfMimeTypes setObject:@"mp3" forKey:@"audio/mpeg"];
[ListOfMimeTypes setObject:@"ogg" forKey:@"audio/ogg"];
[ListOfMimeTypes setObject:@"m4a" forKey:@"audio/x-m4a"];
[ListOfMimeTypes setObject:@"ra" forKey:@"audio/x-realaudio"];
[ListOfMimeTypes setObject:@"3gpp" forKey:@"video/3gpp"];
[ListOfMimeTypes setObject:@"3gp" forKey:@"video/3gpp"];
[ListOfMimeTypes setObject:@"ts" forKey:@"video/mp2t"];
[ListOfMimeTypes setObject:@"mp4" forKey:@"video/mp4"];
[ListOfMimeTypes setObject:@"mpeg" forKey:@"video/mpeg"];
[ListOfMimeTypes setObject:@"mpg" forKey:@"video/mpeg"];
[ListOfMimeTypes setObject:@"mov" forKey:@"video/quicktime"];
[ListOfMimeTypes setObject:@"webm" forKey:@"video/webm"];
[ListOfMimeTypes setObject:@"flv" forKey:@"video/x-flv"];
[ListOfMimeTypes setObject:@"m4v" forKey:@"video/x-m4v"];
[ListOfMimeTypes setObject:@"mng" forKey:@"video/x-mng"];
[ListOfMimeTypes setObject:@"asx" forKey:@"video/x-ms-asf"];
[ListOfMimeTypes setObject:@"asf" forKey:@"video/x-ms-asf"];
[ListOfMimeTypes setObject:@"wmv" forKey:@"video/x-ms-wmv"];
[ListOfMimeTypes setObject:@"avi" forKey:@"video/x-msvideo"];

NSURL *referenceUrl = [NSURL URLWithString:path];
CFStringRef fileExtension = (__bridge CFStringRef)[referenceUrl pathExtension];
CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, NULL);
Expand All @@ -69,6 +166,10 @@ @implementation FileUtils
if (UTI != nil) {
CFRelease(UTI);
resolve((NSString *)CFBridgingRelease(MIMEType));
} else if(fileExtension != nil) { // Use a fallback lookup array to determine MIME type
NSString *lookupKey = (__bridge NSString *)fileExtension;
NSString *lookupResult = [ListOfMimeTypes objectForKey:[lookupKey lowercaseString]];
resolve(lookupResult);
} else {
reject(
@"GET_MIME_TYPE_MALFORMED_PATH_ERROR",
Expand Down
5 changes: 3 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion scripts/bootstrap.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ const options = {
};

if (os.type() === 'Windows_NT') {
options.shell = true
options.shell = true;
}

let result;
Expand Down

0 comments on commit 8c1ce3f

Please sign in to comment.