1
0
Fork 0
mirror of https://github.com/TryGhost/Ghost-Admin.git synced 2023-12-14 02:33:04 +01:00
Ghost-Admin/app/controllers/members.js

58 lines
1.6 KiB
JavaScript
Raw Normal View History

import Controller from '@ember/controller';
2019-02-23 11:14:00 +01:00
import {computed} from '@ember/object';
import {inject as service} from '@ember/service';
import {task} from 'ember-concurrency';
/* eslint-disable ghost/ember/alias-model-in-controller */
export default Controller.extend({
store: service(),
meta: null,
members: null,
2019-02-23 11:14:00 +01:00
searchText: '',
init() {
this._super(...arguments);
this.set('members', this.store.peekAll('member'));
},
2019-02-23 11:14:00 +01:00
filteredMembers: computed('members.@each.{name,email}', 'searchText', function () {
let {members, searchText} = this;
searchText = searchText.toLowerCase();
let filtered = members.filter((member) => {
if (!searchText) {
return true;
}
let {name, email} = member;
return name.toLowerCase().indexOf(searchText) >= 0
|| email.toLowerCase().indexOf(searchText) >= 0;
});
return filtered;
}),
fetchMembers: task(function* () {
let newFetchDate = new Date();
let results;
if (this._hasFetchedAll) {
// fetch any records modified since last fetch
results = yield this.store.query('member', {
limit: 'all',
filter: `updated_at:>='${this._lastFetchDate.toISOString()}'`
});
} else {
// fetch all records
results = yield this.store.query('member', {
limit: 'all'
});
this._hasFetchedAll = true;
}
this.set('meta', results.meta);
this._lastFetchDate = newFetchDate;
})
});