From 14d07663f02af26b66bb7952c178b2a909cae3be Mon Sep 17 00:00:00 2001
From: root <root@poldi.hopto.org>
Date: Tue, 21 Jul 2015 20:53:30 +0200
Subject: [PATCH 19/19] cacheImapFolderGUIDS

---
 ActiveSync/SOGoActiveSyncDispatcher+Sync.m |    4 ++--
 ActiveSync/SOGoActiveSyncDispatcher.h      |    1 +
 ActiveSync/SOGoActiveSyncDispatcher.m      |   26 ++++++++++++++++----------
 3 files changed, 19 insertions(+), 12 deletions(-)

diff --git a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m
index f91d0cb..52c9377 100644
--- a/ActiveSync/SOGoActiveSyncDispatcher+Sync.m
+++ b/ActiveSync/SOGoActiveSyncDispatcher+Sync.m
@@ -229,7 +229,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   NSString  *nameInCache;
   
   if (theFolderType == ActiveSyncMailFolder)
-    nameInCache= [[[theCollection mailAccountFolder] imapFolderGUIDs] objectForKey: [theCollection nameInContainer]];
+    nameInCache = [imapFolderGUIDS objectForKey: [theCollection nameInContainer]];
   else
     {
       NSString  *component_name;
@@ -240,7 +240,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
       else
         component_name = @"vtodo";
       
-      nameInCache= [NSString stringWithFormat: @"%@/%@", component_name, [theCollection nameInContainer]];
+      nameInCache = [NSString stringWithFormat: @"%@/%@", component_name, [theCollection nameInContainer]];
     }
   
   return nameInCache;
diff --git a/ActiveSync/SOGoActiveSyncDispatcher.h b/ActiveSync/SOGoActiveSyncDispatcher.h
index 47c9c9c..3a62e80 100644
--- a/ActiveSync/SOGoActiveSyncDispatcher.h
+++ b/ActiveSync/SOGoActiveSyncDispatcher.h
@@ -37,6 +37,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 @interface SOGoActiveSyncDispatcher : NSObject
 {
   NSURL *folderTableURL;
+  NSDictionary *imapFolderGUIDS;
   id context;
   BOOL debugOn;
 }
diff --git a/ActiveSync/SOGoActiveSyncDispatcher.m b/ActiveSync/SOGoActiveSyncDispatcher.m
index 40b1b2d..4fc97d8 100644
--- a/ActiveSync/SOGoActiveSyncDispatcher.m
+++ b/ActiveSync/SOGoActiveSyncDispatcher.m
@@ -151,12 +151,14 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
   debugOn = [[SOGoSystemDefaults sharedSystemDefaults] easDebugEnabled];
   folderTableURL = nil;
+  imapFolderGUIDS = nil;
   return self;
 }
 
 - (void) dealloc
 {
   RELEASE(folderTableURL);
+  RELEASE(imapFolderGUIDS);
   [super dealloc];
 }
 
@@ -229,23 +231,27 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
       SOGoMailAccounts *accountsFolder;
       SOGoMailAccount *accountFolder;
       SOGoUserFolder *userFolder;
-      NSDictionary *imapGUIDs;
 
-      userFolder = [[context activeUser] homeFolderInContext: context];
-      accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO];
-      accountFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO];
-      
-      // Get the GUID of the IMAP folder
-      imapGUIDs = [accountFolder imapFolderGUIDs];
-      
-      //return [[imapGUIDs allKeysForObject: theIdToTranslate] objectAtIndex: 0];
-      return [[[imapGUIDs allKeysForObject:  [NSString stringWithFormat: @"folder%@", theIdToTranslate]] objectAtIndex: 0] substringFromIndex: 6] ;
+      if (!imapFolderGUIDS)
+        {
+          userFolder = [[context activeUser] homeFolderInContext: context];
+          accountsFolder = [userFolder lookupName: @"Mail" inContext: context acquire: NO];
+          accountFolder = [accountsFolder lookupName: @"0" inContext: context acquire: NO];
+
+          // Get the GUID of the IMAP folder
+          imapFolderGUIDS = [accountFolder imapFolderGUIDs];
+          [imapFolderGUIDS retain];
+
+        }
+
+        return [[[imapFolderGUIDS allKeysForObject:  [NSString stringWithFormat: @"folder%@", theIdToTranslate]] objectAtIndex: 0] substringFromIndex: 6] ;
     }
   
   return theIdToTranslate;
 }
 
 
+
 //
 //
 //
-- 
1.7.10.4

