From 7428cacc1b36d0851defdcc80f8ea5e492a83495 Mon Sep 17 00:00:00 2001
From: AndrewShmig <andrewshmig@yandex.ru>
Date: Tue, 29 Jul 2014 11:36:39 +0400
Subject: [PATCH] refs #106

---
 Project/Project/ASAAppDelegate.m              |   3 +-
 .../VKStorage/VKStorage.m                     | 368 +++++++++---------
 Project/Vkontakte-iOS-SDK-LV/VKUser/VKUser.m  |  13 +-
 .../UserInterfaceState.xcuserstate            | Bin 88001 -> 59347 bytes
 4 files changed, 199 insertions(+), 185 deletions(-)

diff --git a/Project/Project/ASAAppDelegate.m b/Project/Project/ASAAppDelegate.m
index 20c221f..32c4716 100644
--- a/Project/Project/ASAAppDelegate.m
+++ b/Project/Project/ASAAppDelegate.m
@@ -33,6 +33,7 @@ - (BOOL)          application:(UIApplication *)application
 //                                    permissons:[kVKPermissionsArray componentsSeparatedByString:@","]
 //                                       webView:self.webView
 //                                      delegate:self];
+  
   _rm = [[VKRequestManager alloc] initWithDelegate:self];
   _rm.startAllRequestsImmediately = NO;
   
@@ -58,7 +59,7 @@ - (void)        connector:(VKConnector *)connector
   
   NSLog(@"Access token: %@", accessToken);
   
-//  _rm = [[VKRequestManager alloc] initWithDelegate:self];
+//  _rm = [[VKRequestManager alloc] initWithDelegate:self user:[VKUser currentUser]];
 //  _rm.startAllRequestsImmediately = NO;
 //  
 //  VKRequest *r = [_rm info:@{@"user_ids": @"christian.burns"}];
diff --git a/Project/Vkontakte-iOS-SDK-LV/VKStorage/VKStorage.m b/Project/Vkontakte-iOS-SDK-LV/VKStorage/VKStorage.m
index d4644b9..ef9b153 100644
--- a/Project/Vkontakte-iOS-SDK-LV/VKStorage/VKStorage.m
+++ b/Project/Vkontakte-iOS-SDK-LV/VKStorage/VKStorage.m
@@ -2,26 +2,26 @@
 // Created by AndrewShmig on 6/28/13.
 //
 // Copyright (c) 2013 Andrew Shmig
-// 
-// Permission is hereby granted, free of charge, to any person 
-// obtaining a copy of this software and associated documentation 
-// files (the "Software"), to deal in the Software without 
-// restriction, including without limitation the rights to use, 
-// copy, modify, merge, publish, distribute, sublicense, and/or 
+//
+// Permission is hereby granted, free of charge, to any person
+// obtaining a copy of this software and associated documentation
+// files (the "Software"), to deal in the Software without
+// restriction, including without limitation the rights to use,
+// copy, modify, merge, publish, distribute, sublicense, and/or
 // sell copies of the Software, and to permit persons to whom the
-// Software is furnished to do so, subject to the following 
+// Software is furnished to do so, subject to the following
 // conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
-// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
-// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE 
-// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 
-// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
+// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 //
 #import "VKStorage.h"
@@ -31,7 +31,7 @@
 
 @implementation VKStorage
 {
-    NSMutableDictionary *_storageItems;
+  NSMutableDictionary *_storageItems;
 }
 
 #pragma mark Visible VKStorage methods
