| Index: pkg/immi_samples/lib/ios/ImmiSamples/ImagePresenter.mm
|
| diff --git a/pkg/immi_samples/lib/ios/ImmiSamples/ImagePresenter.mm b/pkg/immi_samples/lib/ios/ImmiSamples/ImagePresenter.mm
|
| deleted file mode 100644
|
| index 8d50e951a72e86b7df13da53316deb72ded1145b..0000000000000000000000000000000000000000
|
| --- a/pkg/immi_samples/lib/ios/ImmiSamples/ImagePresenter.mm
|
| +++ /dev/null
|
| @@ -1,82 +0,0 @@
|
| -// Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
|
| -// for details. All rights reserved. Use of this source code is governed by a
|
| -// BSD-style license that can be found in the LICENSE.md file.
|
| -
|
| -#import "ImagePresenter.h"
|
| -
|
| -@interface ImagePresenter ()
|
| -@property id<ImageCache> imageCache;
|
| -@end
|
| -
|
| -@implementation ImagePresenter
|
| -
|
| -- (void)setCache:(id<ImageCache>)cache {
|
| - self.imageCache = cache;
|
| -}
|
| -
|
| -- (void)setDefaultImage:(UIImage*)defaultImage {
|
| - self.image = defaultImage;
|
| -}
|
| -
|
| -- (void)presentImageFromData:(NSData*) imageData {
|
| - self.image = [UIImage imageWithData:imageData];
|
| -}
|
| -
|
| -- (void)patchImage:(ImagePatch*)patch {
|
| - if (patch.url.changed) {
|
| - [self performSelectorOnMainThread:@selector(loadImageFromUrl:)
|
| - withObject:patch.url.current
|
| - waitUntilDone:NO];
|
| - }
|
| -}
|
| -
|
| -- (void)presentImage:(ImageNode*)node {
|
| - [self performSelectorOnMainThread:@selector(loadImageFromUrl:)
|
| - withObject:node.url
|
| - waitUntilDone:NO];
|
| -}
|
| -
|
| -- (void)loadImageFromUrl:(NSString*)url {
|
| - assert(NSThread.isMainThread);
|
| -
|
| - if (self.imageCache == nil) {
|
| - dispatch_async(dispatch_get_global_queue(0, 0), ^{
|
| - NSData* imageData =
|
| - [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]];
|
| - [self presentImageFromData:imageData];
|
| - });
|
| - } else {
|
| - id cachedImage = [self.imageCache get:url];
|
| - if (cachedImage != nil) {
|
| - if ([cachedImage isKindOfClass:NSMutableArray.class]) {
|
| - [cachedImage addObject:self];
|
| - } else {
|
| - [self presentImageFromData:cachedImage];
|
| - }
|
| - } else {
|
| - NSMutableArray* waitingImages = [[NSMutableArray alloc] init];
|
| - [waitingImages addObject:self];
|
| - [self.imageCache put:url value:waitingImages];
|
| -
|
| - dispatch_async(dispatch_get_global_queue(0, 0), ^{
|
| - NSData* imageData =
|
| - [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:url]];
|
| -
|
| - if (imageData == nil) return;
|
| -
|
| - dispatch_async(dispatch_get_main_queue(), ^{
|
| - NSMutableArray* queue = [self.imageCache get:url];
|
| - [self.imageCache put:url value:imageData];
|
| -
|
| - [queue enumerateObjectsUsingBlock:^(ImagePresenter* imagePresenter,
|
| - NSUInteger idx,
|
| - BOOL* stop) {
|
| - [imagePresenter presentImageFromData:imageData];
|
| - }];
|
| - });
|
| - });
|
| - }
|
| - }
|
| -}
|
| -
|
| -@end
|
|
|