itizawa 4 лет назад
Родитель
Сommit
19ab5ae8e2

+ 7 - 8
packages/slackbot-proxy/src/controllers/growi-to-slack.ts

@@ -18,6 +18,7 @@ import { OrderRepository } from '~/repositories/order';
 
 import { InstallerService } from '~/services/InstallerService';
 import loggerFactory from '~/utils/logger';
+import { factory as GrowiUriInjectorFactory } from '~/services/growi-uri-injector';
 
 
 const logger = loggerFactory('slackbot-proxy:controllers:growi-to-slack');
@@ -163,16 +164,14 @@ export class GrowiToSlackCtrl {
     return res.send({ relation: createdRelation, slackBotToken: token });
   }
 
-  generateOptFromRequest(req:GrowiReq, growiUri:string):WebAPICallOptions {
+  injectGrowiUri(req:GrowiReq, growiUri:string):WebAPICallOptions {
+
+    const growiUriInjector = GrowiUriInjectorFactory.getDelegator('MODAL');
+    growiUriInjector.inject(req.body, growiUri);
+
     const opt = req.body;
     opt.headers = req.headers;
 
-    if (opt.view != null) {
-      const parsedView = JSON.parse(opt.view as string);
-      parsedView.private_metadata = JSON.stringify({ growiUri });
-      opt.view = JSON.stringify(parsedView);
-    }
-
     return opt;
   }
 
@@ -207,7 +206,7 @@ export class GrowiToSlackCtrl {
     const client = generateWebClient(token);
 
     try {
-      const opt = this.generateOptFromRequest(req, relation.growiUri);
+      const opt = this.injectGrowiUri(req, relation.growiUri);
 
       await client.apiCall(method, opt);
     }

+ 8 - 5
packages/slackbot-proxy/src/services/growi-uri-injector/index.ts

@@ -5,11 +5,14 @@ import { GrowiUriInjectionButtonDelegator } from './GrowiUriInjectionButtonDeleg
 
 const logger = loggerFactory('growi-uri-injector:growiUriInjectorFactory');
 
-const TypeToDelegatorMappings = {
-  MODAL: GrowiUriInjectionModalDelegator,
-  BUTTON: GrowiUriInjectionButtonDelegator,
+type DelegatorType = 'MODAL' | 'BUTTON';
+
+const TypeToDelegatorMappings:{[key in DelegatorType]:GrowiUriInjector} = {
+  MODAL: new GrowiUriInjectionModalDelegator(),
+  BUTTON: new GrowiUriInjectionButtonDelegator(),
 };
 
+
 /**
  * Instanciate GrowiUriInjector
  */
@@ -17,7 +20,7 @@ class GrowiUriInjectorFactory {
 
   delegator: GrowiUriInjector;
 
-  initializeDelegator(type:string) {
+  initializeDelegator(type:DelegatorType) {
 
     this.delegator = TypeToDelegatorMappings[type];
 
@@ -26,7 +29,7 @@ class GrowiUriInjectorFactory {
     }
   }
 
-  getDelegator(type) {
+  getDelegator(type:DelegatorType) {
     if (this.delegator == null) {
       this.initializeDelegator(type);
     }