motion-yapper 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (296) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -2
  3. data/.travis.yml +2 -0
  4. data/Gemfile +1 -0
  5. data/README.md +1 -1
  6. data/Rakefile +1 -1
  7. data/lib/motion-yapper.rb +1 -0
  8. data/lib/yapper.rb +3 -5
  9. data/lib/yapper/config.rb +2 -0
  10. data/lib/yapper/db.rb +105 -40
  11. data/lib/yapper/document.rb +7 -4
  12. data/lib/yapper/document/callbacks.rb +0 -7
  13. data/lib/yapper/document/{persistance.rb → persistence.rb} +27 -21
  14. data/lib/yapper/document/relation.rb +29 -22
  15. data/lib/yapper/document/selection.rb +122 -54
  16. data/lib/yapper/extensions.rb +12 -24
  17. data/lib/yapper/settings.rb +43 -0
  18. data/lib/yapper/timestamps.rb +2 -0
  19. data/lib/yapper/version.rb +1 -1
  20. data/{yapper.gemspec → motion-yapper.gemspec} +0 -0
  21. data/spec/integration/{where_spec.rb → criteria_spec.rb} +78 -10
  22. data/spec/integration/db_spec.rb +70 -0
  23. data/spec/integration/defaults_spec.rb +37 -0
  24. data/spec/integration/extensions_spec.rb +14 -0
  25. data/spec/integration/{persistance_spec.rb → persistence_spec.rb} +0 -0
  26. data/spec/integration/relation_spec.rb +4 -4
  27. data/vendor/Podfile.lock +9 -11
  28. data/vendor/Pods/.build/libPods-CocoaLumberjack.a +0 -0
  29. data/vendor/Pods/.build/libPods-NSData+MD5Digest.a +0 -0
  30. data/vendor/Pods/.build/libPods-YapDatabase.a +0 -0
  31. data/vendor/Pods/.build/libPods.a +0 -0
  32. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDASLLogger.h +4 -4
  33. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDAbstractDatabaseLogger.h +14 -14
  34. data/vendor/Pods/{CocoaLumberjack/Lumberjack/Extensions/ContextFilterLogFormatter.h → BuildHeaders/CocoaLumberjack/DDContextFilterLogFormatter.h} +6 -8
  35. data/vendor/Pods/BuildHeaders/CocoaLumberjack/{DispatchQueueLogFormatter.h → DDDispatchQueueLogFormatter.h} +18 -6
  36. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDFileLogger.h +67 -32
  37. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDLog+LOGV.h +99 -0
  38. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDLog.h +98 -65
  39. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDMultiFormatter.h +30 -0
  40. data/vendor/Pods/BuildHeaders/CocoaLumberjack/DDTTYLogger.h +39 -25
  41. data/vendor/Pods/BuildHeaders/YapDatabase/NSDictionary+YapDatabase.h +8 -0
  42. data/vendor/Pods/BuildHeaders/YapDatabase/YapCache.h +1 -0
  43. data/vendor/Pods/BuildHeaders/YapDatabase/YapCollectionKey.h +3 -0
  44. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabase.h +4 -4
  45. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseConnection.h +21 -19
  46. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseDefaults.h +1 -1
  47. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseExtensionPrivate.h +35 -31
  48. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredView.h +8 -35
  49. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewPrivate.h +0 -2
  50. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewTransaction.h +17 -17
  51. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFilteredViewTypes.h +32 -0
  52. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseFullTextSearchPrivate.h +8 -0
  53. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabasePrivate.h +43 -21
  54. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationship.h +35 -0
  55. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipConnection.h +29 -0
  56. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipEdge.h +163 -0
  57. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipEdgePrivate.h +79 -0
  58. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipNode.h +99 -0
  59. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipOptions.h +59 -0
  60. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipPrivate.h +125 -0
  61. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseRelationshipTransaction.h +384 -0
  62. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndex.h +49 -0
  63. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexPrivate.h +10 -0
  64. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseSecondaryIndexSetupPrivate.h +18 -0
  65. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseTransaction.h +131 -21
  66. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseView.h +48 -107
  67. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewChange.h +2 -2
  68. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewConnection.h +1 -0
  69. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewMappings.h +17 -0
  70. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewOptions.h +10 -3
  71. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewPrivate.h +18 -1
  72. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewTransaction.h +75 -24
  73. data/vendor/Pods/BuildHeaders/YapDatabase/YapDatabaseViewTypes.h +99 -0
  74. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.h +4 -4
  75. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDASLLogger.m +51 -50
  76. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.h +14 -14
  77. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDAbstractDatabaseLogger.m +546 -546
  78. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.h +67 -32
  79. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDFileLogger.m +1093 -907
  80. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog+LOGV.h +99 -0
  81. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.h +98 -65
  82. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDLog.m +873 -748
  83. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.h +39 -25
  84. data/vendor/Pods/CocoaLumberjack/Lumberjack/DDTTYLogger.m +1284 -1243
  85. data/vendor/Pods/{BuildHeaders/CocoaLumberjack/ContextFilterLogFormatter.h → CocoaLumberjack/Lumberjack/Extensions/DDContextFilterLogFormatter.h} +6 -8
  86. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/{ContextFilterLogFormatter.m → DDContextFilterLogFormatter.m} +70 -70
  87. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/{DispatchQueueLogFormatter.h → DDDispatchQueueLogFormatter.h} +18 -6
  88. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDDispatchQueueLogFormatter.m +253 -0
  89. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDMultiFormatter.h +30 -0
  90. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DDMultiFormatter.m +127 -0
  91. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/README.txt +1 -1
  92. data/vendor/Pods/CocoaLumberjack/README.markdown +52 -15
  93. data/vendor/Pods/Headers/CocoaLumberjack/DDASLLogger.h +4 -4
  94. data/vendor/Pods/Headers/CocoaLumberjack/DDAbstractDatabaseLogger.h +14 -14
  95. data/vendor/Pods/Headers/CocoaLumberjack/{ContextFilterLogFormatter.h → DDContextFilterLogFormatter.h} +6 -8
  96. data/vendor/Pods/Headers/CocoaLumberjack/{DispatchQueueLogFormatter.h → DDDispatchQueueLogFormatter.h} +18 -6
  97. data/vendor/Pods/Headers/CocoaLumberjack/DDFileLogger.h +67 -32
  98. data/vendor/Pods/Headers/CocoaLumberjack/DDLog+LOGV.h +99 -0
  99. data/vendor/Pods/Headers/CocoaLumberjack/DDLog.h +98 -65
  100. data/vendor/Pods/Headers/CocoaLumberjack/DDMultiFormatter.h +30 -0
  101. data/vendor/Pods/Headers/CocoaLumberjack/DDTTYLogger.h +39 -25
  102. data/vendor/Pods/Headers/YapDatabase/YapCollectionKey.h +3 -0
  103. data/vendor/Pods/Headers/YapDatabase/YapDatabase.h +4 -4
  104. data/vendor/Pods/Headers/YapDatabase/YapDatabaseConnection.h +21 -19
  105. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredView.h +8 -35
  106. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewTransaction.h +17 -17
  107. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewTypes.h +32 -0
  108. data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationship.h +35 -0
  109. data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipConnection.h +29 -0
  110. data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipEdge.h +163 -0
  111. data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipNode.h +99 -0
  112. data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipOptions.h +59 -0
  113. data/vendor/Pods/Headers/YapDatabase/YapDatabaseRelationshipTransaction.h +384 -0
  114. data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndex.h +49 -0
  115. data/vendor/Pods/Headers/YapDatabase/YapDatabaseTransaction.h +131 -21
  116. data/vendor/Pods/Headers/YapDatabase/YapDatabaseView.h +48 -107
  117. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewChange.h +2 -2
  118. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewConnection.h +1 -0
  119. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewMappings.h +17 -0
  120. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewOptions.h +10 -3
  121. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewTransaction.h +75 -24
  122. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewTypes.h +99 -0
  123. data/vendor/Pods/Headers/____Pods-CocoaLumberjack-prefix.h +2 -0
  124. data/vendor/Pods/Headers/____Pods-environment.h +15 -15
  125. data/vendor/Pods/Manifest.lock +9 -11
  126. data/vendor/Pods/Pods-CocoaLumberjack-Private.xcconfig +1 -1
  127. data/vendor/Pods/Pods-CocoaLumberjack-prefix.pch +2 -0
  128. data/vendor/Pods/Pods-NSData+MD5Digest-Private.xcconfig +1 -1
  129. data/vendor/Pods/Pods-YapDatabase-Private.xcconfig +1 -1
  130. data/vendor/Pods/{Pods-Acknowledgements.markdown → Pods-acknowledgements.markdown} +0 -37
  131. data/vendor/Pods/{Pods-Acknowledgements.plist → Pods-acknowledgements.plist} +0 -45
  132. data/vendor/Pods/Pods-environment.h +15 -15
  133. data/vendor/Pods/Pods.xcconfig +3 -3
  134. data/vendor/Pods/Pods.xcodeproj/project.pbxproj +2426 -3155
  135. data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods-CocoaLumberjack.xcscheme +59 -0
  136. data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods-NSData+MD5Digest.xcscheme +59 -0
  137. data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods-YapDatabase.xcscheme +59 -0
  138. data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/Pods.xcscheme +59 -0
  139. data/vendor/Pods/Pods.xcodeproj/xcuserdata/kareemk.xcuserdatad/xcschemes/xcschememanagement.plist +31 -0
  140. data/vendor/Pods/YapDatabase/README.md +3 -1
  141. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/Internal/YapDatabaseFilteredViewPrivate.h +0 -2
  142. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.h +8 -35
  143. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredView.m +25 -41
  144. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.h +17 -17
  145. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTransaction.m +403 -134
  146. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FilteredViews/YapDatabaseFilteredViewTypes.h +32 -0
  147. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/Internal/YapDatabaseFullTextSearchPrivate.h +8 -0
  148. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchConnection.m +8 -8
  149. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/FullTextSearch/YapDatabaseFullTextSearchTransaction.m +113 -62
  150. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/Internal/YapDatabaseExtensionPrivate.h +35 -31
  151. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtension.m +25 -0
  152. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionConnection.m +1 -1
  153. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Protocol/YapDatabaseExtensionTransaction.m +25 -1
  154. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/Internal/YapDatabaseRelationshipEdgePrivate.h +79 -0
  155. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/Internal/YapDatabaseRelationshipPrivate.h +125 -0
  156. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationship.h +35 -0
  157. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationship.m +129 -0
  158. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipConnection.h +29 -0
  159. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipConnection.m +802 -0
  160. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipEdge.h +163 -0
  161. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipEdge.m +408 -0
  162. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipNode.h +99 -0
  163. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipOptions.h +59 -0
  164. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipOptions.m +29 -0
  165. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipTransaction.h +384 -0
  166. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Relationships/YapDatabaseRelationshipTransaction.m +5254 -0
  167. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/Internal/YapDatabaseSecondaryIndexPrivate.h +10 -0
  168. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/Internal/YapDatabaseSecondaryIndexSetupPrivate.h +18 -0
  169. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.h +49 -0
  170. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndex.m +12 -0
  171. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexConnection.m +9 -8
  172. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexSetup.m +62 -1
  173. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/SecondaryIndex/YapDatabaseSecondaryIndexTransaction.m +148 -45
  174. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Internal/YapDatabaseViewPrivate.h +18 -1
  175. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.h +2 -2
  176. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewChange.m +15 -9
  177. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.h +17 -0
  178. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/Utilities/YapDatabaseViewMappings.m +211 -64
  179. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.h +48 -107
  180. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseView.m +10 -7
  181. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.h +1 -0
  182. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewConnection.m +13 -22
  183. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewOptions.h +10 -3
  184. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.h +75 -24
  185. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTransaction.m +725 -244
  186. data/vendor/Pods/YapDatabase/YapDatabase/Extensions/Views/YapDatabaseViewTypes.h +99 -0
  187. data/vendor/Pods/YapDatabase/YapDatabase/Internal/NSDictionary+YapDatabase.h +8 -0
  188. data/vendor/Pods/YapDatabase/YapDatabase/Internal/NSDictionary+YapDatabase.m +19 -0
  189. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.h +1 -0
  190. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapCache.m +12 -0
  191. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.h +1 -1
  192. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabaseDefaults.m +3 -3
  193. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapDatabasePrivate.h +43 -21
  194. data/vendor/Pods/YapDatabase/YapDatabase/Internal/YapNull.m +4 -0
  195. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.h +3 -0
  196. data/vendor/Pods/YapDatabase/YapDatabase/Utilities/YapCollectionKey.m +5 -0
  197. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.h +4 -4
  198. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabase.m +84 -93
  199. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.h +21 -19
  200. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseConnection.m +381 -209
  201. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.h +131 -21
  202. data/vendor/Pods/YapDatabase/YapDatabase/YapDatabaseTransaction.m +587 -267
  203. data/vendor/Pods/{Pods.bridgesupport → build-iPhoneSimulator/Pods.bridgesupport} +633 -2557
  204. data/vendor/Pods/build-iPhoneSimulator/libPods.a +0 -0
  205. data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.bridgesupport +2 -1
  206. data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.h +2 -1
  207. data/vendor/YapDatabaseRubyMotion/YapDatabaseRubyMotion.m +4 -2
  208. metadata +80 -108
  209. data/Gemfile.lock +0 -63
  210. data/lib/yapper/attachment.rb +0 -48
  211. data/lib/yapper/document/attachment.rb +0 -26
  212. data/lib/yapper/sync.rb +0 -134
  213. data/lib/yapper/sync/data.rb +0 -12
  214. data/lib/yapper/sync/event.rb +0 -194
  215. data/lib/yapper/sync/queue.rb +0 -164
  216. data/spec/integration/all_spec.rb +0 -40
  217. data/spec/integration/sync_spec.rb +0 -42
  218. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.h +0 -641
  219. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.m +0 -1396
  220. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h +0 -133
  221. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m +0 -327
  222. data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h +0 -113
  223. data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m +0 -321
  224. data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h +0 -71
  225. data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m +0 -150
  226. data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h +0 -75
  227. data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m +0 -157
  228. data/vendor/Pods/AFNetworking/AFNetworking/AFNetworking.h +0 -43
  229. data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h +0 -68
  230. data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m +0 -143
  231. data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h +0 -370
  232. data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m +0 -848
  233. data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h +0 -89
  234. data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m +0 -167
  235. data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h +0 -78
  236. data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m +0 -191
  237. data/vendor/Pods/AFNetworking/LICENSE +0 -19
  238. data/vendor/Pods/AFNetworking/README.md +0 -208
  239. data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPClient.h +0 -641
  240. data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPRequestOperation.h +0 -133
  241. data/vendor/Pods/BuildHeaders/AFNetworking/AFImageRequestOperation.h +0 -113
  242. data/vendor/Pods/BuildHeaders/AFNetworking/AFJSONRequestOperation.h +0 -71
  243. data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworkActivityIndicatorManager.h +0 -75
  244. data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworking.h +0 -43
  245. data/vendor/Pods/BuildHeaders/AFNetworking/AFPropertyListRequestOperation.h +0 -68
  246. data/vendor/Pods/BuildHeaders/AFNetworking/AFURLConnectionOperation.h +0 -370
  247. data/vendor/Pods/BuildHeaders/AFNetworking/AFXMLRequestOperation.h +0 -89
  248. data/vendor/Pods/BuildHeaders/AFNetworking/UIImageView+AFNetworking.h +0 -78
  249. data/vendor/Pods/BuildHeaders/Reachability/Reachability.h +0 -109
  250. data/vendor/Pods/CocoaLumberjack/Lumberjack/Extensions/DispatchQueueLogFormatter.m +0 -251
  251. data/vendor/Pods/Headers/AFNetworking/AFHTTPClient.h +0 -641
  252. data/vendor/Pods/Headers/AFNetworking/AFHTTPRequestOperation.h +0 -133
  253. data/vendor/Pods/Headers/AFNetworking/AFImageRequestOperation.h +0 -113
  254. data/vendor/Pods/Headers/AFNetworking/AFJSONRequestOperation.h +0 -71
  255. data/vendor/Pods/Headers/AFNetworking/AFNetworkActivityIndicatorManager.h +0 -75
  256. data/vendor/Pods/Headers/AFNetworking/AFNetworking.h +0 -43
  257. data/vendor/Pods/Headers/AFNetworking/AFPropertyListRequestOperation.h +0 -68
  258. data/vendor/Pods/Headers/AFNetworking/AFURLConnectionOperation.h +0 -370
  259. data/vendor/Pods/Headers/AFNetworking/AFXMLRequestOperation.h +0 -89
  260. data/vendor/Pods/Headers/AFNetworking/UIImageView+AFNetworking.h +0 -78
  261. data/vendor/Pods/Headers/Reachability/Reachability.h +0 -109
  262. data/vendor/Pods/Headers/YapDatabase/YapCache.h +0 -90
  263. data/vendor/Pods/Headers/YapDatabase/YapDatabaseConnectionState.h +0 -29
  264. data/vendor/Pods/Headers/YapDatabase/YapDatabaseDefaults.h +0 -37
  265. data/vendor/Pods/Headers/YapDatabase/YapDatabaseExtensionPrivate.h +0 -440
  266. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFilteredViewPrivate.h +0 -19
  267. data/vendor/Pods/Headers/YapDatabase/YapDatabaseFullTextSearchPrivate.h +0 -69
  268. data/vendor/Pods/Headers/YapDatabase/YapDatabaseLogging.h +0 -158
  269. data/vendor/Pods/Headers/YapDatabase/YapDatabaseManager.h +0 -17
  270. data/vendor/Pods/Headers/YapDatabase/YapDatabasePrivate.h +0 -424
  271. data/vendor/Pods/Headers/YapDatabase/YapDatabaseSecondaryIndexPrivate.h +0 -73
  272. data/vendor/Pods/Headers/YapDatabase/YapDatabaseStatement.h +0 -13
  273. data/vendor/Pods/Headers/YapDatabase/YapDatabaseString.h +0 -121
  274. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewChangePrivate.h +0 -94
  275. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewMappingsPrivate.h +0 -72
  276. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPage.h +0 -36
  277. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPageMetadata.h +0 -27
  278. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewPrivate.h +0 -153
  279. data/vendor/Pods/Headers/YapDatabase/YapDatabaseViewRangeOptionsPrivate.h +0 -17
  280. data/vendor/Pods/Headers/YapDatabase/YapMemoryTable.h +0 -74
  281. data/vendor/Pods/Headers/YapDatabase/YapNull.h +0 -17
  282. data/vendor/Pods/Headers/YapDatabase/YapTouch.h +0 -15
  283. data/vendor/Pods/Headers/____Pods-AFNetworking-prefix.h +0 -17
  284. data/vendor/Pods/Headers/____Pods-Reachability-prefix.h +0 -5
  285. data/vendor/Pods/Pods-AFNetworking-Private.xcconfig +0 -5
  286. data/vendor/Pods/Pods-AFNetworking-dummy.m +0 -5
  287. data/vendor/Pods/Pods-AFNetworking-prefix.pch +0 -17
  288. data/vendor/Pods/Pods-AFNetworking.xcconfig +0 -1
  289. data/vendor/Pods/Pods-Reachability-Private.xcconfig +0 -5
  290. data/vendor/Pods/Pods-Reachability-dummy.m +0 -5
  291. data/vendor/Pods/Pods-Reachability-prefix.pch +0 -5
  292. data/vendor/Pods/Pods-Reachability.xcconfig +0 -1
  293. data/vendor/Pods/Reachability/LICENCE.txt +0 -24
  294. data/vendor/Pods/Reachability/README.md +0 -65
  295. data/vendor/Pods/Reachability/Reachability.h +0 -109
  296. data/vendor/Pods/Reachability/Reachability.m +0 -527
