Sukima8th June 2018 at 3:12pm
import ObjectProxy from '@ember/object/proxy';
import ArrayProxy from '@ember/array/proxy';
import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';
import { computed } from '@ember/object';
import { expandProperties } from '@ember/object/computed';
export const ObjectResponsePending = ObjectProxy.extend(PromiseProxyMixin);
export const ArrayResponsePending = ArrayProxy.extend(PromiseProxyMixin);
export function expandAllDependencies(depList) {
let dependencies = [];
function register(dependency) {
dependencies.push(dependency);
}
for (let dependency of depList) {
expandProperties(dependency, register);
}
return dependencies;
}
export function asyncObject(fnName, depList) {
let dependencies = expandAllDependencies(depList);
return computed(...dependencies, function() {
let promise = resolve(fnName());
let wrapper = ObjectResponsePending.create({ promise });
wrapper.catch(() => {});
return wrapper;
});
}
export function asyncArray(fnName) {
let dependencies = expandAllDependencies(depList);
return computed(...dependencies, function() {
let promise = resolve(fnName());
let wrapper = ArrayResponsePending.create({ promise });
wrapper.catch(() => {});
return wrapper;
});
}