summaryrefslogtreecommitdiff
path: root/src/client/model
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2015-01-06 15:35:19 +0200
committerAlon Levy <alon@pobox.com>2015-01-06 15:35:19 +0200
commitc9ca9ab48733366539e1a5789ab05eb4fb0a8e0f (patch)
treeba3b2cd0e0d734a06f627bc64a54404a3bc3c9b4 /src/client/model
parent7fd7384da2703a9d48caa6a2c82ceca9aa809262 (diff)
client/model/graph: don't send existing nodes in commit diffs
Diffstat (limited to 'src/client/model')
-rw-r--r--src/client/model/graph.js23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/client/model/graph.js b/src/client/model/graph.js
index 24255070..83f28435 100644
--- a/src/client/model/graph.js
+++ b/src/client/model/graph.js
@@ -77,15 +77,20 @@ function Graph(spec) {
*/
var commit_and_tx_diff__topo = function (topo_diff) {
$.merge(topo_diff.link_set_rm, nodes_to_touched_links(topo_diff.node_set_rm));
- topo_diff.node_set_add = topo_diff.node_set_add.map(function(n) {
- util.assert(undefined !== n.id, "undefined id in node in topo diff");
- util.assert(undefined === server_pending_objects[n.id], "cache full at id");
-
- server_pending_objects[n.id] = {
- name: n.name,
- }; // FIXME: url, startdate, etc - all properties. i.e. a Node to spec function
- return model_util.adapt_format_write_node(n);
- });
+ topo_diff.node_set_add = topo_diff.node_set_add
+ .filter(function(n) {
+ util.assert(undefined !== n.id, "undefined id in node in topo diff");
+ util.assert(undefined === server_pending_objects[n.id], "cache full at id");
+ return find_node__by_id(n.id) === undefined;
+ })
+ .map(function(n) {
+ // FIXME: url, startdate, etc - all properties. i.e. a Node to
+ // spec function
+ server_pending_objects[n.id] = {
+ name: n.name,
+ };
+ return model_util.adapt_format_write_node(n);
+ });
topo_diff.link_set_add = topo_diff.link_set_add.map(function(l) {
util.assert(l.id !== undefined, "undefined id in link in topo diff");