@@ -1,24 +1,9 @@
1
1
  #import <Foundation/Foundation.h>
2
2
 
3
3
  #import "YapDatabaseViewTransaction.h"
4
+ #import "YapDatabaseFilteredViewTypes.h"
4
5
  #import "YapDatabaseFilteredView.h"
5
6
 
6
- #ifndef YapDatabaseViewFilteringBlockDefined
7
- #define YapDatabaseViewFilteringBlockDefined 1
8
-
9
- typedef id YapDatabaseViewFilteringBlock; // One of the YapDatabaseViewGroupingX types below.
10
-
11
- typedef BOOL (^YapDatabaseViewFilteringWithKeyBlock) \
12
- (NSString *group, NSString *collection, NSString *key);
13
- typedef BOOL (^YapDatabaseViewFilteringWithObjectBlock) \
14
- (NSString *group, NSString *collection, NSString *key, id object);
15
- typedef BOOL (^YapDatabaseViewFilteringWithMetadataBlock)\
16
- (NSString *group, NSString *collection, NSString *key, id metadata);
17
- typedef BOOL (^YapDatabaseViewFilteringWithRowBlock) \
18
- (NSString *group, NSString *collection, NSString *key, id object, id metadata);
19
-
20
- #endif
21
-
22
7
 
23
8
  @interface YapDatabaseFilteredViewTransaction : YapDatabaseViewTransaction
