Kaynağa Gözat

refs 116536: refactor

Futa Arai 3 yıl önce
ebeveyn
işleme
b1d7c50f81

+ 38 - 39
packages/app/src/client/services/guest-questionnaire-answer-status.ts

@@ -13,40 +13,39 @@ interface GuestQuestionnaireAnswerStatusStorage {
 }
 
 const storageKey = 'guestQuestionnaireAnswerStatuses';
-const daysUntilExpiration = 30;
+const DAYS_UNTIL_EXPIRATION = 30;
 
 /**
  * Get all answer statuses stored in localStorage as GuestQuestionnaireAnswerStatusStorage,
  * and update outdated information.
  */
 const getStorage = (): GuestQuestionnaireAnswerStatusStorage | null => {
-  if (typeof window !== 'undefined') {
-    const currentStorage = localStorage.getItem(storageKey);
-    if (currentStorage != null) {
-      const storageJson: GuestQuestionnaireAnswerStatusStorage = JSON.parse(currentStorage);
+  if (typeof window === 'undefined') { return null }
 
-      // delete status if outdated to prevent localStorage overflow
-      // change skipped to not_answered if different date than when skipped
-      Object.keys(storageJson).forEach((key) => {
-        const answerStatus = storageJson[key];
-        const updatedDate = new Date(answerStatus.updatedDate);
-        const expirationDate = new Date(updatedDate.setDate(updatedDate.getDate() + daysUntilExpiration));
-        if (expirationDate < new Date()) {
-          delete storageJson[key];
-        }
-        else if (answerStatus.status === StatusType.skipped
-          && new Date().toDateString() !== answerStatus.updatedDate) {
-          storageJson[key] = {
-            status: StatusType.not_answered,
-            updatedDate: new Date().toDateString(),
-          };
-        }
-      });
+  const currentStorage = localStorage.getItem(storageKey);
+
+  if (currentStorage == null) { return null }
 
-      return storageJson;
+  const storageJson: GuestQuestionnaireAnswerStatusStorage = JSON.parse(currentStorage);
+  // delete status if outdated to prevent localStorage overflow
+  // change skipped to not_answered if different date than when skipped
+  Object.keys(storageJson).forEach((key) => {
+    const answerStatus = storageJson[key];
+    const updatedDate = new Date(answerStatus.updatedDate);
+    const expirationDate = new Date(updatedDate.setDate(updatedDate.getDate() + DAYS_UNTIL_EXPIRATION));
+    if (expirationDate < new Date()) {
+      delete storageJson[key];
     }
-  }
-  return null;
+    else if (answerStatus.status === StatusType.skipped
+          && new Date().toDateString() !== answerStatus.updatedDate) {
+      storageJson[key] = {
+        status: StatusType.not_answered,
+        updatedDate: new Date().toDateString(),
+      };
+    }
+  });
+
+  return storageJson;
 };
 
 /**
@@ -54,22 +53,22 @@ const getStorage = (): GuestQuestionnaireAnswerStatusStorage | null => {
  * and save it in localStorage.
  */
 const setStatus = (questionnaireOrderId: string, status: StatusType): void => {
-  if (typeof window !== 'undefined') {
-    const guestQuestionnaireAnswerStatus: GuestQuestionnaireAnswerStatus = {
-      status,
-      updatedDate: new Date().toDateString(),
-    };
+  if (typeof window === 'undefined') { return }
 
-    const storage = getStorage();
+  const guestQuestionnaireAnswerStatus: GuestQuestionnaireAnswerStatus = {
+    status,
+    updatedDate: new Date().toDateString(),
+  };
 
-    if (storage != null) {
-      storage[questionnaireOrderId] = guestQuestionnaireAnswerStatus;
-      localStorage.setItem(storageKey, JSON.stringify(storage));
-    }
-    else {
-      const initialStorage: GuestQuestionnaireAnswerStatusStorage = { [questionnaireOrderId]: guestQuestionnaireAnswerStatus };
-      localStorage.setItem(storageKey, JSON.stringify(initialStorage));
-    }
+  const storage = getStorage();
+
+  if (storage != null) {
+    storage[questionnaireOrderId] = guestQuestionnaireAnswerStatus;
+    localStorage.setItem(storageKey, JSON.stringify(storage));
+  }
+  else {
+    const initialStorage: GuestQuestionnaireAnswerStatusStorage = { [questionnaireOrderId]: guestQuestionnaireAnswerStatus };
+    localStorage.setItem(storageKey, JSON.stringify(initialStorage));
   }
 };
 

+ 3 - 3
packages/app/src/components/Questionnaire/QuestionnaireModal.tsx

@@ -38,7 +38,7 @@ const QuestionnaireModal = ({ questionnaireOrder }: QuestionnaireModalProps): JS
         questionnaireOrderId: questionnaireOrder._id,
         answers,
       });
-      if (!currentUser) {
+      if (currentUser == null) {
         GuestQuestionnaireAnswerStatusService.setStatus(questionnaireOrder._id, StatusType.answered);
       }
       toastSuccess(
@@ -77,7 +77,7 @@ const QuestionnaireModal = ({ questionnaireOrder }: QuestionnaireModalProps): JS
       apiv3Put('/questionnaire/deny', {
         questionnaireOrderId: questionnaireOrder._id,
       });
-      if (!currentUser) {
+      if (currentUser == null) {
         GuestQuestionnaireAnswerStatusService.setStatus(questionnaireOrder._id, StatusType.denied);
       }
       toastSuccess(t('questionnaire.denied'));
@@ -97,7 +97,7 @@ const QuestionnaireModal = ({ questionnaireOrder }: QuestionnaireModalProps): JS
       await apiv3Put('/questionnaire/skip', {
         questionnaireOrderId: questionnaireOrder._id,
       });
-      if (!currentUser) {
+      if (currentUser == null) {
         GuestQuestionnaireAnswerStatusService.setStatus(questionnaireOrder._id, StatusType.skipped);
       }
     }

+ 2 - 2
packages/app/src/components/Questionnaire/QuestionnaireToast.tsx

@@ -38,7 +38,7 @@ const QuestionnaireToast = ({ questionnaireOrder }: QuestionnaireToastProps): JS
       await apiv3Put('/questionnaire/deny', {
         questionnaireOrderId: questionnaireOrder._id,
       });
-      if (!currentUser) {
+      if (currentUser == null) {
         GuestQuestionnaireAnswerStatusService.setStatus(questionnaireOrder._id, StatusType.denied);
       }
       toastSuccess(t('questionnaire.denied'));
@@ -56,7 +56,7 @@ const QuestionnaireToast = ({ questionnaireOrder }: QuestionnaireToastProps): JS
       await apiv3Put('/questionnaire/skip', {
         questionnaireOrderId: questionnaireOrder._id,
       });
-      if (!currentUser) {
+      if (currentUser == null) {
         GuestQuestionnaireAnswerStatusService.setStatus(questionnaireOrder._id, StatusType.skipped);
       }
     }