itizawa %!s(int64=4) %!d(string=hai) anos
pai
achega
faab379916

+ 15 - 3
packages/slackbot-proxy/src/controllers/growi-to-slack.ts

@@ -174,9 +174,21 @@ export class GrowiToSlackCtrl {
     if (req.body.blocks != null) {
       const parsedBlocks = JSON.parse(req.body.blocks as string);
 
-      Object.values(DelegatorTypes).forEach((type) => {
-        const growiUriInjector = GrowiUriInjectorFactory.getDelegator(type);
-        growiUriInjector.inject(parsedBlocks, growiUri);
+      parsedBlocks.forEach((parsedBlock) => {
+        if (parsedBlock.type !== 'actions') {
+          return;
+        }
+        parsedBlock.elements.forEach((element) => {
+          Object.values(DelegatorTypes).forEach((type) => {
+            const growiUriInjector = GrowiUriInjectorFactory.getDelegator(type);
+
+            if (growiUriInjector.handleInject(element.type)) {
+              growiUriInjector.inject(element, growiUri);
+            }
+          });
+        });
+
+        return;
       });
 
       req.body.blocks = JSON.stringify(parsedBlocks);

+ 8 - 14
packages/slackbot-proxy/src/services/growi-uri-injector/GrowiUriInjectionButtonDelegator.ts

@@ -3,20 +3,14 @@ import { GrowiUriInjector } from './GrowiUriInjector';
 
 export class GrowiUriInjectionButtonDelegator implements GrowiUriInjector {
 
-  inject(parsedBlocks: any, growiUri:string): void {
-    parsedBlocks.forEach((parsedBlock) => {
-      if (parsedBlock.type !== 'actions') {
-        return;
-      }
-      parsedBlock.elements.forEach((element) => {
-        // TODO shoud handle method
-        if (element.type === 'button') {
-          const parsedValue = JSON.parse(element.value as string);
-          const originalData = JSON.stringify(parsedValue);
-          element.value = JSON.stringify({ growiUri, originalData });
-        }
-      });
-    });
+  handleInject(type:string) {
+    return type === 'button';
+  }
+
+  inject(element: {value:string}, growiUri:string): void {
+    const parsedValue = JSON.parse(element.value);
+    const originalData = JSON.stringify(parsedValue);
+    element.value = JSON.stringify({ growiUri, originalData });
   }
 
   extract(action: any): {growiUri?:string, originalData:any} {

+ 2 - 0
packages/slackbot-proxy/src/services/growi-uri-injector/GrowiUriInjector.ts

@@ -1,6 +1,8 @@
 
 export interface GrowiUriInjector {
 
+  handleInject(type:string):boolean
+
   inject(body: any, growiUri:string): void;
 
   extract(body: any):any;