24
9
 
@@ -32,8 +17,23 @@ typedef BOOL (^YapDatabaseViewFilteringWithRowBlock) \
32
17
 
33
18
  @interface YapDatabaseFilteredViewTransaction (ReadWrite)
34
19
 
20
+ /**
21
+ * This method allows you to change the filterBlock on-the-fly.
22
+ *
23
+ * When you do so, the extension will emit the smallest change-set possible.
24
+ * That is, it does NOT clear the view and start from scratch.
25
+ * Rather it performs a quick in-place update.
26
+ * The end result is a minimal change-set that looks nice for tableView / collectionView animations.
27
+ *
28
+ * For example, in Apple's phone app, in the Recents tab, one can switch between "all" and "missed" calls.
29
+ * Tapping the "missed" button smoothly animates away all non-red rows. It looks great.
30
+ * You can get the same effect by using a YapDatabaseFilteredView,
31
+ * and swapping in/out a filterBlock to allow/disallow non-missed calls.
32
+ *
33
+ * Note: You must pass a different versionTag, or this method does nothing.
34
+ **/
35
35
  - (void)setFilteringBlock:(YapDatabaseViewFilteringBlock)filteringBlock
36
36
  filteringBlockType:(YapDatabaseViewBlockType)filteringBlockType
37
- tag:(NSString *)tag;
37
+ versionTag:(NSString *)tag;
38
38
 
39
39
  @end
@@ -20,6 +20,11 @@
20
20
  static const int ydbLogLevel = YDB_LOG_LEVEL_WARN;
21
21
  #endif
22
22
 
23
+ #define ExtKey_classVersion @"classVersion"
24
+ #define ExtKey_persistent @"persistent"
25
+ #define ExtKey_parentViewName @"parentViewName"
26
+ #define ExtKey_tag_deprecated @"tag"
27
+ #define ExtKey_versionTag @"versionTag"
23
28
 
24
29
  @implementation YapDatabaseFilteredViewTransaction
