fix some minor bugs
This commit is contained in:
@@ -76,7 +76,6 @@ define([
|
|||||||
cfg.onReady(info);
|
cfg.onReady(info);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
var onRemote = config.onRemote = function (info) {
|
var onRemote = config.onRemote = function (info) {
|
||||||
var userDoc = realtime.getUserDoc();
|
var userDoc = realtime.getUserDoc();
|
||||||
var parsed = JSON.parse(userDoc);
|
var parsed = JSON.parse(userDoc);
|
||||||
|
|||||||
@@ -6,6 +6,13 @@ define([
|
|||||||
|
|
||||||
var deepProxy = {};
|
var deepProxy = {};
|
||||||
|
|
||||||
|
// for passing messages while recursing. use powers of two in case we ever
|
||||||
|
// need to pass multiple message types (via bitpacking)
|
||||||
|
var Messages = deepProxy.Messages = {
|
||||||
|
CHANGE: 1,
|
||||||
|
REMOVE: 2
|
||||||
|
};
|
||||||
|
|
||||||
var isArray = deepProxy.isArray = function (obj) {
|
var isArray = deepProxy.isArray = function (obj) {
|
||||||
return Object.prototype.toString.call(obj)==='[object Array]';
|
return Object.prototype.toString.call(obj)==='[object Array]';
|
||||||
};
|
};
|
||||||
@@ -21,10 +28,8 @@ define([
|
|||||||
var setter = deepProxy.set = function (cb) {
|
var setter = deepProxy.set = function (cb) {
|
||||||
return function (obj, prop, value) {
|
return function (obj, prop, value) {
|
||||||
if (prop === 'on') {
|
if (prop === 'on') {
|
||||||
return;
|
|
||||||
throw new Error("'on' is a reserved attribute name for realtime lists and maps");
|
throw new Error("'on' is a reserved attribute name for realtime lists and maps");
|
||||||
}
|
}
|
||||||
if (obj[prop] === value) { return value; }
|
|
||||||
|
|
||||||
var t_value = type(value);
|
var t_value = type(value);
|
||||||
if (['array', 'object'].indexOf(t_value) !== -1) {
|
if (['array', 'object'].indexOf(t_value) !== -1) {
|
||||||
@@ -36,7 +41,7 @@ define([
|
|||||||
}
|
}
|
||||||
|
|
||||||
cb();
|
cb();
|
||||||
return obj[prop];
|
return obj[prop] || true; // always return truthey or you have problems
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -58,6 +63,9 @@ define([
|
|||||||
var on = function (evt, pattern, f) {
|
var on = function (evt, pattern, f) {
|
||||||
switch (evt) {
|
switch (evt) {
|
||||||
case 'change':
|
case 'change':
|
||||||
|
// pattern needs to be an array
|
||||||
|
pattern = type(pattern) === 'array'? pattern: [pattern];
|
||||||
|
|
||||||
console.log("[MOCK] adding change listener at path [%s]", pattern.join(','));
|
console.log("[MOCK] adding change listener at path [%s]", pattern.join(','));
|
||||||
events.change.push(function (oldval, newval, path, root) {
|
events.change.push(function (oldval, newval, path, root) {
|
||||||
if (pathMatches(path, pattern)) {
|
if (pathMatches(path, pattern)) {
|
||||||
@@ -85,10 +93,6 @@ define([
|
|||||||
} else if (prop === '_events') {
|
} else if (prop === '_events') {
|
||||||
return events;
|
return events;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME magic?
|
|
||||||
if (prop === 'length' && typeof(obj.length) === 'number') { return obj.length; }
|
|
||||||
|
|
||||||
return obj[prop];
|
return obj[prop];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@@ -286,7 +290,7 @@ define([
|
|||||||
var t_a = type(A[i]);
|
var t_a = type(A[i]);
|
||||||
var t_b = type(b);
|
var t_b = type(b);
|
||||||
|
|
||||||
var old = B[i];
|
var old = A[i];
|
||||||
|
|
||||||
if (t_a !== t_b) {
|
if (t_a !== t_b) {
|
||||||
// type changes are always destructive
|
// type changes are always destructive
|
||||||
|
|||||||
Reference in New Issue
Block a user