skyline/src/stores/keystone/domain.js
Jingwei.Zhang f81ac5651a fix: Fix word spell
1. Add eslint plugin spellcheck to check word spell
2. Fix word spell

Change-Id: I73d39cf797ef5bdf993b0154816134a1e93f2ed4
2022-01-18 11:25:58 +08:00

150 lines
3.8 KiB
JavaScript

// Copyright 2021 99cloud
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import { action, observable } from 'mobx';
import { get } from 'lodash';
import client from 'client';
import Base from 'stores/base';
export class DomainStore extends Base {
@observable
domains = [];
@observable
domainUsers = [];
@observable
adminRoleId = '';
get client() {
return client.keystone.domains;
}
get userClient() {
return client.keystone.users;
}
@action
async fetchList({
limit,
page,
sortKey,
sortOrder,
conditions,
...filters
} = {}) {
this.list.isLoading = true;
// todo: no page, no limit, fetch all
// const params = { ...filters };
await Promise.all([this.client.list(), this.userClient.list()]).then(
([domainsResult, usersResult]) => {
const { domains } = domainsResult;
// eslint-disable-next-line array-callback-return
domains.map((domain) => {
const domainUsers = usersResult.users.filter(
(it) => it.domain_id === domain.id
);
domain.user_num = domainUsers.length;
});
// const { domains: items } = domainsResult;
this.list.update({
data: domains,
total: domains.length || 0,
limit: Number(limit) || 10,
page: Number(page) || 1,
sortKey,
sortOrder,
filters,
isLoading: false,
...(this.list.silent ? {} : { selectedRowKeys: [] }),
});
return domains;
}
);
}
@action
async fetchDetail({ id, silent }) {
if (!silent) {
this.isLoading = true;
}
await Promise.all([this.client.show(id), this.userClient.list()]).then(
([result, usersResult]) => {
const domain = this.mapper(get(result, this.responseKey) || result);
domain.domain_administrator = [];
const domainUsers = usersResult.users.filter(
(it) => it.domain_id === domain.id
);
domain.user_num = domainUsers.length;
this.domainUsers = domainUsers;
this.detail = domain;
this.isLoading = false;
return domain;
}
);
}
@action
async fetchDomain() {
const domainsResult = await this.client.list();
this.domains = domainsResult.domains;
}
@action
async update({ id, body }) {
this.isSubmitting = true;
const resData = await this.client.update(id, body);
this.isSubmitting = false;
return resData;
}
@action
async edit({ id, description }) {
const reqBody = {
domain: { description },
};
return this.submitting(this.client.patch(id, reqBody));
}
async setDomainAdmin({ id, user_id, role_id }) {
return this.submitting(this.client.users.roles.put(id, user_id, role_id));
}
async deleteDomainAdmin({ id, user_id, role_id }) {
const result = await this.client.users.roles.delete(id, user_id, role_id);
return result;
}
@action
async forbidden({ id }) {
const reqBody = {
domain: { enabled: false },
};
return this.submitting(this.client.patch(id, reqBody));
}
@action
async enable({ id }) {
const reqBody = {
domain: { enabled: true },
};
return this.submitting(this.client.patch(id, reqBody));
}
}
const globalDomainStore = new DomainStore();
export default globalDomainStore;