25
30
 
@@ -35,31 +40,68 @@
35
40
  **/
36
41
  - (BOOL)createIfNeeded
37
42
  {
43
+ YDBLogAutoTrace();
44
+
45
+ __unsafe_unretained YapDatabaseFilteredView *filteredView = (YapDatabaseFilteredView *)(viewConnection->view);
46
+
47
+ int classVersion = YAP_DATABASE_VIEW_CLASS_VERSION;
48
+ BOOL isPersistent = [self isPersistentView];
49
+
50
+ NSString *parentViewName = filteredView->parentViewName;
51
+ NSString *versionTag = filteredView->versionTag;
52
+
53
+ // Figure out what steps we need to take in order to register the view
54
+
38
55
  BOOL needsCreateTables = NO;
39
56
 
57
+ BOOL oldIsPersistent = NO;
58
+ BOOL hasOldIsPersistent = NO;
59
+
60
+ NSString *oldParentViewName = nil;
61
+ NSString *oldVersionTag = nil;
62
+
40
63
  // Check classVersion (the internal version number of view implementation)
41
64
 
42
- int oldClassVersion = [self intValueForExtensionKey:@"classVersion"];
43
- int classVersion = YAP_DATABASE_VIEW_CLASS_VERSION;
65
+ int oldClassVersion = 0;
66
+ BOOL hasOldClassVersion = [self getIntValue:&oldClassVersion forExtensionKey:ExtKey_classVersion];
44
67
 
45
- if (oldClassVersion != classVersion)
68
+ if (!hasOldClassVersion)
69
+ {
70
+ needsCreateTables = YES;
71
+ }
72
+ else if (oldClassVersion != classVersion)
73
+ {
74
+ [self dropTablesForOldClassVersion:oldClassVersion];
46
75
  needsCreateTables = YES;
76
+ }
47
77
 
48
78
  // Check persistence.
49
79
  // Need to properly transition from persistent to non-persistent, and vice-versa.
50
80
 
51
- BOOL oldIsPersistent = NO;
52
- BOOL hasOldIsPersistent = [self getBoolValue:&oldIsPersistent forExtensionKey:@"persistent"];
53
-
54
- BOOL isPersistent = [self isPersistentView];
55
-
56
- if (hasOldIsPersistent && (oldIsPersistent != isPersistent))
81
+ if (!needsCreateTables || hasOldClassVersion)
57
82
  {
58
- [[viewConnection->view class]
59
- dropTablesForRegisteredName:[self registeredName]
60
- withTransaction:(YapDatabaseReadWriteTransaction *)databaseTransaction];
83
+ hasOldIsPersistent = [self getBoolValue:&oldIsPersistent forExtensionKey:ExtKey_persistent];
61
84
 
62
- needsCreateTables = YES;
85
+ if (hasOldIsPersistent && oldIsPersistent && !isPersistent)
86
+ {
87
+ [[viewConnection->view class]
88
+ dropTablesForRegisteredName:[self registeredName]
89
+ withTransaction:(YapDatabaseReadWriteTransaction *)databaseTransaction];
90
+ }
91
+
92
+ if (!hasOldIsPersistent || (oldIsPersistent != isPersistent))
93
+ {
94
+ needsCreateTables = YES;
95
+ }
96
+ else if (!isPersistent)
97
+ {
98
+ // We always have to create & populate the tables for non-persistent views.
99
+ // Even when re-registering from previous app launch.
100
+ needsCreateTables = YES;
101
+
102
+ oldParentViewName = [self stringValueForExtensionKey:ExtKey_parentViewName];
103
+ oldVersionTag = [self stringValueForExtensionKey:ExtKey_versionTag];
104
+ }
63
105
  }
64
106
 
65
107
  // Create or re-populate if needed
@@ -71,34 +113,75 @@
71
113
  if (![self createTables]) return NO;
72
114
  if (![self populateView]) return NO;
73
115
 
74
- [self setIntValue:classVersion forExtensionKey:@"classVersion"];
116
+ if (!hasOldClassVersion || (oldClassVersion != classVersion)) {
117
+ [self setIntValue:classVersion forExtensionKey:ExtKey_classVersion];
118
+ }
119
+
120
+ if (!hasOldIsPersistent || (oldIsPersistent != isPersistent)) {
121
+ [self setBoolValue:isPersistent forExtensionKey:ExtKey_persistent];
122
+ }
75
123
 
76
- [self setBoolValue:isPersistent forExtensionKey:@"persistent"];
124
+ if (![oldParentViewName isEqualToString:parentViewName]) {
125
+ [self setStringValue:parentViewName forExtensionKey:ExtKey_parentViewName];
126
+ }
77
127
 
78
- int userSuppliedConfigVersion = viewConnection->view->version;
79
- [self setIntValue:userSuppliedConfigVersion forExtensionKey:@"version"];
128
+ if (![oldVersionTag isEqualToString:versionTag]) {
129
+ [self setStringValue:versionTag forExtensionKey:ExtKey_versionTag];
130
+ }
80
131
  }
81
132
  else
82
133
  {
134
+ BOOL needsRepopulateView = NO;
135
+
136
+ // Check parentViewName.
137
+ // Need to re-populate if the parent changed.
138
+
139
+ oldParentViewName = [self stringValueForExtensionKey:ExtKey_parentViewName];
140
+
141
+ if (![oldParentViewName isEqualToString:parentViewName])
142
+ {
143
+ needsRepopulateView = YES;
144
+ }
145
+
83
146
  // Check user-supplied tag.
84
147
  // We may need to re-populate the database if the groupingBlock or sortingBlock changed.
85
148
 
86
- __unsafe_unretained YapDatabaseFilteredView *filteredView =
87
- (YapDatabaseFilteredView *)viewConnection->view;
149
+ oldVersionTag = [self stringValueForExtensionKey:ExtKey_versionTag];
88
150
 
89
- NSString *oldTag = [self stringValueForExtensionKey:@"tag"];
90
- NSString *newTag = filteredView->tag;
151
+ NSString *oldTag_deprecated = nil;
152
+ if (oldVersionTag == nil)
153
+ {
154
+ oldTag_deprecated = [self stringValueForExtensionKey:ExtKey_tag_deprecated];
155
+ if (oldTag_deprecated)
156
+ {
157
+ oldVersionTag = oldTag_deprecated;
158
+ }
159
+ }
91
160
 
92
- if (![oldTag isEqualToString:newTag])
161
+ if (![oldVersionTag isEqualToString:versionTag])
162
+ {
163
+ needsRepopulateView = YES;
164
+ }
165
+
166
+ if (needsRepopulateView)
93
167
  {
94
168
  if (![self populateView]) return NO;
95
169
 
96
- [self setStringValue:newTag forExtensionKey:@"tag"];
170
+ if (![oldParentViewName isEqualToString:parentViewName]) {
171
+ [self setStringValue:parentViewName forExtensionKey:ExtKey_parentViewName];
172
+ }
173
+
174
+ if (![oldVersionTag isEqualToString:versionTag]) {
175
+ [self setStringValue:versionTag forExtensionKey:ExtKey_versionTag];
176
+ }
177
+
178
+ if (oldTag_deprecated)
179
+ [self removeValueForExtensionKey:ExtKey_tag_deprecated];
97
180
  }
98
-
99
- if (!hasOldIsPersistent)
181
+ else if (oldTag_deprecated)
100
182
  {
101
- [self setBoolValue:isPersistent forExtensionKey:@"persistent"];
183
+ [self removeValueForExtensionKey:ExtKey_tag_deprecated];
184
+ [self setStringValue:versionTag forExtensionKey:ExtKey_versionTag];
102
185
  }
103
186
  }
104
187
 
@@ -122,16 +205,6 @@
122
205
  YapDatabaseViewTransaction *parentViewTransaction =
123
206
  [databaseTransaction ext:filteredView->parentViewName];
124
207
 
125
- __unsafe_unretained YapDatabaseView *parentView = parentViewTransaction->viewConnection->view;
126
-
127
- // Capture grouping & sorting block
128
-
129
- filteredView->groupingBlock = parentView->groupingBlock;
130
- filteredView->groupingBlockType = parentView->groupingBlockType;
131
-
132
- filteredView->sortingBlock = parentView->sortingBlock;
133
- filteredView->sortingBlockType = parentView->sortingBlockType;
134
-
135
208
  // Remove everything from the database
136
209
 
137
210
  [self removeAllRowids];
@@ -155,19 +228,15 @@
155
228
  [parentViewTransaction enumerateRowidsInGroup:group
156
229
  usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
157
230
  {
158
- NSString *key = nil;
159
- NSString *collection = nil;
160
- [databaseTransaction getKey:&key collection:&collection forRowid:rowid];
231
+ YapCollectionKey *ck = [databaseTransaction collectionKeyForRowid:rowid];
161
232
 
162
- if (filterBlock(group, collection, key))
233
+ if (filterBlock(group, ck.collection, ck.key))
163
234
  {
164
- YapCollectionKey *collectionKey = [[YapCollectionKey alloc] initWithCollection:collection key:key];
165
-
166
235
  if (filteredIndex == 0)
167
- [self insertRowid:rowid collectionKey:collectionKey inNewGroup:group];
236
+ [self insertRowid:rowid collectionKey:ck inNewGroup:group];
168
237
  else
169
- [self insertRowid:rowid collectionKey:collectionKey inGroup:group atIndex:filteredIndex
170
- withExistingPageKey:nil];
238
+ [self insertRowid:rowid collectionKey:ck inGroup:group atIndex:filteredIndex
239
+ withExistingPageKey:nil];
171
240
  filteredIndex++;
172
241
  }
173
242
  }];
@@ -185,20 +254,17 @@
185
254
  [parentViewTransaction enumerateRowidsInGroup:group
186
255
  usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
187
256
  {
188
- NSString *key = nil;
189
- NSString *collection = nil;
257
+ YapCollectionKey *ck = nil;
190
258
  id object = nil;
191
- [databaseTransaction getKey:&key collection:&collection object:&object forRowid:rowid];
259
+ [databaseTransaction getCollectionKey:&ck object:&object forRowid:rowid];
192
260
 
193
- if (filterBlock(group, collection, key, object))
261
+ if (filterBlock(group, ck.collection, ck.key, object))
194
262
  {
195
- YapCollectionKey *collectionKey = [[YapCollectionKey alloc] initWithCollection:collection key:key];
196
-
197
263
  if (filteredIndex == 0)
198
- [self insertRowid:rowid collectionKey:collectionKey inNewGroup:group];
264
+ [self insertRowid:rowid collectionKey:ck inNewGroup:group];
199
265
  else
200
- [self insertRowid:rowid collectionKey:collectionKey inGroup:group atIndex:filteredIndex
201
- withExistingPageKey:nil];
266
+ [self insertRowid:rowid collectionKey:ck inGroup:group atIndex:filteredIndex
267
+ withExistingPageKey:nil];
202
268
  filteredIndex++;
203
269
  }
204
270
  }];
@@ -216,20 +282,17 @@
216
282
  [parentViewTransaction enumerateRowidsInGroup:group
217
283
  usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
218
284
  {
219
- NSString *key = nil;
220
- NSString *collection = nil;
285
+ YapCollectionKey *ck = nil;
221
286
  id metadata = nil;
222
- [databaseTransaction getKey:&key collection:&collection metadata:&metadata forRowid:rowid];
287
+ [databaseTransaction getCollectionKey:&ck metadata:&metadata forRowid:rowid];
223
288
 
224
- if (filterBlock(group, collection, key, metadata))
289
+ if (filterBlock(group, ck.collection, ck.key, metadata))
225
290
  {
226
- YapCollectionKey *collectionKey = [[YapCollectionKey alloc] initWithCollection:collection key:key];
227
-
228
291
  if (filteredIndex == 0)
229
- [self insertRowid:rowid collectionKey:collectionKey inNewGroup:group];
292
+ [self insertRowid:rowid collectionKey:ck inNewGroup:group];
230
293
  else
231
- [self insertRowid:rowid collectionKey:collectionKey inGroup:group atIndex:filteredIndex
232
- withExistingPageKey:nil];
294
+ [self insertRowid:rowid collectionKey:ck inGroup:group atIndex:filteredIndex
295
+ withExistingPageKey:nil];
233
296
  filteredIndex++;
234
297
  }
235
298
  }];
@@ -247,26 +310,22 @@
247
310
  [parentViewTransaction enumerateRowidsInGroup:group
248
311
  usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
249
312
  {
250
- NSString *key = nil;
251
- NSString *collection = nil;
313
+ YapCollectionKey *ck = nil;
252
314
  id object = nil;
253
315
  id metadata = nil;
254
316
 
255
- [databaseTransaction getKey:&key
256
- collection:&collection
257
- object:&object
258
- metadata:&metadata
259
- forRowid:rowid];
317
+ [databaseTransaction getCollectionKey:&ck
318
+ object:&object
319
+ metadata:&metadata
320
+ forRowid:rowid];
260
321
 
261
- if (filterBlock(group, collection, key, object, metadata))
322
+ if (filterBlock(group, ck.collection, ck.key, object, metadata))
262
323
  {
263
- YapCollectionKey *collectionKey = [[YapCollectionKey alloc] initWithCollection:collection key:key];
264
-
265
324
  if (filteredIndex == 0)
266
- [self insertRowid:rowid collectionKey:collectionKey inNewGroup:group];
325
+ [self insertRowid:rowid collectionKey:ck inNewGroup:group];
267
326
  else
268
- [self insertRowid:rowid collectionKey:collectionKey inGroup:group atIndex:filteredIndex
269
- withExistingPageKey:nil];
327
+ [self insertRowid:rowid collectionKey:ck inGroup:group atIndex:filteredIndex
328
+ withExistingPageKey:nil];
270
329
  filteredIndex++;
271
330
  }
272
331
  }];
@@ -280,7 +339,7 @@
280
339
  #pragma mark Logic
281
340
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
282
341
 
