Skip to content

Commit 8c1ce3f

Browse files
author
Luke Brandon Farrell
authored
Merge pull request #17 from Qeepsake/mime_type_fallback
fix(mime): added fallback for mime types to support simulators running on M1 chip
2 parents d13446d + 2d25fca commit 8c1ce3f

File tree

6 files changed

+107
-6
lines changed

6 files changed

+107
-6
lines changed

.husky/commit-msg

100644100755
Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#!/bin/sh
22
. "$(dirname "$0")/_/husky.sh"
33

4-
yarn commitlint -E HUSKY_GIT_PARAMS
54
npx --no-install commitlint --edit

.husky/pre-commit

100644100755
File mode changed.

example/ios/Podfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ PODS:
185185
- React-cxxreact (= 0.63.4)
186186
- React-jsi (= 0.63.4)
187187
- React-jsinspector (0.63.4)
188-
- react-native-file-utils (0.1.0):
188+
- react-native-file-utils (1.0.5):
189189
- React-Core
190190
- react-native-image-picker (4.6.0):
191191
- React-Core
@@ -362,7 +362,7 @@ SPEC CHECKSUMS:
362362
React-jsi: a0418934cf48f25b485631deb27c64dc40fb4c31
363363
React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949
364364
React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a
365-
react-native-file-utils: 53046bac551bc48c49fc6b084e0358f88d1bf10f
365+
react-native-file-utils: e11f0eabd3f4c0c0a6d87edbf26fad497f255f09
366366
react-native-image-picker: 8c83c5c7d137e866bcb9a2db93f1e1ca866fddbf
367367
React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336
368368
React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b

