feat: replace all panic by response err (#1993)

* fix: missing return after response error

* feat: handle error in frontend

* feat: disable loading and catch org edit error

* chore: i18 for error message

* chore: remove break line

* feat: application catching error
This commit is contained in:
Trần Thanh Tịnh
2023-06-27 20:33:47 +07:00
committed by GitHub
parent 0a8c2a35fe
commit cd7589775c
60 changed files with 416 additions and 155 deletions

View File

@ -76,6 +76,10 @@ class AdapterEditPage extends React.Component {
getModels(organizationName) {
ModelBackend.getModels(organizationName)
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
models: res,
});

View File

@ -118,20 +118,25 @@ class ApplicationEditPage extends React.Component {
getApplication() {
ApplicationBackend.getApplication("admin", this.state.applicationName)
.then((application) => {
if (application === null) {
.then((res) => {
if (res === null) {
this.props.history.push("/404");
return;
}
if (application.grantTypes === null || application.grantTypes === undefined || application.grantTypes.length === 0) {
application.grantTypes = ["authorization_code"];
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
if (res.grantTypes === null || res.grantTypes === undefined || res.grantTypes.length === 0) {
res.grantTypes = ["authorization_code"];
}
this.setState({
application: application,
application: res,
});
this.getCerts(application.organization);
this.getCerts(res.organization);
});
}

View File

@ -44,14 +44,19 @@ class CertEditPage extends React.Component {
getCert() {
CertBackend.getCert(this.state.owner, this.state.certName)
.then((cert) => {
if (cert === null) {
.then((res) => {
if (res === null) {
this.props.history.push("/404");
return;
}
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
cert: cert,
cert: res,
});
});
}

View File

@ -40,17 +40,21 @@ class ChatEditPage extends React.Component {
getChat() {
ChatBackend.getChat("admin", this.state.chatName)
.then((chat) => {
if (chat === null) {
.then((res) => {
if (res === null) {
this.props.history.push("/404");
return;
}
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
chat: chat,
chat: res,
});
this.getUsers(chat.organization);
this.getUsers(res.organization);
});
}
@ -66,6 +70,11 @@ class ChatEditPage extends React.Component {
getUsers(organizationName) {
UserBackend.getUsers(organizationName)
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
users: res,
});

View File

@ -74,8 +74,12 @@ class EntryPage extends React.Component {
});
ApplicationBackend.getApplication("admin", pricing.application)
.then((application) => {
const themeData = application !== null ? Setting.getThemeData(application.organizationObj, application) : Conf.ThemeDefault;
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
const themeData = res !== null ? Setting.getThemeData(res.organizationObj, res) : Conf.ThemeDefault;
this.props.updataThemeData(themeData);
});
};

View File

@ -45,17 +45,20 @@ class MessageEditPage extends React.Component {
getMessage() {
MessageBackend.getMessage("admin", this.state.messageName)
.then((message) => {
if (message === null) {
.then((res) => {
if (res === null) {
this.props.history.push("/404");
return;
}
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
message: message,
message: res,
});
this.getUsers(message.organization);
this.getUsers(res.organization);
});
}
@ -80,6 +83,10 @@ class MessageEditPage extends React.Component {
getUsers(organizationName) {
UserBackend.getUsers(organizationName)
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
users: res,
});

View File

@ -47,14 +47,19 @@ class ModelEditPage extends React.Component {
getModel() {
ModelBackend.getModel(this.state.organizationName, this.state.modelName)
.then((model) => {
if (model === null) {
.then((res) => {
if (res === null) {
this.props.history.push("/404");
return;
}
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
model: model,
model: res,
});
});
}

View File

@ -68,9 +68,14 @@ class OrganizationEditPage extends React.Component {
getApplications() {
ApplicationBackend.getApplicationsByOrganization("admin", this.state.organizationName)
.then((applications) => {
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
applications: applications,
applications: res,
});
});
}

View File

@ -49,21 +49,26 @@ class PermissionEditPage extends React.Component {
getPermission() {
PermissionBackend.getPermission(this.state.organizationName, this.state.permissionName)
.then((permission) => {
if (permission === null) {
.then((res) => {
if (res === null) {
this.props.history.push("/404");
return;
}
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
permission: permission,
permission: res,
});
this.getUsers(permission.owner);
this.getRoles(permission.owner);
this.getModels(permission.owner);
this.getResources(permission.owner);
this.getModel(permission.owner, permission.model);
this.getUsers(res.owner);
this.getRoles(res.owner);
this.getModels(res.owner);
this.getResources(res.owner);
this.getModel(res.owner, res.model);
});
}
@ -79,6 +84,10 @@ class PermissionEditPage extends React.Component {
getUsers(organizationName) {
UserBackend.getUsers(organizationName)
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
users: res,
});
@ -88,6 +97,10 @@ class PermissionEditPage extends React.Component {
getRoles(organizationName) {
RoleBackend.getRoles(organizationName)
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
roles: res,
});
@ -97,6 +110,10 @@ class PermissionEditPage extends React.Component {
getModels(organizationName) {
ModelBackend.getModels(organizationName)
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
models: res,
});
@ -106,6 +123,10 @@ class PermissionEditPage extends React.Component {
getModel(organizationName, modelName) {
ModelBackend.getModel(organizationName, modelName)
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
model: res,
});

View File

@ -64,6 +64,10 @@ class PlanEditPage extends React.Component {
getRoles(organizationName) {
RoleBackend.getRoles(organizationName)
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
roles: res,
});
@ -73,6 +77,10 @@ class PlanEditPage extends React.Component {
getUsers(organizationName) {
UserBackend.getUsers(organizationName)
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
users: res,
});

View File

@ -49,22 +49,31 @@ class PricingEditPage extends React.Component {
getPricing() {
PricingBackend.getPricing(this.state.organizationName, this.state.pricingName)
.then((pricing) => {
if (pricing === null) {
.then((res) => {
if (res === null) {
this.props.history.push("/404");
return;
}
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
pricing: pricing,
pricing: res,
});
this.getPlans(pricing.owner);
this.getPlans(res.owner);
});
}
getPlans(organizationName) {
PlanBackend.getPlans(organizationName)
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
plans: res,
});
@ -109,9 +118,13 @@ class PricingEditPage extends React.Component {
getUserApplication() {
ApplicationBackend.getUserApplication(this.state.organizationName, this.state.userName)
.then((application) => {
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
application: application,
application: res,
});
});
}

View File

@ -41,9 +41,14 @@ class ProductBuyPage extends React.Component {
}
ProductBackend.getProduct(this.props.account.owner, this.state.productName)
.then((product) => {
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
product: product,
product: res,
});
});
}

View File

@ -42,18 +42,22 @@ class RoleEditPage extends React.Component {
getRole() {
RoleBackend.getRole(this.state.organizationName, this.state.roleName)
.then((role) => {
if (role === null) {
.then((res) => {
if (res === null) {
this.props.history.push("/404");
return;
}
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
role: role,
role: res,
});
this.getUsers(role.owner);
this.getRoles(role.owner);
this.getUsers(res.owner);
this.getRoles(res.owner);
});
}
@ -69,6 +73,10 @@ class RoleEditPage extends React.Component {
getUsers(organizationName) {
UserBackend.getUsers(organizationName)
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
users: res,
});
@ -78,6 +86,10 @@ class RoleEditPage extends React.Component {
getRoles(organizationName) {
RoleBackend.getRoles(organizationName)
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
roles: res,
});

View File

@ -46,18 +46,23 @@ class SubscriptionEditPage extends React.Component {
getSubscription() {
SubscriptionBackend.getSubscription(this.state.organizationName, this.state.subscriptionName)
.then((subscription) => {
if (subscription === null) {
.then((res) => {
if (res === null) {
this.props.history.push("/404");
return;
}
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
subscription: subscription,
subscription: res,
});
this.getUsers(subscription.owner);
this.getPlanes(subscription.owner);
this.getUsers(res.owner);
this.getPlanes(res.owner);
});
}
@ -73,6 +78,10 @@ class SubscriptionEditPage extends React.Component {
getUsers(organizationName) {
UserBackend.getUsers(organizationName)
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
users: res,
});

View File

@ -47,14 +47,19 @@ class SyncerEditPage extends React.Component {
getSyncer() {
SyncerBackend.getSyncer("admin", this.state.syncerName)
.then((syncer) => {
if (syncer === null) {
.then((res) => {
if (res === null) {
this.props.history.push("/404");
return;
}
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
syncer: syncer,
syncer: res,
});
});
}

View File

@ -35,14 +35,19 @@ class TokenEditPage extends React.Component {
getToken() {
TokenBackend.getToken("admin", this.state.tokenName)
.then((token) => {
if (token === null) {
.then((res) => {
if (res === null) {
this.props.history.push("/404");
return;
}
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
token: token,
token: res,
});
});
}

View File

@ -121,13 +121,17 @@ class UserEditPage extends React.Component {
getUserApplication() {
ApplicationBackend.getUserApplication(this.state.organizationName, this.state.userName)
.then((application) => {
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
application: application,
application: res,
});
this.setState({
isGroupsVisible: application.organizationObj.accountItems?.some((item) => item.name === "Groups" && item.visible),
isGroupsVisible: res.organizationObj.accountItems?.some((item) => item.name === "Groups" && item.visible),
});
});
}

View File

@ -63,8 +63,12 @@ class ForgetPage extends React.Component {
}
ApplicationBackend.getApplication("admin", this.state.applicationName)
.then((application) => {
this.onUpdateApplication(application);
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.onUpdateApplication(res);
});
}
getApplicationObj() {

View File

@ -159,8 +159,12 @@ class LoginPage extends React.Component {
if (this.state.owner === null || this.state.type === "saml") {
ApplicationBackend.getApplication("admin", this.state.applicationName)
.then((application) => {
this.onUpdateApplication(application);
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.onUpdateApplication(res);
});
} else {
OrganizationBackend.getDefaultApplication("admin", this.state.owner)

View File

@ -188,10 +188,14 @@ class MfaSetupPage extends React.Component {
}
ApplicationBackend.getApplication("admin", this.state.applicationName)
.then((application) => {
if (application !== null) {
.then((res) => {
if (res !== null) {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
application: application,
application: res,
});
} else {
Setting.showMessage("error", i18next.t("mfa:Failed to get application"));

View File

@ -49,9 +49,14 @@ class PromptPage extends React.Component {
const organizationName = this.props.account.owner;
const userName = this.props.account.name;
UserBackend.getUser(organizationName, userName)
.then((user) => {
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.setState({
user: user,
user: res,
});
});
}
@ -62,10 +67,15 @@ class PromptPage extends React.Component {
}
ApplicationBackend.getApplication("admin", this.state.applicationName)
.then((application) => {
this.onUpdateApplication(application);
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.onUpdateApplication(res);
this.setState({
application: application,
application: res,
});
});
}

View File

@ -43,10 +43,14 @@ class ResultPage extends React.Component {
}
ApplicationBackend.getApplication("admin", this.state.applicationName)
.then((application) => {
this.onUpdateApplication(application);
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.onUpdateApplication(res);
this.setState({
application: application,
application: res,
});
});
}

View File

@ -108,8 +108,13 @@ class SignupPage extends React.Component {
}
ApplicationBackend.getApplication("admin", applicationName)
.then((application) => {
this.onUpdateApplication(application);
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
return;
}
this.onUpdateApplication(res);
});
}

View File

@ -127,6 +127,11 @@ export const CropperDivModal = (props) => {
setLoading(true);
ResourceBackend.getResources(user.owner, user.name, "", "", "", "", "", "")
.then((res) => {
if (res.status === "error") {
Setting.showMessage("error", res.msg);
setLoading(false);
return;
}
setLoading(false);
setOptions(getOptions(res));
});

View File

@ -569,6 +569,7 @@
"Copy pricing page URL": "Preisseite URL kopieren",
"Edit Pricing": "Edit Pricing",
"Free": "Kostenlos",
"Failed to get plans": "Es konnten keine Pläne abgerufen werden",
"Getting started": "Loslegen",
"New Pricing": "New Pricing",
"Trial duration": "Testphase Dauer",

View File

@ -569,6 +569,7 @@
"Copy pricing page URL": "Copy pricing page URL",
"Edit Pricing": "Edit Pricing",
"Free": "Free",
"Failed to get plans": "Failed to get plans",
"Getting started": "Getting started",
"New Pricing": "New Pricing",
"Trial duration": "Trial duration",

View File

@ -569,6 +569,7 @@
"Copy pricing page URL": "Copiar URL de la página de precios",
"Edit Pricing": "Edit Pricing",
"Free": "Gratis",
"Failed to get plans": "No se pudieron obtener los planes",
"Getting started": "Empezar",
"New Pricing": "New Pricing",
"Trial duration": "Duración del período de prueba",

View File

@ -569,6 +569,7 @@
"Copy pricing page URL": "Copier l'URL de la page tarifs",
"Edit Pricing": "Edit Pricing",
"Free": "Gratuit",
"Failed to get plans": "Échec de l'obtention des plans",
"Getting started": "Commencer",
"New Pricing": "New Pricing",
"Trial duration": "Durée de l'essai",

View File

@ -569,6 +569,7 @@
"Copy pricing page URL": "Salin URL halaman harga",
"Edit Pricing": "Edit Pricing",
"Free": "Gratis",
"Failed to get plans": "Gagal mendapatkan rencana",
"Getting started": "Mulai",
"New Pricing": "New Pricing",
"Trial duration": "Durasi percobaan",

View File

@ -569,6 +569,7 @@
"Copy pricing page URL": "価格ページのURLをコピー",
"Edit Pricing": "Edit Pricing",
"Free": "無料",
"Failed to get plans": "計画の取得に失敗しました",
"Getting started": "はじめる",
"New Pricing": "New Pricing",
"Trial duration": "トライアル期間の長さ",

View File

@ -569,6 +569,7 @@
"Copy pricing page URL": "가격 페이지 URL 복사",
"Edit Pricing": "Edit Pricing",
"Free": "무료",
"Failed to get plans": "계획을 가져오지 못했습니다.",
"Getting started": "시작하기",
"New Pricing": "New Pricing",
"Trial duration": "체험 기간",

View File

@ -569,6 +569,7 @@
"Copy pricing page URL": "Sao chép URL trang bảng giá",
"Edit Pricing": "Edit Pricing",
"Free": "Miễn phí",
"Failed to get plans": "Falha ao obter planos",
"Getting started": "Bắt đầu",
"New Pricing": "New Pricing",
"Trial duration": "Thời gian thử nghiệm",

View File

@ -569,6 +569,7 @@
"Copy pricing page URL": "Скопировать URL прайс-листа",
"Edit Pricing": "Edit Pricing",
"Free": "Бесплатно",
"Failed to get plans": "Не удалось получить планы",
"Getting started": "Выьрать план",
"New Pricing": "New Pricing",
"Trial duration": "Продолжительность пробного периода",

View File

@ -569,6 +569,7 @@
"Copy pricing page URL": "Sao chép URL trang bảng giá",
"Edit Pricing": "Edit Pricing",
"Free": "Miễn phí",
"Failed to get plans": "Không thể lấy được các kế hoạch",
"Getting started": "Bắt đầu",
"New Pricing": "New Pricing",
"Trial duration": "Thời gian thử nghiệm",

View File

@ -569,6 +569,7 @@
"Copy pricing page URL": "复制定价页面链接",
"Edit Pricing": "编辑定价",
"Free": "免费",
"Failed to get plans": "未能获取计划",
"Getting started": "开始使用",
"New Pricing": "添加定价",
"Trial duration": "试用期时长",

View File

@ -64,6 +64,11 @@ class PricingPage extends React.Component {
Promise.all(plans)
.then(results => {
const hasError = results.some(result => result.status === "error");
if (hasError) {
Setting.showMessage("error", `${i18next.t("Failed to get plans")}`);
return;
}
this.setState({
plans: results,
loading: false,
@ -81,6 +86,11 @@ class PricingPage extends React.Component {
PricingBackend.getPricing(this.state.owner, pricingName)
.then((result) => {
if (result.status === "error") {
Setting.showMessage("error", result.msg);
return;
}
this.setState({
loading: false,
pricing: result,