diff --git a/RNVectorIconsManager/RNVectorIconsManager.m b/RNVectorIconsManager/RNVectorIconsManager.m index 88cfcba..a060074 100644 --- a/RNVectorIconsManager/RNVectorIconsManager.m +++ b/RNVectorIconsManager/RNVectorIconsManager.m @@ -40,7 +40,10 @@ RCT_EXPORT_METHOD(getImageForFont:(NSString*)fontName withGlyph:(NSString*)glyph UIGraphicsEndImageContext(); NSData *imageData = UIImagePNGRepresentation(iconImage); - [imageData writeToFile:filePath atomically:YES]; + BOOL success = [imageData writeToFile:filePath atomically:YES]; + if(!success) { + return callback(@[@"Failed to write rendered icon image"]); + } } callback(@[[NSNull null], filePath]); diff --git a/lib/create-icon-set.js b/lib/create-icon-set.js index d8cd354..88c07c1 100644 --- a/lib/create-icon-set.js +++ b/lib/create-icon-set.js @@ -81,7 +81,7 @@ function createIconSet(glyphMap, fontFamily) { var imageSourceCache = {}; - var getImageSource = function(name, size, callback) { + var getImageSource = function(name, size) { invariant(RNVectorIconsManager, 'RNVectorIconsManager not available, did you add the library to your project and link with libRNVectorIcons.a?'); var glyph = glyphMap[name] || '?'; @@ -93,34 +93,23 @@ function createIconSet(glyphMap, fontFamily) { var cacheKey = glyph + ':' + size; return new Promise((resolve, reject) => { - if(imageSourceCache[cacheKey]) { - return resolve({ uri: imageSourceCache[cacheKey] }); + var cached = imageSourceCache[cacheKey]; + if(typeof cached !== 'undefined') { + if(!cached) { return reject(); } + return resolve({ uri: cached }); } RNVectorIconsManager.getImageForFont(fontFamily, glyph, size, function(err, image) { - var result; + imageSourceCache[cacheKey] = image || false; if(!err && image) { - imageSourceCache[cacheKey] = image; - result = { uri: image }; - } - callback && callback(err, result); - if (err) { - reject(err); - } else { - resolve(result); + return resolve({ uri: image }); } + reject(); }); }); }; var TabBarItem = React.createClass({ - getInitialState: function() { - return { - icon: false, - selectedIcon: false, - }; - }, - componentDidMount: function() { var size = this.props.iconSize || TAB_BAR_ICON_SIZE; if(this.props.iconName) {