QuestionnaireModalManager.tsx 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { useCallback } from 'react';
  2. import { useCurrentUser } from '~/stores/context';
  3. import { StatusType } from '../../interfaces/questionnaire-answer-status';
  4. import { IQuestionnaireOrderHasId } from '../../interfaces/questionnaire-order';
  5. import { GuestQuestionnaireAnswerStatusService } from '../services/guest-questionnaire-answer-status';
  6. import { useSWRxQuestionnaireOrders } from '../stores/questionnaire';
  7. import QuestionnaireModal from './QuestionnaireModal';
  8. import QuestionnaireToast from './QuestionnaireToast';
  9. import styles from './QuestionnaireModalManager.module.scss';
  10. const QuestionnaireModalManager = ():JSX.Element => {
  11. const { data: questionnaireOrders } = useSWRxQuestionnaireOrders();
  12. const { data: currentUser } = useCurrentUser();
  13. const questionnaireOrdersToShow = useCallback((questionnaireOrders: IQuestionnaireOrderHasId[] | undefined) => {
  14. const guestQuestionnaireAnswerStorage = GuestQuestionnaireAnswerStatusService.getStorage();
  15. if (currentUser != null || guestQuestionnaireAnswerStorage == null) {
  16. return questionnaireOrders;
  17. }
  18. return questionnaireOrders?.filter((questionnaireOrder) => {
  19. const localAnswerStatus = guestQuestionnaireAnswerStorage[questionnaireOrder._id];
  20. return localAnswerStatus == null || localAnswerStatus.status === StatusType.not_answered;
  21. });
  22. }, [currentUser]);
  23. return <>
  24. {questionnaireOrders?.map((questionnaireOrder) => {
  25. return <QuestionnaireModal
  26. questionnaireOrder={questionnaireOrder}
  27. key={questionnaireOrder._id} />;
  28. })}
  29. <div className={styles['grw-questionnaire-toasts']}>
  30. {questionnaireOrdersToShow(questionnaireOrders)?.map((questionnaireOrder) => {
  31. return <QuestionnaireToast questionnaireOrder={questionnaireOrder} key={questionnaireOrder._id}/>;
  32. })}
  33. </div>
  34. </>;
  35. };
  36. export default QuestionnaireModalManager;