ios/FileUtils.m

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,103 @@ @implementation FileUtils
6161
rejecter:(RCTPromiseRejectBlock)reject
6262
)
6363
{
64+
NSMutableDictionary *ListOfMimeTypes = [[NSMutableDictionary alloc] init];
65+
[ListOfMimeTypes setObject:@"image/jpeg" forKey:@"jpg"];
66+
[ListOfMimeTypes setObject:@"html" forKey:@"text/html"];
67+
[ListOfMimeTypes setObject:@"htm" forKey:@"text/html"];
68+
[ListOfMimeTypes setObject:@"shtml" forKey:@"text/html"];
69+
[ListOfMimeTypes setObject:@"css" forKey:@"text/css"];
70+
[ListOfMimeTypes setObject:@"xml" forKey:@"text/xml"];
71+
[ListOfMimeTypes setObject:@"gif" forKey:@"image/gif"];
72+
[ListOfMimeTypes setObject:@"jpeg" forKey:@"image/jpeg"];
73+
[ListOfMimeTypes setObject:@"jpg" forKey:@"image/jpeg"];
74+
[ListOfMimeTypes setObject:@"js" forKey:@"application/javascript"];
75+
[ListOfMimeTypes setObject:@"atom" forKey:@"application/atom+xml"];
76+
[ListOfMimeTypes setObject:@"rss" forKey:@"application/rss+xml"];
77+
[ListOfMimeTypes setObject:@"mml" forKey:@"text/mathml"];
78+
[ListOfMimeTypes setObject:@"txt" forKey:@"text/plain"];
79+
[ListOfMimeTypes setObject:@"jad" forKey:@"text/vnd.sun.j2me.app-descriptor"];
80+
[ListOfMimeTypes setObject:@"wml" forKey:@"text/vnd.wap.wml"];
81+
[ListOfMimeTypes setObject:@"htc" forKey:@"text/x-component"];
82+
[ListOfMimeTypes setObject:@"png" forKey:@"image/png"];
83+
[ListOfMimeTypes setObject:@"tif" forKey:@"image/tiff"];
84+
[ListOfMimeTypes setObject:@"tiff" forKey:@"image/tiff"];
85+
[ListOfMimeTypes setObject:@"wbmp" forKey:@"image/vnd.wap.wbmp"];
86+
[ListOfMimeTypes setObject:@"ico" forKey:@"image/x-icon"];
87+
[ListOfMimeTypes setObject:@"jng" forKey:@"image/x-jng"];
88+
[ListOfMimeTypes setObject:@"bmp" forKey:@"image/x-ms-bmp"];
89+
[ListOfMimeTypes setObject:@"svg" forKey:@"image/svg+xml"];
90+
[ListOfMimeTypes setObject:@"svgz" forKey:@"image/svg+xml"];
91+
[ListOfMimeTypes setObject:@"webp" forKey:@"image/webp"];
92+
[ListOfMimeTypes setObject:@"woff" forKey:@"application/font-woff"];
93+
[ListOfMimeTypes setObject:@"jar" forKey:@"application/java-archive"];
94+
[ListOfMimeTypes setObject:@"war" forKey:@"application/java-archive"];
95+
[ListOfMimeTypes setObject:@"ear" forKey:@"application/java-archive"];
96+
[ListOfMimeTypes setObject:@"json" forKey:@"application/json"];
97+
[ListOfMimeTypes setObject:@"hqx" forKey:@"application/mac-binhex40"];
98+
[ListOfMimeTypes setObject:@"doc" forKey:@"application/msword"];
99+
[ListOfMimeTypes setObject:@"pdf" forKey:@"application/pdf"];
100+
[ListOfMimeTypes setObject:@"ps" forKey:@"application/postscript"];
101+
[ListOfMimeTypes setObject:@"eps" forKey:@"application/postscript"];
102+
[ListOfMimeTypes setObject:@"ai" forKey:@"application/postscript"];
103+
[ListOfMimeTypes setObject:@"rtf" forKey:@"application/rtf"];
104+
[ListOfMimeTypes setObject:@"m3u8" forKey:@"application/vnd.apple.mpegurl"];
105+
[ListOfMimeTypes setObject:@"xls" forKey:@"application/vnd.ms-excel"];
106+
[ListOfMimeTypes setObject:@"eot" forKey:@"application/vnd.ms-fontobject"];
107+
[ListOfMimeTypes setObject:@"ppt" forKey:@"application/vnd.ms-powerpoint"];
108+
[ListOfMimeTypes setObject:@"wmlc" forKey:@"application/vnd.wap.wmlc"];
109+
[ListOfMimeTypes setObject:@"kml" forKey:@"application/vnd.google-earth.kml+xml"];
110+
[ListOfMimeTypes setObject:@"kmz" forKey:@"application/vnd.google-earth.kmz"];
111+
[ListOfMimeTypes setObject:@"7z" forKey:@"application/x-7z-compressed"];
112+
[ListOfMimeTypes setObject:@"cco" forKey:@"application/x-cocoa"];
113+
[ListOfMimeTypes setObject:@"jardiff" forKey:@"application/x-java-archive-diff"];
114+
[ListOfMimeTypes setObject:@"jnlp" forKey:@"application/x-java-jnlp-file"];
115+
[ListOfMimeTypes setObject:@"run" forKey:@"application/x-makeself"];
116+
[ListOfMimeTypes setObject:@"pl" forKey:@"application/x-perl"];
117+
[ListOfMimeTypes setObject:@"pm" forKey:@"application/x-perl"];
118+
[ListOfMimeTypes setObject:@"prc" forKey:@"application/x-pilot"];
119+
[ListOfMimeTypes setObject:@"pdb" forKey:@"application/x-pilot"];
120+
[ListOfMimeTypes setObject:@"rar" forKey:@"application/x-rar-compressed"];
121+
[ListOfMimeTypes setObject:@"rpm" forKey:@"application/x-redhat-package-manager"];
122+
[ListOfMimeTypes setObject:@"sea" forKey:@"application/x-sea"];
123+
[ListOfMimeTypes setObject:@"swf" forKey:@"application/x-shockwave-flash"];
124+
[ListOfMimeTypes setObject:@"sit" forKey:@"application/x-stuffit"];
125+
[ListOfMimeTypes setObject:@"tcl" forKey:@"application/x-tcl"];
126+
[ListOfMimeTypes setObject:@"tk" forKey:@"application/x-tcl"];
127+
[ListOfMimeTypes setObject:@"der" forKey:@"application/x-x509-ca-cert"];
128+
[ListOfMimeTypes setObject:@"pem" forKey:@"application/x-x509-ca-cert"];
129+
[ListOfMimeTypes setObject:@"crt" forKey:@"application/x-x509-ca-cert"];
130+
[ListOfMimeTypes setObject:@"xpi" forKey:@"application/x-xpinstall"];
131+
[ListOfMimeTypes setObject:@"xhtml" forKey:@"application/xhtml+xml"];
132+
[ListOfMimeTypes setObject:@"xspf" forKey:@"application/xspf+xml"];
133+
[ListOfMimeTypes setObject:@"zip" forKey:@"application/zip"];
134+
[ListOfMimeTypes setObject:@"epub" forKey:@"application/epub+zip"];
135+
[ListOfMimeTypes setObject:@"docx" forKey:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document"];
136+
[ListOfMimeTypes setObject:@"xlsx" forKey:@"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"];
137+
[ListOfMimeTypes setObject:@"pptx" forKey:@"application/vnd.openxmlformats-officedocument.presentationml.presentation"];
138+
[ListOfMimeTypes setObject:@"mid" forKey:@"audio/midi"];
139+
[ListOfMimeTypes setObject:@"midi" forKey:@"audio/midi"];
140+
[ListOfMimeTypes setObject:@"kar" forKey:@"audio/midi"];
141+
[ListOfMimeTypes setObject:@"mp3" forKey:@"audio/mpeg"];
142+
[ListOfMimeTypes setObject:@"ogg" forKey:@"audio/ogg"];
143+
[ListOfMimeTypes setObject:@"m4a" forKey:@"audio/x-m4a"];
144+
[ListOfMimeTypes setObject:@"ra" forKey:@"audio/x-realaudio"];
145+
[ListOfMimeTypes setObject:@"3gpp" forKey:@"video/3gpp"];
146+
[ListOfMimeTypes setObject:@"3gp" forKey:@"video/3gpp"];
147+
[ListOfMimeTypes setObject:@"ts" forKey:@"video/mp2t"];
148+
[ListOfMimeTypes setObject:@"mp4" forKey:@"video/mp4"];
149+
[ListOfMimeTypes setObject:@"mpeg" forKey:@"video/mpeg"];
150+
[ListOfMimeTypes setObject:@"mpg" forKey:@"video/mpeg"];
151+
[ListOfMimeTypes setObject:@"mov" forKey:@"video/quicktime"];
152+
[ListOfMimeTypes setObject:@"webm" forKey:@"video/webm"];
153+
[ListOfMimeTypes setObject:@"flv" forKey:@"video/x-flv"];
154+
[ListOfMimeTypes setObject:@"m4v" forKey:@"video/x-m4v"];
155+
[ListOfMimeTypes setObject:@"mng" forKey:@"video/x-mng"];
156+
[ListOfMimeTypes setObject:@"asx" forKey:@"video/x-ms-asf"];
157+
[ListOfMimeTypes setObject:@"asf" forKey:@"video/x-ms-asf"];
158+
[ListOfMimeTypes setObject:@"wmv" forKey:@"video/x-ms-wmv"];
159+
[ListOfMimeTypes setObject:@"avi" forKey:@"video/x-msvideo"];
160+
64161
NSURL *referenceUrl = [NSURL URLWithString:path];
65162
CFStringRef fileExtension = (__bridge CFStringRef)[referenceUrl pathExtension];
66163
CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, NULL);
@@ -69,6 +166,10 @@ @implementation FileUtils
69166
if (UTI != nil) {
70167
CFRelease(UTI);
71168
resolve((NSString *)CFBridgingRelease(MIMEType));
169+
} else if(fileExtension != nil) { // Use a fallback lookup array to determine MIME type
170+
NSString *lookupKey = (__bridge NSString *)fileExtension;
171+
NSString *lookupResult = [ListOfMimeTypes objectForKey:[lookupKey lowercaseString]];
172+
resolve(lookupResult);
72173
} else {
73174
reject(
74175
@"GET_MIME_TYPE_MALFORMED_PATH_ERROR",

package-lock.json

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

scripts/bootstrap.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const options = {
1212
};
1313

1414
if (os.type() === 'Windows_NT') {
15-
options.shell = true
15+
options.shell = true;
1616
}
1717

1818
let result;

0 commit comments

Comments
 (0)