Files
react-native-fast-image/ios/FastImage/FFFastImageViewManager.m

52 lines
1.8 KiB
Objective-C
Raw Permalink Normal View History

2017-04-13 00:13:44 -04:00
#import "FFFastImageViewManager.h"
#import "FFFastImageView.h"
#import <SDWebImage/SDImageCache.h>
2017-06-08 18:13:19 -03:00
#import <SDWebImage/SDWebImagePrefetcher.h>
2017-04-13 00:13:44 -04:00
@implementation FFFastImageViewManager
RCT_EXPORT_MODULE(FastImageView)
- (FFFastImageView*)view {
2018-05-09 22:52:03 -04:00
return [[FFFastImageView alloc] init];
2017-04-13 00:13:44 -04:00
}
2017-07-03 21:58:24 -04:00
RCT_EXPORT_VIEW_PROPERTY(source, FFFastImageSource)
RCT_EXPORT_VIEW_PROPERTY(resizeMode, RCTResizeMode)
RCT_EXPORT_VIEW_PROPERTY(onFastImageLoadStart, RCTDirectEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onFastImageProgress, RCTDirectEventBlock)
2017-07-03 21:58:24 -04:00
RCT_EXPORT_VIEW_PROPERTY(onFastImageError, RCTDirectEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onFastImageLoad, RCTDirectEventBlock)
RCT_EXPORT_VIEW_PROPERTY(onFastImageLoadEnd, RCTDirectEventBlock)
2019-05-02 20:41:42 -07:00
RCT_REMAP_VIEW_PROPERTY(tintColor, imageColor, UIColor)
2017-06-20 03:10:56 -04:00
RCT_EXPORT_METHOD(preload:(nonnull NSArray<FFFastImageSource *> *)sources)
2017-06-08 18:13:19 -03:00
{
2017-06-20 03:10:56 -04:00
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];
}];
2018-06-09 22:12:56 -04:00
[urls setObject:source.url atIndexedSubscript:idx];
2017-06-20 03:10:56 -04:00
}];
2017-06-08 18:13:19 -03:00
[[SDWebImagePrefetcher sharedImagePrefetcher] prefetchURLs:urls];
}
2017-04-13 00:13:44 -04:00
RCT_EXPORT_METHOD(clearMemoryCache:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
{
[SDImageCache.sharedImageCache clearMemory];
resolve(NULL);
}
2017-06-20 03:10:56 -04:00
RCT_EXPORT_METHOD(clearDiskCache:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
{
[SDImageCache.sharedImageCache clearDiskOnCompletion:^(){
resolve(NULL);
}];
}
@end