From ffd044b11d28775ae501ccaca3b79d640723eacc Mon Sep 17 00:00:00 2001 From: Geoff Schmidt Date: Tue, 6 Mar 2012 17:58:34 -0800 Subject: [PATCH] keep a snapshot of last values sent to client --- packages/livedata/livedata_server.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/livedata/livedata_server.js b/packages/livedata/livedata_server.js index 1545b67c46..7ff54b2d13 100644 --- a/packages/livedata/livedata_server.js +++ b/packages/livedata/livedata_server.js @@ -544,7 +544,6 @@ _.extend(Meteor._LivedataSubscription.prototype, { flush: function () { var self = this; - var msg; for (var name in self.pending_data) for (var id in self.pending_data[name]) { @@ -553,14 +552,21 @@ _.extend(Meteor._LivedataSubscription.prototype, { for (var key in self.pending_data[name][id]) { var value = self.pending_data[name][id][key]; + if (!(name in self.snapshot)) + self.snapshot[name] = {}; + if (!(id in self.snapshot[name])) + self.snapshot[name][id] = {}; + var snapshot = self.snapshot[name][id]; + if (value === undefined) { if (!('unset' in msg)) msg.unset = []; msg.unset.push(key); + delete snapshot[key]; } else { if (!('set' in msg)) msg.set = {}; - msg.set[key] = value; + snapshot[key] = msg.set[key] = value; } }