refactor: Policies Architecture (#1016)
* add policy serialize method * Add policies to collection responses * wip * test: remove .only * refactor: Return policies with team and document requests * store policies on the client * refactor: drive admin UI from policies
This commit is contained in:
@ -37,6 +37,12 @@ export default class BaseStore<T: BaseModel> {
|
||||
this.data.clear();
|
||||
}
|
||||
|
||||
addPolicies = policies => {
|
||||
if (policies) {
|
||||
policies.forEach(policy => this.rootStore.policies.add(policy));
|
||||
}
|
||||
};
|
||||
|
||||
@action
|
||||
add = (item: Object): T => {
|
||||
const Model = this.model;
|
||||
@ -80,6 +86,8 @@ export default class BaseStore<T: BaseModel> {
|
||||
const res = await client.post(`/${this.modelName}s.create`, params);
|
||||
|
||||
invariant(res && res.data, 'Data should be available');
|
||||
|
||||
this.addPolicies(res.policies);
|
||||
return this.add(res.data);
|
||||
} finally {
|
||||
this.isSaving = false;
|
||||
@ -97,6 +105,8 @@ export default class BaseStore<T: BaseModel> {
|
||||
const res = await client.post(`/${this.modelName}s.update`, params);
|
||||
|
||||
invariant(res && res.data, 'Data should be available');
|
||||
|
||||
this.addPolicies(res.policies);
|
||||
return this.add(res.data);
|
||||
} finally {
|
||||
this.isSaving = false;
|
||||
@ -132,6 +142,8 @@ export default class BaseStore<T: BaseModel> {
|
||||
try {
|
||||
const res = await client.post(`/${this.modelName}s.info`, { id });
|
||||
invariant(res && res.data, 'Data should be available');
|
||||
|
||||
this.addPolicies(res.policies);
|
||||
return this.add(res.data);
|
||||
} finally {
|
||||
this.isFetching = false;
|
||||
@ -149,7 +161,9 @@ export default class BaseStore<T: BaseModel> {
|
||||
const res = await client.post(`/${this.modelName}s.list`, params);
|
||||
|
||||
invariant(res && res.data, 'Data not available');
|
||||
|
||||
runInAction(`list#${this.modelName}`, () => {
|
||||
this.addPolicies(res.policies);
|
||||
res.data.forEach(this.add);
|
||||
this.isLoaded = true;
|
||||
});
|
||||
|
Reference in New Issue
Block a user