ui/lib/shared/addon/mixins/preload.js

43 lines
1.1 KiB
JavaScript

import Mixin from '@ember/object/mixin';
import { get, set } from '@ember/object';
import { inject as service } from '@ember/service';
import Errors from 'shared/utils/errors';
export default Mixin.create({
access: service(),
growl: service(),
preload(type, storeName = 'store', opt = null) {
return get(this, storeName).find(type, null, opt);
},
loadSchemas(storeName) {
var store = get(this, storeName);
store.resetType('schema');
return store.rawRequest({
url: 'schema',
dataType: 'json'
}).then((xhr) => {
store._state.foundAll['schema'] = true;
store._bulkAdd('schema', xhr.body.data);
});
},
loadingError(err, transition) {
let isAuthFail = err && err.status && [401, 403].includes(err.status);
var msg = Errors.stringify(err);
console.log('Loading Error:', msg, err);
if ( isAuthFail ) {
set(this, 'access.enabled', true);
transition.send('logout');
} else {
get(this, 'growl').fromError(err);
this.replaceWith('global-admin.clusters');
}
},
});