LookinHierarchyInfo.m 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. #ifdef SHOULD_COMPILE_LOOKIN_SERVER
  2. //
  3. // LookinDisplayInfo.m
  4. // WeRead
  5. //
  6. // Created by Li Kai on 2018/10/22.
  7. // Copyright © 2018年 tencent. All rights reserved.
  8. //
  9. #import <objc/runtime.h>
  10. #import "LookinHierarchyInfo.h"
  11. #import "LookinAttributesGroup.h"
  12. #import "LookinDisplayItem.h"
  13. #import "LookinAppInfo.h"
  14. #import "NSArray+Lookin.h"
  15. #import "NSString+Lookin.h"
  16. #if TARGET_OS_IPHONE
  17. #import "LKS_HierarchyDisplayItemsMaker.h"
  18. #import "LKSConfigManager.h"
  19. #import "LKS_CustomAttrSetterManager.h"
  20. #endif
  21. @implementation LookinHierarchyInfo
  22. #if TARGET_OS_IPHONE
  23. + (instancetype)staticInfoWithLookinVersion:(NSString *)version {
  24. BOOL readCustomInfo = NO;
  25. // Client 1.0.4 开始支持 customInfo
  26. if (version && [version lookin_numbericOSVersion] >= 10004) {
  27. readCustomInfo = YES;
  28. }
  29. [[LKS_CustomAttrSetterManager sharedInstance] removeAll];
  30. LookinHierarchyInfo *info = [LookinHierarchyInfo new];
  31. info.serverVersion = LOOKIN_SERVER_VERSION;
  32. info.displayItems = [LKS_HierarchyDisplayItemsMaker itemsWithScreenshots:NO attrList:NO lowImageQuality:NO readCustomInfo:readCustomInfo saveCustomSetter:YES];
  33. info.appInfo = [LookinAppInfo currentInfoWithScreenshot:NO icon:YES localIdentifiers:nil];
  34. info.collapsedClassList = [LKSConfigManager collapsedClassList];
  35. info.colorAlias = [LKSConfigManager colorAlias];
  36. return info;
  37. }
  38. + (instancetype)exportedInfo {
  39. LookinHierarchyInfo *info = [LookinHierarchyInfo new];
  40. info.serverVersion = LOOKIN_SERVER_VERSION;
  41. info.displayItems = [LKS_HierarchyDisplayItemsMaker itemsWithScreenshots:YES attrList:YES lowImageQuality:YES readCustomInfo:YES saveCustomSetter:NO];
  42. info.appInfo = [LookinAppInfo currentInfoWithScreenshot:NO icon:YES localIdentifiers:nil];
  43. info.collapsedClassList = [LKSConfigManager collapsedClassList];
  44. info.colorAlias = [LKSConfigManager colorAlias];
  45. return info;
  46. }
  47. #endif
  48. #pragma mark - <NSSecureCoding>
  49. static NSString * const LookinHierarchyInfoCodingKey_DisplayItems = @"1";
  50. static NSString * const LookinHierarchyInfoCodingKey_AppInfo = @"2";
  51. static NSString * const LookinHierarchyInfoCodingKey_ColorAlias = @"3";
  52. static NSString * const LookinHierarchyInfoCodingKey_CollapsedClassList = @"4";
  53. - (void)encodeWithCoder:(NSCoder *)aCoder {
  54. [aCoder encodeObject:self.displayItems forKey:LookinHierarchyInfoCodingKey_DisplayItems];
  55. [aCoder encodeObject:self.colorAlias forKey:LookinHierarchyInfoCodingKey_ColorAlias];
  56. [aCoder encodeObject:self.collapsedClassList forKey:LookinHierarchyInfoCodingKey_CollapsedClassList];
  57. [aCoder encodeObject:self.appInfo forKey:LookinHierarchyInfoCodingKey_AppInfo];
  58. [aCoder encodeInt:self.serverVersion forKey:@"serverVersion"];
  59. }
  60. - (instancetype)initWithCoder:(NSCoder *)aDecoder {
  61. if (self = [super init]) {
  62. self.displayItems = [aDecoder decodeObjectForKey:LookinHierarchyInfoCodingKey_DisplayItems];
  63. self.colorAlias = [aDecoder decodeObjectForKey:LookinHierarchyInfoCodingKey_ColorAlias];
  64. self.collapsedClassList = [aDecoder decodeObjectForKey:LookinHierarchyInfoCodingKey_CollapsedClassList];
  65. self.appInfo = [aDecoder decodeObjectForKey:LookinHierarchyInfoCodingKey_AppInfo];
  66. self.serverVersion = [aDecoder decodeIntForKey:@"serverVersion"];
  67. }
  68. return self;
  69. }
  70. + (BOOL)supportsSecureCoding {
  71. return YES;
  72. }
  73. #pragma mark - <NSCopying>
  74. - (id)copyWithZone:(NSZone *)zone {
  75. LookinHierarchyInfo *newAppInfo = [[LookinHierarchyInfo allocWithZone:zone] init];
  76. newAppInfo.serverVersion = self.serverVersion;
  77. newAppInfo.appInfo = self.appInfo.copy;
  78. newAppInfo.collapsedClassList = self.collapsedClassList;
  79. newAppInfo.colorAlias = self.colorAlias;
  80. newAppInfo.displayItems = [self.displayItems lookin_map:^id(NSUInteger idx, LookinDisplayItem *oldItem) {
  81. return oldItem.copy;
  82. }];
  83. return newAppInfo;
  84. }
  85. @end
  86. #endif /* SHOULD_COMPILE_LOOKIN_SERVER */