@@ -39,238 +39,250 @@ @implementation VKStorage
 
 - (instancetype)init
 {
-    VK_LOG();
-
-    self = [super init];
-
-    if (self) {
-        _storageItems = [[NSMutableDictionary alloc] init];
-    }
-
-    return self;
+  VK_LOG();
+  
+  self = [super init];
+  
+  if (self) {
+    _storageItems = [[NSMutableDictionary alloc] init];
+  }
+  
+  return self;
 }
 
 #pragma mark - Shared storage
 
 + (instancetype)sharedStorage
 {
-    VK_LOG();
-
-    static VKStorage *sharedStorage;
-    static dispatch_once_t predicate;
-
-    dispatch_once(&predicate, ^
-    {
-        sharedStorage = [[[self class] alloc] init];
-
-//        проверим, если kVKStorageCachePath существует, если нет - создадим,
-//        а параллельно будет создан и kVKStoragePath
-        NSString *cacheStoragePath = [sharedStorage fullCacheStoragePath];
-
-        if (![[NSFileManager defaultManager]
-                             fileExistsAtPath:cacheStoragePath]) {
-
-            [[NSFileManager defaultManager]
-                            createDirectoryAtPath:cacheStoragePath
-                      withIntermediateDirectories:YES
-                                       attributes:nil
-                                            error:nil];
-        }
-    });
-
-    [sharedStorage loadStorage];
-
-    return sharedStorage;
+  VK_LOG();
+  
+  static VKStorage *sharedStorage;
+  static dispatch_once_t predicate;
+  
+  dispatch_once(&predicate, ^
+                {
+                  sharedStorage = [[[self class] alloc] init];
+                  
+                  //        проверим, если kVKStorageCachePath существует, если нет - создадим,
+                  //        а параллельно будет создан и kVKStoragePath
+                  NSString *cacheStoragePath = [sharedStorage fullCacheStoragePath];
+                  
+                  if (![[NSFileManager defaultManager]
+                        fileExistsAtPath:cacheStoragePath]) {
+                    
+                    [[NSFileManager defaultManager]
+                     createDirectoryAtPath:cacheStoragePath
+                     withIntermediateDirectories:YES
+                     attributes:nil
+                     error:nil];
+                  }
+                });
+  
+  [sharedStorage loadStorage];
+  
+  return sharedStorage;
 }
 
 #pragma mark - Getters
 
 - (BOOL)isEmpty
 {
-    VK_LOG();
-
-    return ([_storageItems count] == 0);
+  VK_LOG();
+  
+  return ([_storageItems count] == 0);
 }
 
 - (NSUInteger)count
 {
-    VK_LOG();
-
+  VK_LOG();
+  
+  // ghost-user не считаем за реального пользователя
+  if (nil != _storageItems[@0]) {
+    return [_storageItems count] - 1;
+  } else {
     return [_storageItems count];
+  }
 }
 
 - (VKStorageItem *)createStorageItemForAccessToken:(VKAccessToken *)token
 {
-    VK_LOG();
-
-    VKStorageItem *storageItem = [[VKStorageItem alloc]
-                                                 initWithAccessToken:token
-                                                mainCacheStoragePath:[self fullCacheStoragePath]];
-
-    return storageItem;
+  VK_LOG();
+  
+  VKStorageItem *storageItem = [[VKStorageItem alloc]
+                                initWithAccessToken:token
+                                mainCacheStoragePath:[self fullCacheStoragePath]];
+  
+  return storageItem;
 }
 
 - (NSArray *)storageItems
 {
-    VK_LOG();
-
-    return [_storageItems allValues];
+  VK_LOG();
+  
+  // возвращаем из хранилища только реальных пользователей
+  // без ghost user
+  NSMutableDictionary *items = [_storageItems copy];
+  
+  if (nil != items[@0])
+    items[@0] = nil;
+  
+  return [items allValues];
 }
 
 #pragma mark - Storage manipulation methods
 
 - (void)storeItem:(VKStorageItem *)item
 {
-    VK_LOG(@"%@", @{
-            @"item": item
-    });
-
-    if (nil == item || nil == item.accessToken || nil == item.cache)
-        return;
-
-//    удаляем данные предыдущей записи
-    [self removeItem:item];
-
-//    добавляем новые данные
-    id storageKey = @(item.accessToken.userID);
-    _storageItems[storageKey] = item;
-
-    [self saveStorage];
+  VK_LOG(@"%@", @{
+                  @"item": item
+                  });
+  
+  if (nil == item || nil == item.accessToken || nil == item.cache)
+    return;
+  
+  //    удаляем данные предыдущей записи
+  [self removeItem:item];
+  
+  //    добавляем новые данные
+  id storageKey = @(item.accessToken.userID);
+  _storageItems[storageKey] = item;
+  
+  [self saveStorage];
 }
 
 - (void)removeItem:(VKStorageItem *)item
 {
-    VK_LOG(@"%@", @{
-            @"item": item
-    });
-
-    id storageKey = @(item.accessToken.userID);
-
-    [item.cache removeCacheDirectory];
-    [_storageItems removeObjectForKey:storageKey];
-
-    [self saveStorage];
+  VK_LOG(@"%@", @{
+                  @"item": item
+                  });
+  
+  id storageKey = @(item.accessToken.userID);
+  
+  [item.cache removeCacheDirectory];
+  [_storageItems removeObjectForKey:storageKey];
+  
+  [self saveStorage];
 }
 
 - (void)clean
 {
-    VK_LOG();
-
-    [_storageItems removeAllObjects];
-    [self cleanCachedData];
-
-    [self saveStorage];
+  VK_LOG();
+  
+  [_storageItems removeAllObjects];
+  [self cleanCachedData];
+  
+  [self saveStorage];
 }
 
 - (void)cleanCachedData
 {
-    VK_LOG();
-
-    dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
-
-    dispatch_async(backgroundQueue, ^
-    {
-
-        [[NSFileManager defaultManager]
-                        removeItemAtPath:[self fullCacheStoragePath]
-                                   error:nil];
-
-        [[NSFileManager defaultManager]
-                        createDirectoryAtPath:[self fullCacheStoragePath]
-                  withIntermediateDirectories:YES
-                                   attributes:nil
-                                        error:nil];
-    });
+  VK_LOG();
+  
+  dispatch_queue_t backgroundQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
+  
+  dispatch_async(backgroundQueue, ^
+                 {
+                   
+                   [[NSFileManager defaultManager]
+                    removeItemAtPath:[self fullCacheStoragePath]
+                    error:nil];
+                   
+                   [[NSFileManager defaultManager]
+                    createDirectoryAtPath:[self fullCacheStoragePath]
+                    withIntermediateDirectories:YES
+                    attributes:nil
+                    error:nil];
+                 });
 }
 
 - (VKStorageItem *)storageItemForUserID:(NSUInteger)userID
 {
-    VK_LOG(@"%@", @{
-            @"userID": @(userID)
-    });
-
-    id storageKey = @(userID);
-    return _storageItems[storageKey];
+  VK_LOG(@"%@", @{
+                  @"userID": @(userID)
+                  });
+  
+  id storageKey = @(userID);
+  return _storageItems[storageKey];
 }
 
 - (VKStorageItem *)storageItemForUser:(VKUser *)user
 {
-    return [self storageItemForUserID:user.accessToken.userID];
+  return [self storageItemForUserID:user.accessToken.userID];
 }
 
 #pragma mark - Storage paths
 
 - (NSString *)fullStoragePath
 {
-    VK_LOG();
-
-    NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
-    return [cachePath stringByAppendingFormat:@"%@", kVKStoragePath];
+  VK_LOG();
+  
+  NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
+  return [cachePath stringByAppendingFormat:@"%@", kVKStoragePath];
 }
 
 - (NSString *)fullCacheStoragePath
 {
-    VK_LOG();
-
-    NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
-    return [cachePath stringByAppendingFormat:@"%@", kVKStorageCachePath];
+  VK_LOG();
+  
+  NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
+  return [cachePath stringByAppendingFormat:@"%@", kVKStorageCachePath];
 }
 
 #pragma mark - Storage hidden methods
 
 - (void)loadStorage
 {
-    VK_LOG();
-
-    NSDictionary *storageDefaults = [[NSUserDefaults standardUserDefaults]
-                                                     objectForKey:kVKStorageUserDefaultsKey];
-
-//    хранилище пустое, создаем
-    if (nil == storageDefaults) {
-        [[NSUserDefaults standardUserDefaults]
-                         setObject:@{}
-                            forKey:kVKStorageUserDefaultsKey];
-    } else {
-//        загрузка данных из хранилища
-        NSDictionary *storage = [[NSUserDefaults standardUserDefaults]
-                                                 objectForKey:kVKStorageUserDefaultsKey];
-
-        [storage enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop)
-        {
-            VKAccessToken *token = [NSKeyedUnarchiver unarchiveObjectWithData:obj];
-
-            VKStorageItem *storageItem = [[VKStorageItem alloc]
-                                                         initWithAccessToken:token
-                                                        mainCacheStoragePath:[self fullCacheStoragePath]];
-
-            _storageItems[@(token.userID)] = storageItem;
-        }];
-    }
+  VK_LOG();
+  
+  NSDictionary *storageDefaults = [[NSUserDefaults standardUserDefaults]
+                                   objectForKey:kVKStorageUserDefaultsKey];
+  
+  //    хранилище пустое, создаем
+  if (nil == storageDefaults) {
+    [[NSUserDefaults standardUserDefaults]
+     setObject:@{}
+     forKey:kVKStorageUserDefaultsKey];
+  } else {
+    //        загрузка данных из хранилища
+    NSDictionary *storage = [[NSUserDefaults standardUserDefaults]
+                             objectForKey:kVKStorageUserDefaultsKey];
+    
+    [storage enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop)
+     {
+       VKAccessToken *token = [NSKeyedUnarchiver unarchiveObjectWithData:obj];
+       
+       VKStorageItem *storageItem = [[VKStorageItem alloc]
+                                     initWithAccessToken:token
+                                     mainCacheStoragePath:[self fullCacheStoragePath]];
+       
+       _storageItems[@(token.userID)] = storageItem;
+     }];
+  }
 }
 
 - (void)saveStorage
 {
-    VK_LOG();
-
-//    сохраняем только данные токенов доступов
-//    данные кэшев мы сможем потом просто восстановить
-    NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
-    NSMutableDictionary *newStorage = [[NSMutableDictionary alloc] init];
-
-    [_storageItems enumerateKeysAndObjectsUsingBlock:^(id key,
-                                                       id obj,
-                                                       BOOL *stop)
-    {
-        VKAccessToken *token = [(VKStorageItem *) obj accessToken];
-
-        [newStorage setObject:[NSKeyedArchiver archivedDataWithRootObject:token]
-                       forKey:[NSString stringWithFormat:@"%d", token.userID]];
-    }];
-
-    [myDefaults setObject:newStorage
-                   forKey:kVKStorageUserDefaultsKey];
-
-    [myDefaults synchronize];
+  VK_LOG();
+  
+  //    сохраняем только данные токенов доступов
+  //    данные кэшев мы сможем потом просто восстановить
+  NSUserDefaults *myDefaults = [NSUserDefaults standardUserDefaults];
+  NSMutableDictionary *newStorage = [[NSMutableDictionary alloc] init];
+  
+  [_storageItems enumerateKeysAndObjectsUsingBlock:^(id key,
+                                                     id obj,
+                                                     BOOL *stop)
+   {
+     VKAccessToken *token = [(VKStorageItem *) obj accessToken];
+     
+     [newStorage setObject:[NSKeyedArchiver archivedDataWithRootObject:token]
+                    forKey:[NSString stringWithFormat:@"%d", token.userID]];
+   }];
+  
+  [myDefaults setObject:newStorage
+                 forKey:kVKStorageUserDefaultsKey];
+  
+  [myDefaults synchronize];
 }
 
 @end
