Skip to content

Instantly share code, notes, and snippets.

@dinhvh
Created May 12, 2013 05:04
Show Gist options
  • Save dinhvh/5562491 to your computer and use it in GitHub Desktop.
Save dinhvh/5562491 to your computer and use it in GitHub Desktop.
- (NSURLRequest *)webView:(UIWebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(id)dataSource
{
MCOAbstractPart * part = NULL;
if ([[[request URL] scheme] isEqualToString:@"x-mailcore-msgviewloaded"]) {
[self _loadImages];
return request;
}
if ([MCOCIDURLProtocol isCID:[request URL]]) {
part = [self _partForCIDURL:[request URL]];
}
else if ([MCOCIDURLProtocol isXMailcoreImage:[ request URL]]) {
NSString * specifier = [[request URL] resourceSpecifier];
NSString * partUniqueID = specifier;
part = [self _partForUniqueID:partUniqueID];
}
if (part != NULL) {
if ([_message isKindOfClass:[MCOIMAPMessage class]]) {
NSMutableURLRequest * mutableRequest = [request mutableCopy];
NSString * partUniqueID = [part uniqueID];
NSData * data = [[self delegate] MCOMessageView:self dataForPartWithUniqueID:partUniqueID];
if (data == NULL) {
[[self delegate] MCOMessageView:self fetchDataForPartWithUniqueID:partUniqueID downloadedFinished:^(NSError * error) {
NSData * downloadedData = [[self delegate] MCOMessageView:self dataForPartWithUniqueID:partUniqueID];
NSData * previewData = [[self delegate] MCOMessageView:self previewForData:downloadedData isHTMLInlineImage:[MCOCIDURLProtocol isCID:[request URL]]];
[MCOCIDURLProtocol partDownloadedMessage:_message partUniqueID:partUniqueID data:previewData];
}];
}
[MCOCIDURLProtocol startLoadingWithMessage:_message
partUniqueID:partUniqueID
data:data
request:mutableRequest];
return mutableRequest;
}
else if ([_message isKindOfClass:[MCOMessageParser class]]) {
NSMutableURLRequest * mutableRequest = [request mutableCopy];
NSString * partUniqueID = [part uniqueID];
NSData * data = [(MCOAttachment *) part data];
NSData * previewData = [[self delegate] MCOMessageView:self previewForData:data isHTMLInlineImage:[MCOCIDURLProtocol isCID:[request URL]]];
[MCOCIDURLProtocol startLoadingWithMessage:_message
partUniqueID:partUniqueID
data:previewData
request:mutableRequest];
return mutableRequest;
}
else {
return request;
}
}
else {
return request;
}
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSURLRequest *responseRequest = [self webView:webView resource:nil willSendRequest:request redirectResponse:nil fromDataSource:nil];
//NSLog(@"responseRequest:%@", responseRequest);
if(responseRequest == request) {
return YES;
} else {
[webView loadRequest:responseRequest];
return NO;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment