| 
					
				 | 
			
			
				@@ -293,8 +293,8 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       (page-handler/delete! page-name nil {:redirect-to-home? false :persist-op? false})))) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-(defn- filter-remote-data-by-local-unpushed-ops 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  "when remote-data request client to move/update blocks, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(defn filter-remote-data-by-local-unpushed-ops 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  "when remote-data request client to move/update/remove/... blocks, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   these updates maybe not needed, because this client just updated some of these blocks, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   so we need to filter these just-updated blocks out, according to the unpushed-local-ops in indexeddb" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   [affected-blocks-map local-unpushed-ops] 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -303,17 +303,22 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      (case (first local-op) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        "move" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        (let [block-uuids (:block-uuids (second local-op)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             remote-ops (vals (select-keys affected-blocks-map block-uuids)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             block-uuids-to-del-in-result 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-             (keep (fn [op] (when (= :move (:op op)) (:self op))) remote-ops)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         (apply dissoc affected-blocks-map block-uuids-to-del-in-result)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             remote-ops (vals (select-keys affected-blocks-map block-uuids))] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+         (reduce 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          (fn [r remote-op] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            (case (:op remote-op) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :remove (dissoc r (:block-uuid remote-op)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              :move (dissoc r (:self remote-op)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              ;; default 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+              r)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          affected-blocks-map remote-ops)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        "update" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        (let [block-uuid (:block-uuid (second local-op)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				              local-updated-attr-set (set (keys (:updated-attrs (second local-op))))] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          (if-let [remote-op (get affected-blocks-map block-uuid)] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            (assoc affected-blocks-map block-uuid 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                  (if (= :update-attrs (:op remote-op)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                  (if (#{:update-attrs :move} (:op remote-op)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     (apply dissoc remote-op local-updated-attr-set) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     remote-op)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            affected-blocks-map)) 
			 |