Browse Source

refactor: simplify request error handle (#838)

Signed-off-by: ryjiang <jiangruiyi@gmail.com>
ryjiang 2 months ago
parent
commit
49cf8f023c

+ 18 - 4
client/src/components/layout/GlobalEffect.tsx

@@ -30,13 +30,27 @@ const GlobalEffect = ({ children }: { children: React.ReactNode }) => {
     if (axiosResInterceptor === null) {
     if (axiosResInterceptor === null) {
       axiosResInterceptor = axiosInstance.interceptors.response.use(
       axiosResInterceptor = axiosInstance.interceptors.response.use(
         (response: any) => {
         (response: any) => {
-          if (
-            response.statusCode &&
-            response.statusCode !== HTTP_STATUS_CODE.OK
-          ) {
+          // Handle successful responses
+          const isHttpError =
+            response.statusCode && response.statusCode !== 200;
+
+          // check if the response is type of ResStatus and ResStatus.error_code !== 'Success'
+          const isResStatusError =
+            response.data &&
+            response.data.data &&
+            typeof response.data.data.error_code === 'string' &&
+            response.data.data.error_code !== 'Success';
+
+          if (isHttpError) {
             openSnackBar(response.data.message, 'warning');
             openSnackBar(response.data.message, 'warning');
             return Promise.reject(response.data);
             return Promise.reject(response.data);
           }
           }
+
+          if (isResStatusError) {
+            openSnackBar(response.data.data.reason, 'error');
+            return Promise.reject(response.data.data.reason);
+          }
+
           return response;
           return response;
         },
         },
         error => {
         error => {

+ 4 - 8
client/src/components/layout/Header.tsx

@@ -152,14 +152,10 @@ const Header: FC = () => {
           <UpdateUser
           <UpdateUser
             username={username}
             username={username}
             onUpdate={res => {
             onUpdate={res => {
-              if (res.error_code === 'Success') {
-                openSnackBar(successTrans('passwordChanged'));
-                handleCloseDialog();
-                setAnchorEl(null);
-                logout();
-              } else {
-                openSnackBar(res.detail, 'error');
-              }
+              openSnackBar(successTrans('passwordChanged'));
+              handleCloseDialog();
+              setAnchorEl(null);
+              logout();
             }}
             }}
             handleClose={handleCloseDialog}
             handleClose={handleCloseDialog}
           />
           />

+ 0 - 11
client/src/pages/databases/collections/partitions/Partitions.tsx

@@ -90,19 +90,8 @@ const Partitions = () => {
 
 
   // on delete
   // on delete
   const onDelete = (res: ResStatus[]) => {
   const onDelete = (res: ResStatus[]) => {
-    let hasError = false;
-    res.forEach(r => {
-      if (r.error_code !== 'Success') {
-        console.log('delete error', r);
-        openSnackBar(r.reason, 'error');
-        hasError = true;
-        return;
-      }
-    });
-
     fetchPartitions(collectionName);
     fetchPartitions(collectionName);
 
 
-    if (hasError) return;
     openSnackBar(successTrans('delete', { name: t('partition') }));
     openSnackBar(successTrans('delete', { name: t('partition') }));
   };
   };
 
 

+ 5 - 8
client/src/pages/dialogs/CreateDatabaseDialog.tsx

@@ -77,17 +77,14 @@ const CreateDatabaseDialog: FC<CreateDatabaseProps> = ({ onCreate }) => {
       setLoading(false);
       setLoading(false);
     });
     });
 
 
-    if (res.error_code === 'Success') {
-      openSnackBar(successTrans('create', { name: dbTrans('database') }));
+    openSnackBar(successTrans('create', { name: dbTrans('database') }));
 
 
-      handleCloseDialog();
+    handleCloseDialog();
 
 
-      if (onCreate) {
-        onCreate();
-      }
-    } else {
-      openSnackBar(res.reason, 'error');
+    if (onCreate) {
+      onCreate();
     }
     }
+
     setLoading(false);
     setLoading(false);
   };
   };
 
 

+ 6 - 18
client/src/pages/dialogs/DropCollectionDialog.tsx

@@ -19,24 +19,12 @@ const DropCollectionDialog: FC<DropCollectionProps> = props => {
       res.push(await dropCollection(item.collection_name));
       res.push(await dropCollection(item.collection_name));
     }
     }
 
 
-    if (res.some(item => item.error_code !== 'Success')) {
-      // show error message
-      openSnackBar(
-        res
-          .filter(item => item.error_code !== 'Success')
-          .map(item => item.reason)
-          .join(', '),
-        'error'
-      );
-      return;
-    } else {
-      // show success message
-      openSnackBar(
-        successTrans('delete', {
-          name: collectionTrans('collection'),
-        })
-      );
-    }
+    // show success message
+    openSnackBar(
+      successTrans('delete', {
+        name: collectionTrans('collection'),
+      })
+    );
 
 
     handleCloseDialog();
     handleCloseDialog();
     onDelete && (await onDelete());
     onDelete && (await onDelete());

+ 4 - 9
client/src/pages/dialogs/EditMmapDialog.tsx

@@ -158,7 +158,6 @@ const EditMmapDialog: FC<EditMmapProps> = props => {
 
 
   const handleConfirm = async () => {
   const handleConfirm = async () => {
     // Make the API call to update mmap settings
     // Make the API call to update mmap settings
-
     try {
     try {
       if (pendingCollectionMmap !== isCollectionMmapEnabled) {
       if (pendingCollectionMmap !== isCollectionMmapEnabled) {
         await setCollectionProperty(
         await setCollectionProperty(
@@ -173,14 +172,10 @@ const EditMmapDialog: FC<EditMmapProps> = props => {
           pendingChanges
           pendingChanges
         );
         );
 
 
-        if (res.error_code === 'Success') {
-          openSnackBar(
-            successTrans('updateMmap', { name: collection.collection_name }),
-            'success'
-          );
-        } else {
-          openSnackBar(res.reason, 'error');
-        }
+        openSnackBar(
+          successTrans('updateMmap', { name: collection.collection_name }),
+          'success'
+        );
       }
       }
     } catch (error) {
     } catch (error) {
       console.error('Error updating mmap settings:', error);
       console.error('Error updating mmap settings:', error);

+ 1 - 6
client/src/pages/user/Roles.tsx

@@ -117,12 +117,7 @@ const Roles = () => {
         roleName: role.roleName,
         roleName: role.roleName,
         force,
         force,
       };
       };
-      const d: any = await UserService.deleteRole(param);
-
-      if (d.error_code !== 'Success') {
-        openSnackBar(d.data.reason, 'error');
-        return;
-      }
+      await UserService.deleteRole(param);
     }
     }
 
 
     openSnackBar(successTrans('delete', { name: userTrans('role') }));
     openSnackBar(successTrans('delete', { name: userTrans('role') }));

+ 4 - 11
client/src/pages/user/User.tsx

@@ -72,10 +72,7 @@ const Users = () => {
 
 
   const handleCreate = async (data: CreateUserParams) => {
   const handleCreate = async (data: CreateUserParams) => {
     const s: any = await UserService.createUser(data);
     const s: any = await UserService.createUser(data);
-    if (s.error_code !== 'Success') {
-      openSnackBar(s.reason, 'error');
-      return;
-    }
+
     // assign user role if
     // assign user role if
     await UserService.updateUserRole({
     await UserService.updateUserRole({
       username: data.username,
       username: data.username,
@@ -96,13 +93,9 @@ const Users = () => {
   };
   };
 
 
   const onUpdateUserPass = async (res: any) => {
   const onUpdateUserPass = async (res: any) => {
-    if (res.error_code === 'Success') {
-      openSnackBar(successTrans('passwordChanged'));
-      fetchUsers();
-      handleCloseDialog();
-    } else {
-      openSnackBar(res.detail, 'error');
-    }
+    openSnackBar(successTrans('passwordChanged'));
+    fetchUsers();
+    handleCloseDialog();
   };
   };
 
 
   const handleDelete = async () => {
   const handleDelete = async () => {