Преглед изворни кода

Merge pull request #6831 from mizozobu/feat/g2g-show-error

feat: show g2g error
Haku Mizuki пре 3 година
родитељ
комит
1dd612a7f6

+ 5 - 0
packages/app/public/static/locales/en_US/admin.json

@@ -1041,5 +1041,10 @@
     "once_transfer_key_used": "Once the transfer key is used for transfer, it cannot be used for any other transfer.",
     "transfer_to_growi_cloud": "If you wish to transfer to GROWI.cloud, please click here.",
     "paste_transfer_key": "Paste transter key here"
+  },
+  "g2g": {
+    "error_upload_attachment": "Failed to upload attachment <code>%s</code>",
+    "error_generate_growi_archive": "Failed to generate GROWI archive file",
+    "error_send_growi_archive": "Failed to send GROWI archive file to new GROWI"
   }
 }

+ 5 - 0
packages/app/public/static/locales/ja_JP/admin.json

@@ -1040,5 +1040,10 @@
     "ADMIN_SEARCH_CONNECTION": "Elasticsearch の再接続の試行",
     "ADMIN_SEARCH_INDICES_NORMALIZE": "Elasticsearch のインデックスの正規化",
     "ADMIN_SEARCH_INDICES_REBUILD": "Elasticsearch のインデックスのリビルド"
+  },
+  "g2g": {
+    "error_upload_attachment": "添付ファイルのアップロードに失敗しました",
+    "error_generate_growi_archive": "GROWI アーカイブファイルの作成に失敗しました",
+    "error_send_growi_archive": "GROWI アーカイブファイルの送信に失敗しました"
   }
 }

+ 5 - 0
packages/app/public/static/locales/zh_CN/admin.json

@@ -1006,5 +1006,10 @@
     "ADMIN_SEARCH_CONNECTION": "重试Elasticsearch连接",
     "ADMIN_SEARCH_INDICES_NORMALIZE": "试图重新连接Elasticsearch",
     "ADMIN_SEARCH_INDICES_REBUILD": "重建 Elasticsearch 索引"
+  },
+  "g2g": {
+    "error_upload_attachment": "Failed to upload attachment <code>%s</code>",
+    "error_generate_growi_archive": "Failed to generate GROWI archive file",
+    "error_send_growi_archive": "Failed to send GROWI archive file to new GROWI"
   }
 }

+ 7 - 0
packages/app/src/components/Admin/G2GDataTransfer.tsx

@@ -69,6 +69,11 @@ const G2GDataTransfer = (): JSX.Element => {
         setTransferring(false);
         setStatusMessage(t('Successfully transferred GROWI. Now you can use new GROWI !'));
       });
+
+      socket.on('admin:onG2gError', ({ key }) => {
+        setTransferring(false);
+        setStatusMessage(t(key));
+      });
     }
   }, [socket, t]);
 
@@ -79,6 +84,8 @@ const G2GDataTransfer = (): JSX.Element => {
       socket.off('admin:onStartTransferAttachments');
 
       socket.off('admin:onFinishTransfer');
+
+      socket.off('admin:onG2gError');
     }
   }, [socket]);
 

+ 8 - 25
packages/app/src/server/service/g2g-transfer.ts

@@ -267,6 +267,7 @@ export class G2GTransferPusherService implements Pusher {
   public async transferAttachments(tk: TransferKey): Promise<void> {
     const BATCH_SIZE = 100;
 
+    const socket = this.crowi.socketIoService.getAdminSocket();
     const { fileUploadService } = this.crowi;
     const Attachment = this.crowi.model('Attachment');
 
@@ -292,19 +293,8 @@ export class G2GTransferPusherService implements Pusher {
         try {
           await this.doTransferAttachment(tk, attachment, fileStream);
         }
-        catch (errs) {
-          logger.error(`Error occured when uploading attachment(ID=${attachment.id})`, errs);
-          if (!Array.isArray(errs)) {
-            // TODO: socker.emit(failed_to_transfer);
-            return;
-          }
-
-          const err = errs[0];
-          logger.error(err);
-
-
-          // TODO: socker.emit(failed_to_transfer);
-          return;
+        catch (err) {
+          logger.error(`Error occured when uploading attachment(ID=${attachment.id})`, err);
         }
       }
     }
@@ -332,6 +322,7 @@ export class G2GTransferPusherService implements Pusher {
     }
     catch (err) {
       logger.error(err);
+      socket.emit('admin:onG2gError', { message: 'Failed to generate GROWI archive file', key: 'error_generate_growi_archive' });
       throw err;
     }
 
@@ -348,19 +339,10 @@ export class G2GTransferPusherService implements Pusher {
       form.append('uploadConfigs', JSON.stringify(uploadConfigs));
       await rawAxios.post('/_api/v3/g2g-transfer/', form, generateAxiosRequestConfigWithTransferKey(tk, form.getHeaders()));
     }
-    catch (errs) {
-      logger.error(errs);
-      if (!Array.isArray(errs)) {
-        // TODO: socker.emit(failed_to_transfer);
-        throw errs;
-      }
-
-      const err = errs[0];
+    catch (err) {
       logger.error(err);
-
-
-      // TODO: socker.emit(failed_to_transfer);
-      throw errs;
+      socket.emit('admin:onG2gError', { message: 'Failed to send GROWI archive file to new GROWI', key: 'error_send_growi_archive' });
+      throw err;
     }
 
     if (shouldEmit) socket.emit('admin:onStartTransferAttachments', {});
@@ -370,6 +352,7 @@ export class G2GTransferPusherService implements Pusher {
     }
     catch (err) {
       logger.error(err);
+      socket.emit('admin:onG2gError', { message: 'Failed to transfer attachments', key: 'error_upload_attachment' });
       throw err;
     }