|
@@ -3,7 +3,7 @@ import {
|
|
|
} from '@tsed/common';
|
|
} from '@tsed/common';
|
|
|
import { SlackOauthReq } from '~/interfaces/slack-to-growi/slack-oauth-req';
|
|
import { SlackOauthReq } from '~/interfaces/slack-to-growi/slack-oauth-req';
|
|
|
import { growiUriInjectorFactory } from '~/services/growi-uri-injector/GrowiUriInjectorFactory';
|
|
import { growiUriInjectorFactory } from '~/services/growi-uri-injector/GrowiUriInjectorFactory';
|
|
|
-import { extractGrowiUriFromView } from '~/utils/extractGrowiUriFromView';
|
|
|
|
|
|
|
+import { ViewInteractionPayloadDelegator } from '~/services/growi-uri-injector/ViewInteractionPayloadDelegator';
|
|
|
|
|
|
|
|
@Middleware()
|
|
@Middleware()
|
|
|
export class ExtractGrowiUriFromReq implements IMiddleware {
|
|
export class ExtractGrowiUriFromReq implements IMiddleware {
|
|
@@ -17,25 +17,25 @@ export class ExtractGrowiUriFromReq implements IMiddleware {
|
|
|
|
|
|
|
|
const payload = JSON.parse(req.body.payload);
|
|
const payload = JSON.parse(req.body.payload);
|
|
|
|
|
|
|
|
- // extract for modal
|
|
|
|
|
- if (payload.view != null) {
|
|
|
|
|
- const extractedValues = extractGrowiUriFromView(payload.view);
|
|
|
|
|
- req.growiUri = extractedValues.growiUri;
|
|
|
|
|
- payload.view.private_metadata = extractedValues.originalData;
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- // break when uri is found
|
|
|
|
|
- for (const type of Object.keys(growiUriInjectorFactory)) {
|
|
|
|
|
- const growiUriInjector = growiUriInjectorFactory[type]();
|
|
|
|
|
- const extractedValues = growiUriInjector.extract(payload.actions[0]);
|
|
|
|
|
-
|
|
|
|
|
- if (extractedValues.growiUri != null) {
|
|
|
|
|
- req.growiUri = extractedValues.growiUri;
|
|
|
|
|
- payload.actions[0].value = JSON.stringify(extractedValues.originalData);
|
|
|
|
|
- break;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ // TODO: iterate with decorator
|
|
|
|
|
+ const vipd = new ViewInteractionPayloadDelegator();
|
|
|
|
|
+ if (vipd.shouldHandleToExtract(payload)) {
|
|
|
|
|
+ const data = vipd.extract(payload);
|
|
|
|
|
+ req.growiUri = data.growiUri;
|
|
|
}
|
|
}
|
|
|
|
|
+ // else {
|
|
|
|
|
+ // // break when uri is found
|
|
|
|
|
+ // for (const type of Object.keys(growiUriInjectorFactory)) {
|
|
|
|
|
+ // const growiUriInjector = growiUriInjectorFactory[type]();
|
|
|
|
|
+ // const extractedValues = growiUriInjector.extract(payload.actions[0]);
|
|
|
|
|
+
|
|
|
|
|
+ // if (extractedValues.growiUri != null) {
|
|
|
|
|
+ // req.growiUri = extractedValues.growiUri;
|
|
|
|
|
+ // payload.actions[0].value = JSON.stringify(extractedValues.originalData);
|
|
|
|
|
+ // break;
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
+ // }
|
|
|
|
|
|
|
|
req.body.payload = JSON.stringify(payload);
|
|
req.body.payload = JSON.stringify(payload);
|
|
|
|
|
|