\ No newline at end of file
diff --git a/Project/Vkontakte-iOS-SDK-LV/VKUser/VKUser.m b/Project/Vkontakte-iOS-SDK-LV/VKUser/VKUser.m
index d83bf68..489350e 100644
--- a/Project/Vkontakte-iOS-SDK-LV/VKUser/VKUser.m
+++ b/Project/Vkontakte-iOS-SDK-LV/VKUser/VKUser.m
@@ -95,22 +95,23 @@ + (instancetype)ghostUser {
     return _ghostUser;
   }
   
-  // проверим, если призрачный пользователь был ранее создан
   VKStorageItem *item = [[VKStorage sharedStorage] storageItemForUser:_ghostUser];
+  VKStorageItem *storageItem;
   
   if (nil == item) {
-    // пользователь не создан - создаем
     VKAccessToken *ghostUserAccessToken = [[VKAccessToken alloc] initWithUserID:kGhostUserID
                                                                     accessToken:@""];
     
     // сохраняем токен доступа в хранилище
-    VKStorageItem *storageItem = [[VKStorage sharedStorage]
-                                  createStorageItemForAccessToken:ghostUserAccessToken];
+    storageItem = [[VKStorage sharedStorage]
+                   createStorageItemForAccessToken:ghostUserAccessToken];
     [[VKStorage sharedStorage] storeItem:storageItem];
-    
-    _ghostUser = [[VKUser alloc] initWithStorageItem:storageItem];
+  } else {
+    storageItem = [[VKStorage sharedStorage] storageItemForUser:kGhostUserID];
   }
   
+  _ghostUser = [[VKUser alloc] initWithStorageItem:storageItem];
+  
   return _ghostUser;
 }
 
diff --git a/Vkontakte-iOS-SDK-LV-Workspace.xcworkspace/xcuserdata/new.xcuserdatad/UserInterfaceState.xcuserstate b/Vkontakte-iOS-SDK-LV-Workspace.xcworkspace/xcuserdata/new.xcuserdatad/UserInterfaceState.xcuserstate
index 8d2d2ffe7916842466e0582157c6879b26b0eb22..ff80110ad1dba6dbc043fc713ab0b830af8e0687 100644
GIT binary patch
delta 15655
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
NZ*2eF@$+2k{{u*Z=&}F+

delta 20917
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