소스 검색

impl a shouldShowQuestionnaire utility function

Taichi Masuyama 3 년 전
부모
커밋
0d812598ab
1개의 변경된 파일35개의 추가작업 그리고 0개의 파일을 삭제
  1. 35 0
      packages/app/src/server/util/questionnaire/condition.ts

+ 35 - 0
packages/app/src/server/util/questionnaire/condition.ts

@@ -0,0 +1,35 @@
+import { ICondition } from '~/interfaces/questionnaire/condition';
+import { IGrowiInfo } from '~/interfaces/questionnaire/growi-info';
+import { IUserInfo } from '~/interfaces/questionnaire/user-info';
+
+
+const checkUserInfo = (condition: ICondition, userInfo: IUserInfo): boolean => {
+  const { user: { types } } = condition;
+
+  return types.includes(userInfo.type);
+};
+
+const checkGrowiInfo = (condition: ICondition, growiInfo: IGrowiInfo): boolean => {
+  const { growi: { types, versionRegExps } } = condition;
+
+  if (!types.includes(growiInfo.type)) {
+    return false;
+  }
+
+  if (!versionRegExps.some(rs => new RegExp(rs).test(growiInfo.version))) {
+    return false;
+  }
+
+  return true;
+};
+
+export const shouldShowQuestionnaire = (condition: ICondition, userInfo: IUserInfo, growiInfo: IGrowiInfo): boolean => {
+  if (!checkUserInfo(condition, userInfo)) {
+    return false;
+  }
+  if (!checkGrowiInfo(condition, growiInfo)) {
+    return false;
+  }
+
+  return true;
+};