mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-17 11:00:07 +00:00
Merge pull request #139 from facebook/imagedownloader-ios7
ASBasicImageDownloader iOS 7 support
This commit is contained in:
commit
eb600b955a
@ -31,13 +31,13 @@
|
|||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
/**
|
/**
|
||||||
* NSURLSessionTask lacks a `userInfo` property, so add this association ourselves.
|
* NSURLSessionDownloadTask lacks a `userInfo` property, so add this association ourselves.
|
||||||
*/
|
*/
|
||||||
@interface NSURLSessionTask (ASBasicImageDownloader)
|
@interface NSURLRequest (ASBasicImageDownloader)
|
||||||
@property (nonatomic, strong) ASBasicImageDownloaderMetadata *asyncdisplaykit_metadata;
|
@property (nonatomic, strong) ASBasicImageDownloaderMetadata *asyncdisplaykit_metadata;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@implementation NSURLSessionTask (ASBasicImageDownloader)
|
@implementation NSURLRequest (ASBasicImageDownloader)
|
||||||
static const char *kMetadataKey = NSStringFromClass(ASBasicImageDownloaderMetadata.class).UTF8String;
|
static const char *kMetadataKey = NSStringFromClass(ASBasicImageDownloaderMetadata.class).UTF8String;
|
||||||
- (void)setAsyncdisplaykit_metadata:(ASBasicImageDownloaderMetadata *)asyncdisplaykit_metadata
|
- (void)setAsyncdisplaykit_metadata:(ASBasicImageDownloaderMetadata *)asyncdisplaykit_metadata
|
||||||
{
|
{
|
||||||
@ -85,14 +85,14 @@ static const char *kMetadataKey = NSStringFromClass(ASBasicImageDownloaderMetada
|
|||||||
completion:(void (^)(CGImageRef, NSError *))completion
|
completion:(void (^)(CGImageRef, NSError *))completion
|
||||||
{
|
{
|
||||||
// create download task
|
// create download task
|
||||||
NSURLSessionTask *task = [_session downloadTaskWithURL:URL];
|
NSURLSessionDownloadTask *task = [_session downloadTaskWithURL:URL];
|
||||||
|
|
||||||
// associate metadata with it
|
// associate metadata with it
|
||||||
ASBasicImageDownloaderMetadata *metadata = [[ASBasicImageDownloaderMetadata alloc] init];
|
ASBasicImageDownloaderMetadata *metadata = [[ASBasicImageDownloaderMetadata alloc] init];
|
||||||
metadata.callbackQueue = callbackQueue ?: dispatch_get_main_queue();
|
metadata.callbackQueue = callbackQueue ?: dispatch_get_main_queue();
|
||||||
metadata.downloadProgressBlock = downloadProgressBlock;
|
metadata.downloadProgressBlock = downloadProgressBlock;
|
||||||
metadata.completionBlock = completion;
|
metadata.completionBlock = completion;
|
||||||
task.asyncdisplaykit_metadata = metadata;
|
task.originalRequest.asyncdisplaykit_metadata = metadata;
|
||||||
|
|
||||||
// start downloading
|
// start downloading
|
||||||
[task resume];
|
[task resume];
|
||||||
@ -107,8 +107,8 @@ static const char *kMetadataKey = NSStringFromClass(ASBasicImageDownloaderMetada
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ASDisplayNodeAssert([downloadIdentifier isKindOfClass:NSURLSessionTask.class], @"unexpected downloadIdentifier");
|
ASDisplayNodeAssert([downloadIdentifier isKindOfClass:NSURLSessionDownloadTask.class], @"unexpected downloadIdentifier");
|
||||||
NSURLSessionTask *task = (NSURLSessionTask *)downloadIdentifier;
|
NSURLSessionDownloadTask *task = (NSURLSessionDownloadTask *)downloadIdentifier;
|
||||||
|
|
||||||
[task cancel];
|
[task cancel];
|
||||||
}
|
}
|
||||||
@ -121,7 +121,7 @@ static const char *kMetadataKey = NSStringFromClass(ASBasicImageDownloaderMetada
|
|||||||
totalBytesWritten:(int64_t)totalBytesWritten
|
totalBytesWritten:(int64_t)totalBytesWritten
|
||||||
totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
|
totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
|
||||||
{
|
{
|
||||||
ASBasicImageDownloaderMetadata *metadata = downloadTask.asyncdisplaykit_metadata;
|
ASBasicImageDownloaderMetadata *metadata = downloadTask.originalRequest.asyncdisplaykit_metadata;
|
||||||
if (metadata.downloadProgressBlock) {
|
if (metadata.downloadProgressBlock) {
|
||||||
metadata.downloadProgressBlock((CGFloat)totalBytesWritten / (CGFloat)totalBytesExpectedToWrite);
|
metadata.downloadProgressBlock((CGFloat)totalBytesWritten / (CGFloat)totalBytesExpectedToWrite);
|
||||||
}
|
}
|
||||||
@ -133,7 +133,7 @@ static const char *kMetadataKey = NSStringFromClass(ASBasicImageDownloaderMetada
|
|||||||
{
|
{
|
||||||
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:location]];
|
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:location]];
|
||||||
|
|
||||||
ASBasicImageDownloaderMetadata *metadata = downloadTask.asyncdisplaykit_metadata;
|
ASBasicImageDownloaderMetadata *metadata = downloadTask.originalRequest.asyncdisplaykit_metadata;
|
||||||
if (metadata.completionBlock) {
|
if (metadata.completionBlock) {
|
||||||
dispatch_async(metadata.callbackQueue, ^{
|
dispatch_async(metadata.callbackQueue, ^{
|
||||||
metadata.completionBlock(image.CGImage, nil);
|
metadata.completionBlock(image.CGImage, nil);
|
||||||
@ -142,10 +142,10 @@ static const char *kMetadataKey = NSStringFromClass(ASBasicImageDownloaderMetada
|
|||||||
}
|
}
|
||||||
|
|
||||||
// invoked unconditionally
|
// invoked unconditionally
|
||||||
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task
|
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionDownloadTask *)task
|
||||||
didCompleteWithError:(NSError *)error
|
didCompleteWithError:(NSError *)error
|
||||||
{
|
{
|
||||||
ASBasicImageDownloaderMetadata *metadata = task.asyncdisplaykit_metadata;
|
ASBasicImageDownloaderMetadata *metadata = task.originalRequest.asyncdisplaykit_metadata;
|
||||||
if (metadata && error) {
|
if (metadata && error) {
|
||||||
dispatch_async(metadata.callbackQueue, ^{
|
dispatch_async(metadata.callbackQueue, ^{
|
||||||
metadata.completionBlock(NULL, error);
|
metadata.completionBlock(NULL, error);
|
||||||
|
@ -311,6 +311,7 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
INFOPLIST_FILE = Sample/Info.plist;
|
INFOPLIST_FILE = Sample/Info.plist;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 7.1;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
};
|
};
|
||||||
@ -322,6 +323,7 @@
|
|||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
INFOPLIST_FILE = Sample/Info.plist;
|
INFOPLIST_FILE = Sample/Info.plist;
|
||||||
|
IPHONEOS_DEPLOYMENT_TARGET = 7.1;
|
||||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user