283
- - (void)repopulate
342
+ - (void)repopulateView
284
343
  {
285
344
  YDBLogAutoTrace();
286
345
 
@@ -320,11 +379,9 @@
320
379
  [parentViewTransaction enumerateRowidsInGroup:group
321
380
  usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
322
381
  {
323
- NSString *key = nil;
324
- NSString *collection = nil;
325
- [databaseTransaction getKey:&key collection:&collection forRowid:rowid];
382
+ YapCollectionKey *ck = [databaseTransaction collectionKeyForRowid:rowid];
326
383
 
327
- if (filterBlock(group, collection, key))
384
+ if (filterBlock(group, ck.collection, ck.key))
328
385
  {
329
386
  if (existing && (existingRowid == rowid))
330
387
  {
@@ -339,8 +396,6 @@
339
396
  // The row was not previously in the view (disallowed by previous filter),
340
397
  // but is now in the view (allowed by new filter).
341
398
 
342
- YapCollectionKey *ck = [[YapCollectionKey alloc] initWithCollection:collection key:key];
343
-
344
399
  if (index == 0 && ([viewConnection->group_pagesMetadata_dict objectForKey:group] == nil))
345
400
  [self insertRowid:rowid collectionKey:ck inNewGroup:group];
346
401
  else
@@ -356,8 +411,6 @@
356
411
  // The row was previously in the view (allowed by previous filter),
357
412
  // but is no longer in the view (disallowed by new filter).
358
413
 
359
- YapCollectionKey *ck = [[YapCollectionKey alloc] initWithCollection:collection key:key];
360
-
361
414
  [self removeRowid:rowid collectionKey:ck atIndex:index inGroup:group];
362
415
  existing = [self getRowid:&existingRowid atIndex:index inGroup:group];
363
416
  }
@@ -387,12 +440,11 @@
387
440
  [parentViewTransaction enumerateRowidsInGroup:group
388
441
  usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
389
442
  {
390
- NSString *key = nil;
391
- NSString *collection = nil;
443
+ YapCollectionKey *ck = nil;
392
444
  id object = nil;
393
- [databaseTransaction getKey:&key collection:&collection object:&object forRowid:rowid];
445
+ [databaseTransaction getCollectionKey:&ck object:&object forRowid:rowid];
394
446
 
395
- if (filterBlock(group, collection, key, object))
447
+ if (filterBlock(group, ck.collection, ck.key, object))
396
448
  {
397
449
  if (existing && (existingRowid == rowid))
398
450
  {
@@ -407,8 +459,6 @@
407
459
  // The row was not previously in the view (disallowed by previous filter),
408
460
  // but is now in the view (allowed by new filter).
409
461
 
410
- YapCollectionKey *ck = [[YapCollectionKey alloc] initWithCollection:collection key:key];
411
-
412
462
  if (index == 0 && ([viewConnection->group_pagesMetadata_dict objectForKey:group] == nil))
413
463
  [self insertRowid:rowid collectionKey:ck inNewGroup:group];
414
464
  else
@@ -424,8 +474,6 @@
424
474
  // The row was previously in the view (allowed by previous filter),
425
475
  // but is no longer in the view (disallowed by new filter).
426
476
 
427
- YapCollectionKey *ck = [[YapCollectionKey alloc] initWithCollection:collection key:key];
428
-
429
477
  [self removeRowid:rowid collectionKey:ck atIndex:index inGroup:group];
430
478
  existing = [self getRowid:&existingRowid atIndex:index inGroup:group];
431
479
  }
@@ -455,12 +503,11 @@
455
503
  [parentViewTransaction enumerateRowidsInGroup:group
456
504
  usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
457
505
  {
458
- NSString *key = nil;
459
- NSString *collection = nil;
506
+ YapCollectionKey *ck = nil;
460
507
  id metadata = nil;
461
- [databaseTransaction getKey:&key collection:&collection metadata:&metadata forRowid:rowid];
508
+ [databaseTransaction getCollectionKey:&ck metadata:&metadata forRowid:rowid];
462
509
 
463
- if (filterBlock(group, collection, key, metadata))
510
+ if (filterBlock(group, ck.collection, ck.key, metadata))
464
511
  {
465
512
  if (existing && (existingRowid == rowid))
466
513
  {
@@ -475,8 +522,6 @@
475
522
  // The row was not previously in the view (disallowed by previous filter),
476
523
  // but is now in the view (allowed by new filter).
477
524
 
478
- YapCollectionKey *ck = [[YapCollectionKey alloc] initWithCollection:collection key:key];
479
-
480
525
  if (index == 0 && ([viewConnection->group_pagesMetadata_dict objectForKey:group] == nil))
481
526
  [self insertRowid:rowid collectionKey:ck inNewGroup:group];
482
527
  else
@@ -492,8 +537,6 @@
492
537
  // The row was previously in the view (allowed by previous filter),
493
538
  // but is no longer in the view (disallowed by new filter).
494
539
 
495
- YapCollectionKey *ck = [[YapCollectionKey alloc] initWithCollection:collection key:key];
496
-
497
540
  [self removeRowid:rowid collectionKey:ck atIndex:index inGroup:group];
498
541
  existing = [self getRowid:&existingRowid atIndex:index inGroup:group];
499
542
  }
@@ -523,18 +566,16 @@
523
566
  [parentViewTransaction enumerateRowidsInGroup:group
524
567
  usingBlock:^(int64_t rowid, NSUInteger parentIndex, BOOL *stop)
525
568
  {
526
- NSString *key = nil;
527
- NSString *collection = nil;
569
+ YapCollectionKey *ck = nil;
528
570
  id object = nil;
529
571
  id metadata = nil;
530
572
 
531
- [databaseTransaction getKey:&key
532
- collection:&collection
533
- object:&object
534
- metadata:&metadata
535
- forRowid:rowid];
573
+ [databaseTransaction getCollectionKey:&ck
574
+ object:&object
575
+ metadata:&metadata
576
+ forRowid:rowid];
536
577
 
537
- if (filterBlock(group, collection, key, object, metadata))
578
+ if (filterBlock(group, ck.collection, ck.key, object, metadata))
538
579
  {
539
580
  if (existing && (existingRowid == rowid))
540
581
  {
@@ -549,8 +590,6 @@
549
590
  // The row was not previously in the view (disallowed by previous filter),
550
591
  // but is now in the view (allowed by new filter).
551
592
 
552
- YapCollectionKey *ck = [[YapCollectionKey alloc] initWithCollection:collection key:key];
553
-
554
593
  if (index == 0 && ([viewConnection->group_pagesMetadata_dict objectForKey:group] == nil))
555
594
  [self insertRowid:rowid collectionKey:ck inNewGroup:group];
556
595
  else
@@ -566,8 +605,6 @@
566
605
  // The row was previously in the view (allowed by previous filter),
567
606
  // but is no longer in the view (disallowed by new filter).
568
607
 
569
- YapCollectionKey *ck = [[YapCollectionKey alloc] initWithCollection:collection key:key];
570
-
571
608
  [self removeRowid:rowid collectionKey:ck atIndex:index inGroup:group];
572
609
  existing = [self getRowid:&existingRowid atIndex:index inGroup:group];
573
610
  }
@@ -592,8 +629,7 @@
592
629
  * This method overrides the version in YapDatabaseViewTransaction.
593
630
  **/
594
631
  - (void)handleInsertObject:(id)object
595
- forKey:(NSString *)key
596
- inCollection:(NSString *)collection
632
+ forCollectionKey:(YapCollectionKey *)collectionKey
597
633
  withMetadata:(id)metadata
598
634
  rowid:(int64_t)rowid
599
635
  {
@@ -602,6 +638,9 @@
602
638
  __unsafe_unretained YapDatabaseFilteredView *filteredView =
603
639
  (YapDatabaseFilteredView *)viewConnection->view;
604
640
 
641
+ __unsafe_unretained NSString *collection = collectionKey.collection;
642
+ __unsafe_unretained NSString *key = collectionKey.key;
643
+
605
644
  // Instead of going to the groupingBlock,
606
645
  // just ask the parentViewTransaction what the last group was.
607
646
 
@@ -656,7 +695,6 @@
656
695
  {
657
696
  // This was an insert operation, so we know the key wasn't already in the view.
658
697
 
659
- YapCollectionKey *collectionKey = [[YapCollectionKey alloc] initWithCollection:collection key:key];
660
698
  int flags = (YapDatabaseViewChangedObject | YapDatabaseViewChangedMetadata);
661
699
 
662
700
  [self insertRowid:rowid
@@ -684,8 +722,7 @@
684
722
  * This method overrides the version in YapDatabaseViewTransaction.
685
723
  **/
686
724
  - (void)handleUpdateObject:(id)object
687
- forKey:(NSString *)key
688
- inCollection:(NSString *)collection
725
+ forCollectionKey:(YapCollectionKey *)collectionKey
689
726
  withMetadata:(id)metadata
690
727
  rowid:(int64_t)rowid
691
728
  {
@@ -694,7 +731,8 @@
694
731
  __unsafe_unretained YapDatabaseFilteredView *filteredView =
695
732
  (YapDatabaseFilteredView *)viewConnection->view;
696
733
 
697
- YapCollectionKey *collectionKey = [[YapCollectionKey alloc] initWithCollection:collection key:key];
734
+ __unsafe_unretained NSString *collection = collectionKey.collection;
735
+ __unsafe_unretained NSString *key = collectionKey.key;
698
736
 
699
737
  // Instead of going to the groupingBlock,
700
738
  // just ask the parentViewTransaction what the last group was.
@@ -782,17 +820,156 @@
782
820
  * This method is invoked by a YapDatabaseReadWriteTransaction as a post-operation-hook.
783
821
  * This method overrides the version in YapDatabaseViewTransaction.
784
822
  **/
785
- - (void)handleUpdateMetadata:(id)metadata
786
- forKey:(NSString *)key
787
- inCollection:(NSString *)collection
788
- withRowid:(int64_t)rowid
823
+ - (void)handleReplaceObject:(id)object forCollectionKey:(YapCollectionKey *)collectionKey withRowid:(int64_t)rowid
789
824
  {
790
825
  YDBLogAutoTrace();
791
826
 
792
827
  __unsafe_unretained YapDatabaseFilteredView *filteredView =
793
828
  (YapDatabaseFilteredView *)viewConnection->view;
794
829
 
795
- YapCollectionKey *collectionKey = [[YapCollectionKey alloc] initWithCollection:collection key:key];
830
+ __unsafe_unretained NSString *collection = collectionKey.collection;
831
+ __unsafe_unretained NSString *key = collectionKey.key;
832
+
833
+ BOOL groupMayHaveChanged = filteredView->groupingBlockType == YapDatabaseViewBlockTypeWithRow ||
834
+ filteredView->groupingBlockType == YapDatabaseViewBlockTypeWithObject;
835
+
836
+ BOOL sortMayHaveChanged = filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithRow ||
837
+ filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithObject;
838
+
839
+ // Instead of going to the groupingBlock,
840
+ // just ask the parentViewTransaction what the last group was.
841
+
842
+ YapDatabaseViewTransaction *parentViewTransaction =
843
+ [databaseTransaction ext:filteredView->parentViewName];
844
+
845
+ NSString *group = parentViewTransaction->lastHandledGroup;
846
+
847
+ if (group == nil)
848
+ {
849
+ // Not included in parentView.
850
+
851
+ if (groupMayHaveChanged)
852
+ {
853
+ // Remove key from view (if needed).
854
+ // This was an update operation, so the key may have previously been in the view.
855
+
856
+ [self removeRowid:rowid collectionKey:collectionKey];
857
+ }
858
+ else
859
+ {
860
+ // The group hasn't changed.
861
+ // Thus it wasn't previously in view, and still isn't in the view.
862
+ }
863
+
864
+ lastHandledGroup = nil;
865
+ return;
866
+ }
867
+
868
+ BOOL filterMayHaveChanged = filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithRow ||
869
+ filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithObject;
870
+
871
+ if (!groupMayHaveChanged && !sortMayHaveChanged && !filterMayHaveChanged)
872
+ {
873
+ // Nothing has changed that could possibly affect the view.
874
+ // Just note the touch.
875
+
876
+ int flags = YapDatabaseViewChangedObject;
877
+
878
+ NSString *pageKey = [self pageKeyForRowid:rowid];
879
+ NSUInteger existingIndex = [self indexForRowid:rowid inGroup:group withPageKey:pageKey];
880
+
881
+ [viewConnection->changes addObject:
882
+ [YapDatabaseViewRowChange updateKey:collectionKey changes:flags inGroup:group atIndex:existingIndex]];
883
+
884
+ lastHandledGroup = group;
885
+ return;
886
+ }
887
+
888
+ // Ask filter block if we should add key to view.
889
+
890
+ BOOL passesFilter;
891
+ id metadata = nil;
892
+
893
+ if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithKey)
894
+ {
895
+ YapDatabaseViewFilteringWithKeyBlock filterBlock =
896
+ (YapDatabaseViewFilteringWithKeyBlock)filteredView->filteringBlock;
897
+
898
+ passesFilter = filterBlock(group, collection, key);
899
+ }
900
+ else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithObject)
901
+ {
902
+ YapDatabaseViewFilteringWithObjectBlock filterBlock =
903
+ (YapDatabaseViewFilteringWithObjectBlock)filteredView->filteringBlock;
904
+
905
+ passesFilter = filterBlock(group, collection, key, object);
906
+ }
907
+ else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithMetadata)
908
+ {
909
+ YapDatabaseViewFilteringWithMetadataBlock filterBlock =
910
+ (YapDatabaseViewFilteringWithMetadataBlock)filteredView->filteringBlock;
911
+
912
+ metadata = [databaseTransaction metadataForCollectionKey:collectionKey withRowid:rowid];
913
+ passesFilter = filterBlock(group, collection, key, metadata);
914
+ }
915
+ else // if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithRow)
916
+ {
917
+ YapDatabaseViewFilteringWithRowBlock filterBlock =
918
+ (YapDatabaseViewFilteringWithRowBlock)filteredView->filteringBlock;
919
+
920
+ metadata = [databaseTransaction metadataForCollectionKey:collectionKey withRowid:rowid];
921
+ passesFilter = filterBlock(group, collection, key, object, metadata);
922
+ }
923
+
924
+ if (passesFilter)
925
+ {
926
+ // Add key to view (or update position).
927
+ // This was an update operation, so the key may have previously been in the view.
928
+
929
+ int flags = (YapDatabaseViewChangedObject | YapDatabaseViewChangedMetadata);
930
+
931
+ BOOL sortingBlockNeedsMetadata = filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithRow ||
932
+ filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithMetadata;
933
+ if (sortingBlockNeedsMetadata && metadata == nil)
934
+ {
935
+ metadata = [databaseTransaction metadataForCollectionKey:collectionKey withRowid:rowid];
936
+ }
937
+
938
+ [self insertRowid:rowid
939
+ collectionKey:collectionKey
940
+ object:object
941
+ metadata:metadata
942
+ inGroup:group
943
+ withChanges:flags
944
+ isNew:NO];
945
+
946
+ lastHandledGroup = group;
947
+ }
948
+ else
949
+ {
950
+ // Filtered from this view.
951
+ // Remove key from view (if needed).
952
+ // This was an update operation, so the key may have previously been in the view.
953
+
954
+ [self removeRowid:rowid collectionKey:collectionKey];
955
+ lastHandledGroup = nil;
956
+ }
957
+ }
958
+
959
+ /**
960
+ * YapDatabase extension hook.
961
+ * This method is invoked by a YapDatabaseReadWriteTransaction as a post-operation-hook.
962
+ * This method overrides the version in YapDatabaseViewTransaction.
963
+ **/
964
+ - (void)handleReplaceMetadata:(id)metadata forCollectionKey:(YapCollectionKey *)collectionKey withRowid:(int64_t)rowid
965
+ {
966
+ YDBLogAutoTrace();
967
+
968
+ __unsafe_unretained YapDatabaseFilteredView *filteredView =
969
+ (YapDatabaseFilteredView *)viewConnection->view;
970
+
971
+ __unsafe_unretained NSString *collection = collectionKey.collection;
972
+ __unsafe_unretained NSString *key = collectionKey.key;
796
973
 
797
974
  BOOL groupMayHaveChanged = filteredView->groupingBlockType == YapDatabaseViewBlockTypeWithRow ||
798
975
  filteredView->groupingBlockType == YapDatabaseViewBlockTypeWithMetadata;
@@ -866,7 +1043,7 @@
866
1043
  YapDatabaseViewFilteringWithObjectBlock filterBlock =
867
1044
  (YapDatabaseViewFilteringWithObjectBlock)filteredView->filteringBlock;
868
1045
 
869
- object = [databaseTransaction objectForKey:key inCollection:collection withRowid:rowid];
1046
+ object = [databaseTransaction objectForCollectionKey:collectionKey withRowid:rowid];
870
1047
  passesFilter = filterBlock(group, collection, key, object);
871
1048
  }
872
1049
  else if (filteredView->filteringBlockType == YapDatabaseViewBlockTypeWithMetadata)
@@ -881,7 +1058,7 @@
881
1058
  YapDatabaseViewFilteringWithRowBlock filterBlock =
882
1059
  (YapDatabaseViewFilteringWithRowBlock)filteredView->filteringBlock;
883
1060
 
884
- object = [databaseTransaction objectForKey:key inCollection:collection withRowid:rowid];
1061
+ object = [databaseTransaction objectForCollectionKey:collectionKey withRowid:rowid];
885
1062
  passesFilter = filterBlock(group, collection, key, object, metadata);
886
1063
  }
887
1064
 
@@ -892,10 +1069,11 @@
892
1069
 
893
1070
  int flags = (YapDatabaseViewChangedObject | YapDatabaseViewChangedMetadata);
894
1071
 
895
- BOOL sortingBlockNeedsObject = sortMayHaveChanged; // same thing, different name
1072
+ BOOL sortingBlockNeedsObject = filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithRow ||
1073
+ filteredView->sortingBlockType == YapDatabaseViewBlockTypeWithObject;
896
1074
  if (sortingBlockNeedsObject && object == nil)
897
1075
  {
898
- object = [databaseTransaction objectForKey:key inCollection:collection withRowid:rowid];
1076
+ object = [databaseTransaction objectForCollectionKey:collectionKey withRowid:rowid];
899
1077
  }
900
1078
 
901
1079
  [self insertRowid:rowid
@@ -923,6 +1101,67 @@
923
1101
  /// All other hook methods are handled by superclass (YapDatabaseViewTransaction).
924
1102
  ///
925
1103
 
1104
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1105
+ #pragma mark YapDatabaseViewDependency Protocol
1106
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1107
+
1108
+ /**
1109
+ * This method is invoked if our parentView repopulates.
1110
+ * For example:
1111
+ *
1112
+ * - The parentView is a YapDatabaseView, and the groupingBlock and/or sortingBlock was changed.
1113
+ * - The parentView is a YapDatabaseFilteredView, and the filterBlock was changed.
1114
+ * - The parentView of the parentView was changed...
1115
+ *
1116
+ * When this happens, there has likely been a significant change in the content of the parentView,
1117
+ * and a full repopulate is required on our part.
1118
+ **/
1119
+ - (void)viewDidRepopulate:(NSString *)parentViewName
1120
+ {
1121
+ YDBLogAutoTrace();
1122
+
1123
+ if (!databaseTransaction->isReadWriteTransaction)
1124
+ {
1125
+ YDBLogWarn(@"%@ - Method only allowed in readWrite transaction", THIS_METHOD);
1126
+ return;
1127
+ }
1128
+
1129
+ __unsafe_unretained YapDatabaseFilteredView *filteredView =
1130
+ (YapDatabaseFilteredView *)viewConnection->view;
1131
+
1132
+ if (![parentViewName isEqualToString:filteredView->parentViewName])
1133
+ {
1134
+ YDBLogWarn(@"%@ - Method inappropriately invoked. Doesn't match parentViewName.", THIS_METHOD);
1135
+ return;
1136
+ }
1137
+
1138
+ // The parentView has significantly changed.
1139
+ // We need to repopulate.
1140
+
1141
+ [self repopulateView];
1142
+
1143
+ // Propogate the notification onward to any extensions dependent upon this one.
1144
+
1145
+ __unsafe_unretained NSString *registeredName = [self registeredName];
1146
+ __unsafe_unretained NSDictionary *extensionDependencies = databaseTransaction->connection->extensionDependencies;
1147
+
1148
+ [extensionDependencies enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
1149
+
1150
+ __unsafe_unretained NSString *extName = (NSString *)key;
1151
+ __unsafe_unretained NSSet *extDependencies = (NSSet *)obj;
1152
+
1153
+ if ([extDependencies containsObject:registeredName])
1154
+ {
1155
+ YapDatabaseExtensionTransaction *extTransaction = [databaseTransaction ext:extName];
1156
+
1157
+ if ([extTransaction respondsToSelector:@selector(viewDidRepopulate:)])
1158
+ {
1159
+ [(id <YapDatabaseViewDependency>)extTransaction viewDidRepopulate:registeredName];
1160
+ }
1161
+ }
1162
+ }];
1163
+ }
1164
+
926
1165
  @end
927
1166
 
928
1167
  ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -933,11 +1172,19 @@
933
1172
 
934
1173
  - (void)setFilteringBlock:(YapDatabaseViewFilteringBlock)inFilteringBlock
935
1174
  filteringBlockType:(YapDatabaseViewBlockType)inFilteringBlockType
936
- tag:(NSString *)inTag
1175
+ versionTag:(NSString *)inVersionTag
937
1176
 
938
1177
  {
939
1178
  YDBLogAutoTrace();
940
1179
 
1180
+ NSAssert(inFilteringBlock != NULL, @"Invalid filteringBlock");
1181
+
1182
+ NSAssert(inFilteringBlockType == YapDatabaseViewBlockTypeWithKey ||
1183
+ inFilteringBlockType == YapDatabaseViewBlockTypeWithObject ||
1184
+ inFilteringBlockType == YapDatabaseViewBlockTypeWithMetadata ||
1185
+ inFilteringBlockType == YapDatabaseViewBlockTypeWithRow,
1186
+ @"Invalid filteringBlockType");
1187
+
941
1188
  if (!databaseTransaction->isReadWriteTransaction)
942
1189
  {
943
1190
  YDBLogWarn(@"%@ - Method only allowed in readWrite transaction", THIS_METHOD);
@@ -947,20 +1194,42 @@
947
1194
  __unsafe_unretained YapDatabaseFilteredView *filteredView =
948
1195
  (YapDatabaseFilteredView *)viewConnection->view;
949
1196
 
950
- NSString *newTag = inTag ? [inTag copy] : @"";
1197
+ NSString *newVersionTag = inVersionTag ? [inVersionTag copy] : @"";
951
1198
 
952
- if ([filteredView->tag isEqualToString:newTag])
1199
+ if ([filteredView->versionTag isEqualToString:newVersionTag])
953
1200
  {
954
- YDBLogWarn(@"%@ - Tag didn't change, so not updating view", THIS_METHOD);
1201
+ YDBLogWarn(@"%@ - versionTag didn't change, so not updating view", THIS_METHOD);
955
1202
  return;
956
1203
  }
957
1204
 
958
1205
  filteredView->filteringBlock = inFilteringBlock;
959
1206
  filteredView->filteringBlockType = inFilteringBlockType;
960
1207
 
961
- filteredView->tag = newTag;
1208
+ filteredView->versionTag = newVersionTag;
1209
+
1210
+ [self repopulateView];
1211
+ [self setStringValue:newVersionTag forExtensionKey:ExtKey_versionTag];
1212
+
1213
+ // Notify any extensions dependent upon this one that we repopulated.
962
1214
 
963
- [self repopulate];
1215
+ NSString *registeredName = [self registeredName];
1216
+ NSDictionary *extensionDependencies = databaseTransaction->connection->extensionDependencies;
1217
+
1218
+ [extensionDependencies enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){
1219
+
1220
+ __unsafe_unretained NSString *extName = (NSString *)key;
1221
+ __unsafe_unretained NSSet *extDependencies = (NSSet *)obj;
1222
+
1223
+ if ([extDependencies containsObject:registeredName])
1224
+ {
1225
+ YapDatabaseExtensionTransaction *extTransaction = [databaseTransaction ext:extName];
1226
+
1227
+ if ([extTransaction respondsToSelector:@selector(viewDidRepopulate:)])
1228
+ {
1229
+ [(id <YapDatabaseViewDependency>)extTransaction viewDidRepopulate:registeredName];
1230
+ }
1231
+ }
1232
+ }];
964
1233
  }
965
1234
 
966
1235
  @end