Proper way to monitor state changes of the records?


#1

I am using a service at the backend that push data to store in realtime, via EventSource . While store.createRecord().save() is pushing into backend , it conflicts with client side store , and it cause duplicated records. As suggested by ember community at slack , i check the state of isSaving at records array , to make sure it won’t conflict , and then push later when isSaving is false . So it pushes to client side store after data is saved properly. I use Ember.run.later with an interval to repeatedly check , but is there better way to do? like monitoring state change of isSaving?

services’s code (subscribe is eventsource subscriber)

  start() {
    var unbind = subscribe('http://localhost:9999/updates', (data) => {
      var incoming = JSON.parse(data)
      var gid = incoming.id

      var curstore = this.get('store').peekAll('message')
      var checkSave = () => {
        if (this.get('store').peekAll('message').isAny("isSaving", true)) {
          Ember.run.later(() => {
            checkSave()
          }, 100)

        } else {
        this.get('store').pushPayload({
          'message': incoming
        })        }
      };

      checkSave()
    });
  },

How to store.createRecord().save() without immediately effecting the client side instance?