From 7b8fec8e8a281309335c1961bbee9544dee1e38c Mon Sep 17 00:00:00 2001 From: Thaum Date: Wed, 28 Jan 2015 10:47:52 +0000 Subject: [PATCH] Fixed errors thrown when observing the effects collection during startup --- rpg-docs/Model/Character/Effects.js | 16 ---------------- rpg-docs/Model/Inventory/Items.js | 29 +++++++++++++++++++++-------- 2 files changed, 21 insertions(+), 24 deletions(-) diff --git a/rpg-docs/Model/Character/Effects.js b/rpg-docs/Model/Character/Effects.js index 224c3355..82194e05 100644 --- a/rpg-docs/Model/Character/Effects.js +++ b/rpg-docs/Model/Character/Effects.js @@ -51,19 +51,3 @@ Schemas.Effect = new SimpleSchema({ }); Effects.attachSchema(Schemas.Effect); - -//Keep effects in-sync with items -Effects.find({type: "equipment"}, {fields: {type: 1, enabled: 1, sourceId: 1}}).observe({ - added: function(newEffect){ - var item = Items.findOne(newEffect.sourceId); - if(item && item.equipped !== newEffect.enabled){ - Effects.update(newEffect._id, {$set: {enabled: item.equipped}}) - } - }, - changed: function(newEffect, oldEffect){ - var item = Items.findOne(newEffect.sourceId); - if(item && item.equipped !== newEffect.enabled){ - Effects.update(newEffect._id, {$set: {enabled: item.equipped}}) - } - } -}) \ No newline at end of file diff --git a/rpg-docs/Model/Inventory/Items.js b/rpg-docs/Model/Inventory/Items.js index 5894ab95..7423f039 100644 --- a/rpg-docs/Model/Inventory/Items.js +++ b/rpg-docs/Model/Inventory/Items.js @@ -38,17 +38,15 @@ Items.helpers({ //keep effects sycned with items Items.find({}, {fields: {equipped: 1}}).observeChanges({ added: function(id, fields){ - Effects.find({type: "equipment", sourceId: id}, {fields: {enabled: 1} }).forEach(function(effect){ - if(fields.equipped !== effect.enabled){ - Effects.update(effect._id, {$set: {enabled: fields.equipped}}) - } + Effects.find({ type: "equipment", sourceId: id, enabled: {$ne: fields.equipped} }, + {fields: {enabled: 1} }).forEach(function(effect){ + Effects.update(effect._id, {$set: {enabled: fields.equipped}}) }); }, changed: function(id, fields){ - Effects.find({type: "equipment", sourceId: id}, {fields: {enabled: 1} }).forEach(function(effect){ - if(fields.equipped !== effect.enabled){ - Effects.update(effect._id, {$set: {enabled: fields.equipped}}) - } + Effects.find({type: "equipment", sourceId: id, enabled: {$ne: fields.equipped} }, + {fields: {enabled: 1} }).forEach(function(effect){ + Effects.update(effect._id, {$set: {enabled: fields.equipped}}) }); }, removed: function(id){ @@ -57,3 +55,18 @@ Items.find({}, {fields: {equipped: 1}}).observeChanges({ }); } }); + +Effects.find({type: "equipment"}, {fields: {type: 1, enabled: 1, sourceId: 1}}).observe({ + added: function(newEffect){ + var item = Items.findOne(newEffect.sourceId, {fields: {equipped: 1}}); + if(item && item.equipped !== newEffect.enabled){ + Effects.update(newEffect._id, {$set: {enabled: item.equipped}}) + } + }, + changed: function(newEffect, oldEffect){ + var item = Items.findOne(newEffect.sourceId, {fields: {equipped: 1}}); + if(item && item.equipped !== newEffect.enabled){ + Effects.update(newEffect._id, {$set: {enabled: item.equipped}}) + } + } +})