Explorar el Código

impl a shouldShowQuestionnaire utility function

Taichi Masuyama hace 3 años
padre
commit
0d812598ab
Se han modificado 1 ficheros con 35 adiciones y 0 borrados
  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;
+};