John Cowen 2b0b1e61d2 ui: Remove WithEventSource mixin, use a component instead (#7953)
The WithEventSource mixin was responsible for catching EventSource
errors and cleaning up events sources then the user left a Controller.

As we are trying to avoid mixin usage, we moved this all to an
`EventSource` component, which can clean up when the component is
removed from the page, and also fires an onerror event.

Moving to a component firing an onerror event means we can also remove
all of our custom computed property work that we were using previously
to catch errors (thrown when a service etc. is removed)
2020-06-17 13:20:42 +00:00

30 lines
828 B
JavaScript

import Controller from '@ember/controller';
import { get } from '@ember/object';
import { inject as service } from '@ember/service';
export default Controller.extend({
dom: service('dom'),
notify: service('flashMessages'),
actions: {
error: function(e) {
if (e.target.readyState === 1) {
// OPEN
if (get(e, 'error.errors.firstObject.status') === '404') {
this.notify.add({
destroyOnClick: false,
sticky: true,
type: 'warning',
action: 'update',
});
}
[e.target, this.intentions, this.chain, this.proxies, this.gatewayServices].forEach(
function(item) {
if (item && typeof item.close === 'function') {
item.close();
}
}
);
}
},
},
});