aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/objc/imap/MCOCheckAccountOperation.h1
-rw-r--r--src/objc/imap/MCOCheckAccountOperation.mm11
-rw-r--r--src/objc/imap/MCOFetchFoldersOperation.h2
-rw-r--r--src/objc/imap/MCOFetchFoldersOperation.mm14
-rw-r--r--src/objc/imap/MCOIMAPSession.h4
-rw-r--r--src/objc/imap/MCOIMAPSession.mm8
-rw-r--r--src/objc/imap/MCOOperation+Internals.h1
-rw-r--r--src/objc/imap/MCOOperation.h6
-rw-r--r--tests/main.mm13
9 files changed, 37 insertions, 23 deletions
diff --git a/src/objc/imap/MCOCheckAccountOperation.h b/src/objc/imap/MCOCheckAccountOperation.h
index 340eb4fc..9e66f013 100644
--- a/src/objc/imap/MCOCheckAccountOperation.h
+++ b/src/objc/imap/MCOCheckAccountOperation.h
@@ -9,4 +9,5 @@
#import <mailcore/MCOOperation.h>
@interface MCOCheckAccountOperation : MCOOperation
+- (void)start:(void (^)(NSError *error))completionBlock;
@end
diff --git a/src/objc/imap/MCOCheckAccountOperation.mm b/src/objc/imap/MCOCheckAccountOperation.mm
index 2c3c2239..47ea0fc8 100644
--- a/src/objc/imap/MCOCheckAccountOperation.mm
+++ b/src/objc/imap/MCOCheckAccountOperation.mm
@@ -14,12 +14,21 @@
using namespace mailcore;
+@interface MCOCheckAccountOperation ()
+@property (nonatomic, copy) void (^completionBlock)(NSError *error);
+@end
+
@implementation MCOCheckAccountOperation
+- (void)start:(void (^)(NSError *error))completionBlock {
+ self.completionBlock = completionBlock;
+ [self start];
+}
+
- (void)operationCompleted {
IMAPOperation *op = dynamic_cast<IMAPOperation *>(self.operation);
NSError *error = [NSError mco_errorWithErrorCode:op->error()];
- self.completionBlock(error, self, nil); // No data to return
+ self.completionBlock(error);
}
@end
diff --git a/src/objc/imap/MCOFetchFoldersOperation.h b/src/objc/imap/MCOFetchFoldersOperation.h
index 67a23214..747ca162 100644
--- a/src/objc/imap/MCOFetchFoldersOperation.h
+++ b/src/objc/imap/MCOFetchFoldersOperation.h
@@ -9,5 +9,5 @@
#import <mailcore/MCOOperation.h>
@interface MCOFetchFoldersOperation : MCOOperation
-
+- (void)start:(void (^)(NSError *error, NSArray *folder))completionBlock;
@end
diff --git a/src/objc/imap/MCOFetchFoldersOperation.mm b/src/objc/imap/MCOFetchFoldersOperation.mm
index 2418666b..8189d294 100644
--- a/src/objc/imap/MCOFetchFoldersOperation.mm
+++ b/src/objc/imap/MCOFetchFoldersOperation.mm
@@ -16,7 +16,17 @@
using namespace mailcore;
+@interface MCOFetchFoldersOperation ()
+@property (nonatomic, copy) void (^completionBlock)(NSError *error, NSArray *folder);
+@end
+
@implementation MCOFetchFoldersOperation
+
+- (void)start:(void (^)(NSError *error, NSArray *folder))completionBlock {
+ self.completionBlock = completionBlock;
+ [self start];
+}
+
- (void)operationCompleted {
IMAPFetchFoldersOperation *op = dynamic_cast<IMAPFetchFoldersOperation *>(self.operation);
if (op->error() == ErrorNone) {
@@ -27,9 +37,9 @@ using namespace mailcore;
[nsfolders addObject:folder];
}
- self.completionBlock(nil, self, nsfolders);
+ self.completionBlock(nil, nsfolders);
} else {
- self.completionBlock([NSError mco_errorWithErrorCode:op->error()], self, nil);
+ self.completionBlock([NSError mco_errorWithErrorCode:op->error()], nil);
}
}
@end
diff --git a/src/objc/imap/MCOIMAPSession.h b/src/objc/imap/MCOIMAPSession.h
index ab4a0863..538becec 100644
--- a/src/objc/imap/MCOIMAPSession.h
+++ b/src/objc/imap/MCOIMAPSession.h
@@ -26,6 +26,6 @@
@property (nonatomic, assign) BOOL VoIPEnabled;
@property (nonatomic, strong) NSString *delimiter;
-- (MCOCheckAccountOperation *)checkAccount:(MCOCompletionBlock)completionBlock;
-- (MCOFetchFoldersOperation *)fetchAllFolders:(MCOCompletionBlock)completionBlock;
+- (MCOCheckAccountOperation *)checkAccountOperation;
+- (MCOFetchFoldersOperation *)fetchAllFoldersOperation;
@end
diff --git a/src/objc/imap/MCOIMAPSession.mm b/src/objc/imap/MCOIMAPSession.mm
index c01c6a87..9139f077 100644
--- a/src/objc/imap/MCOIMAPSession.mm
+++ b/src/objc/imap/MCOIMAPSession.mm
@@ -120,20 +120,16 @@ using namespace mailcore;
#pragma mark - Operations
-- (MCOCheckAccountOperation *)checkAccount:(MCOCompletionBlock)completionBlock {
+- (MCOCheckAccountOperation *)checkAccountOperation {
IMAPOperation *coreOp = self.session->checkAccountOperation();
MCOCheckAccountOperation *op = [[MCOCheckAccountOperation alloc] initWithOperation:coreOp];
- op.completionBlock = completionBlock;
- [op start];
return [op autorelease];
}
-- (MCOFetchFoldersOperation *)fetchAllFolders:(MCOCompletionBlock)completionBlock {
+- (MCOFetchFoldersOperation *)fetchAllFoldersOperation {
IMAPOperation *coreOp = self.session->fetchAllFoldersOperation();
MCOFetchFoldersOperation *op = [[MCOFetchFoldersOperation alloc] initWithOperation:coreOp];
- op.completionBlock = completionBlock;
- [op start];
return [op autorelease];
}
diff --git a/src/objc/imap/MCOOperation+Internals.h b/src/objc/imap/MCOOperation+Internals.h
index 3f12338d..58b10559 100644
--- a/src/objc/imap/MCOOperation+Internals.h
+++ b/src/objc/imap/MCOOperation+Internals.h
@@ -14,4 +14,5 @@
@interface MCOOperation ()
- (id)initWithOperation:(mailcore::Operation *)op;
- (mailcore::Operation *)operation;
+- (void)start;
@end \ No newline at end of file
diff --git a/src/objc/imap/MCOOperation.h b/src/objc/imap/MCOOperation.h
index bd13a343..deafa165 100644
--- a/src/objc/imap/MCOOperation.h
+++ b/src/objc/imap/MCOOperation.h
@@ -8,14 +8,8 @@
#import <Foundation/Foundation.h>
-@class MCOOperation;
-
-typedef void (^MCOCompletionBlock)(NSError *error, MCOOperation *op, id response);
-
@interface MCOOperation : NSObject
-@property (copy) MCOCompletionBlock completionBlock;
@property (readonly) BOOL isCancelled;
- (void)cancel;
-- (void)start;
@end
diff --git a/tests/main.mm b/tests/main.mm
index 87f44fa4..a47bf2a7 100644
--- a/tests/main.mm
+++ b/tests/main.mm
@@ -12,6 +12,7 @@
#include <unicode/uclean.h>
#include <unicode/ucnv.h>
#include <mailcore/mailcore.h>
+#import "MCOFetchFoldersOperation.h"
extern "C" {
extern int mailstream_debug;
@@ -279,24 +280,26 @@ void testObjc()
session.port = 993;
session.connectionType = MCOConnectionTypeTLS;
- [session checkAccount:^(NSError *err, MCOOperation *op, id response) {
+ MCOCheckAccountOperation *checkOp = [session checkAccountOperation];
+ [checkOp start:^(NSError *err) {
if (err) {
NSLog(@"Oh crap, an error %@", err);
} else {
NSLog(@"CONNECTED");
}
}];
-
- [session fetchAllFolders:^(NSError *err, MCOOperation *op, id response) {
+
+ MCOFetchFoldersOperation *foldersOp = [session fetchAllFoldersOperation];
+ [foldersOp start:^(NSError *err, NSArray *folders) {
if (err) {
NSLog(@"Oh crap, an error %@", err);
} else {
- NSLog(@"Folder %@", response);
+ NSLog(@"Folder %@", folders);
}
}];
[[NSRunLoop currentRunLoop] run];
- [session release];
+ [session autorelease];
}