diff --git a/ui/app/utils/properties/watch.js b/ui/app/utils/properties/watch.js index f447144ca..209b42746 100644 --- a/ui/app/utils/properties/watch.js +++ b/ui/app/utils/properties/watch.js @@ -1,8 +1,10 @@ import Ember from 'ember'; import { get } from '@ember/object'; +import { assert } from '@ember/debug'; import RSVP from 'rsvp'; import { task } from 'ember-concurrency'; import wait from 'nomad-ui/utils/wait'; +import Watchable from 'nomad-ui/adapters/watchable'; import XHRToken from 'nomad-ui/utils/classes/xhr-token'; import config from 'nomad-ui/config/environment'; @@ -10,6 +12,10 @@ const isEnabled = config.APP.blockingQueries !== false; export function watchRecord(modelName) { return task(function*(id, throttle = 2000) { + assert( + 'To watch a record, the record adapter MUST extend Watchable', + this.store.adapterFor(modelName) instanceof Watchable + ); const token = new XHRToken(); if (typeof id === 'object') { id = get(id, 'id'); @@ -35,6 +41,10 @@ export function watchRecord(modelName) { export function watchRelationship(relationshipName) { return task(function*(model, throttle = 2000) { + assert( + 'To watch a relationship, the adapter of the model provided to the watchRelationship task MUST extend Watchable', + this.store.adapterFor(model.constructor.modelName) instanceof Watchable + ); const token = new XHRToken(); while (isEnabled && !Ember.testing) { try { @@ -56,6 +66,10 @@ export function watchRelationship(relationshipName) { export function watchAll(modelName) { return task(function*(throttle = 2000) { + assert( + 'To watch all, the respective adapter MUST extend Watchable', + this.store.adapterFor(modelName) instanceof Watchable + ); const token = new XHRToken(); while (isEnabled && !Ember.testing) { try { @@ -78,6 +92,10 @@ export function watchAll(modelName) { export function watchQuery(modelName) { return task(function*(params, throttle = 10000) { + assert( + 'To watch a query, the adapter for the type being queried MUST extend Watchable', + this.store.adapterFor(modelName) instanceof Watchable + ); const token = new XHRToken(); while (isEnabled && !Ember.testing) { try {