itizawa пре 5 година
родитељ
комит
50584b9bbe

+ 8 - 1
src/server/crowi/index.js

@@ -547,9 +547,16 @@ Crowi.prototype.setUpApp = async function() {
  * setup FileUploadService
  */
 Crowi.prototype.setUpFileUpload = async function() {
+  const FileUploadService = require('../service/file-uploader')(this);
   if (this.fileUploadService == null) {
-    this.fileUploadService = require('../service/file-uploader')(this);
+    this.fileUploadService = FileUploadService.getUploader(this);
+
+    // add as a message handler
+    if (this.s2sMessagingService != null) {
+      this.s2sMessagingService.addMessageHandler(this.fileUploadService);
+    }
   }
+
 };
 
 /**

+ 4 - 6
src/server/routes/apiv3/app-settings.js

@@ -580,9 +580,8 @@ module.exports = (crowi) => {
     };
 
     try {
-      await crowi.configManager.updateConfigsInTheSameNamespace('crowi', requestAwsSettingParams);
-
-      // TODO GW-3797 re-setup file uploader
+      await crowi.configManager.updateConfigsInTheSameNamespace('crowi', requestAwsSettingParams, true);
+      crowi.fileUploadService.publishUpdatedMessage();
 
       const awsSettingParams = {
         s3Region: crowi.configManager.getConfig('crowi', 'aws:s3Region'),
@@ -633,9 +632,8 @@ module.exports = (crowi) => {
     };
 
     try {
-      await crowi.configManager.updateConfigsInTheSameNamespace('crowi', requestGcpSettingParams);
-
-      // TODO GW-3797 re-setup file uploader
+      await crowi.configManager.updateConfigsInTheSameNamespace('crowi', requestGcpSettingParams, true);
+      crowi.fileUploadService.publishUpdatedMessage();
 
       const gcpSettingParams = {
         gcsApiKeyJsonPath: crowi.configManager.getConfig('crowi', 'gcs:apiKeyJsonPath'),

+ 18 - 2
src/server/service/file-uploader/index.js

@@ -1,4 +1,6 @@
 const logger = require('@alias/logger')('growi:service:FileUploaderServise');
+
+const S2sMessage = require('../../models/vo/s2s-message');
 const S2sMessageHandlable = require('../s2s-messaging/handlable');
 
 const envToModuleMappings = {
@@ -49,6 +51,21 @@ class FileUploadServiceFactory extends S2sMessageHandlable {
     this.initCustomTitle();
   }
 
+  async publishUpdatedMessage() {
+    const { s2sMessagingService } = this;
+
+    if (s2sMessagingService != null) {
+      const s2sMessage = new S2sMessage('customizeServiceUpdated', { updatedAt: new Date() });
+
+      try {
+        await s2sMessagingService.publish(s2sMessage);
+      }
+      catch (e) {
+        logger.error('Failed to publish update message with S2sMessagingService: ', e.message);
+      }
+    }
+  }
+
   initializeUploader(crowi) {
     const method = envToModuleMappings[process.env.FILE_UPLOAD] || 'aws';
 
@@ -71,6 +88,5 @@ class FileUploadServiceFactory extends S2sMessageHandlable {
 
 
 module.exports = (crowi) => {
-  const factory = new FileUploadServiceFactory(crowi);
-  return factory.getUploader(crowi);
+  return new FileUploadServiceFactory(crowi);
 };