react-native-fast-image/ios/FastImage/FFFastImageViewManager.m
Dylan Vann 46e08b46e2 Update to support preloading sources.
Sources for preloading have the same keys as the source prop.
Also update readme to document preloading.
2017-06-20 03:10:56 -04:00

38 lines
1.2 KiB
Objective-C

#import "FFFastImageViewManager.h"
#import "FFFastImageView.h"
#import <SDWebImage/SDWebImagePrefetcher.h>
@implementation FFFastImageViewManager
RCT_EXPORT_MODULE(FastImageView)
- (FFFastImageView*)view {
FFFastImageView* view = [[FFFastImageView alloc] init];
view.contentMode = (UIViewContentMode) RCTResizeModeContain;
view.clipsToBounds = YES;
return view;
}
RCT_EXPORT_VIEW_PROPERTY(source, FFFastImageSource);
RCT_EXPORT_VIEW_PROPERTY(resizeMode, RCTResizeMode);
RCT_EXPORT_VIEW_PROPERTY(onFastImageError, RCTDirectEventBlock);
RCT_EXPORT_VIEW_PROPERTY(onFastImageLoad, RCTDirectEventBlock);
RCT_EXPORT_METHOD(preload:(nonnull NSArray<FFFastImageSource *> *)sources)
{
NSMutableArray *urls = [NSMutableArray arrayWithCapacity:sources.count];
[sources enumerateObjectsUsingBlock:^(FFFastImageSource * _Nonnull source, NSUInteger idx, BOOL * _Nonnull stop) {
[source.headers enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString* header, BOOL *stop) {
[[SDWebImageDownloader sharedDownloader] setValue:header forHTTPHeaderField:key];
}];
[urls setObject:source.uri atIndexedSubscript:idx];
}];
[[SDWebImagePrefetcher sharedImagePrefetcher] prefetchURLs:urls];
}
@end