touchstudy-core 0.1.68 → 0.1.70

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/components/Chats/hooks/useMessageList.d.ts +5 -2
  2. package/dist/components/Commons/NotFound.d.ts +1 -1
  3. package/dist/components/Dialogs/PassCodeDialog.d.ts +10 -0
  4. package/dist/components/Dialogs/configs/types.d.ts +4 -0
  5. package/dist/components/Loading/LoadingComponent.d.ts +6 -0
  6. package/dist/components/Selectors/InActiveAcademySelector.d.ts +16 -0
  7. package/dist/containers/Academies/apiClients/academyService.d.ts +1 -2
  8. package/dist/containers/Academies/components/PassCodeDialog.d.ts +10 -0
  9. package/dist/containers/Academies/hooks/useAcademyList.d.ts +1 -2
  10. package/dist/containers/ExamResult/apiClients/index.d.ts +0 -1
  11. package/dist/containers/ExamResult/hooks/useExamResult.d.ts +1 -0
  12. package/dist/containers/Login/hooks/useLogin.d.ts +1 -1
  13. package/dist/containers/PassCodes/configs/types.d.ts +6 -0
  14. package/dist/containers/PassCodes/hooks/usePassCodeCheck.d.ts +19 -0
  15. package/dist/containers/PassCodes/views/PassCodeCheck.d.ts +13 -0
  16. package/dist/containers/Textbooks/apiClient/examSessionService.d.ts +0 -2
  17. package/dist/index.css +0 -1
  18. package/dist/index.d.ts +6 -3
  19. package/dist/index.js +1036 -323
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.modern.js +1015 -307
  22. package/dist/index.modern.js.map +1 -1
  23. package/dist/services/academyService.d.ts +4 -1
  24. package/dist/services/accountService.d.ts +1 -0
  25. package/dist/services/passCodeService.d.ts +1 -0
  26. package/dist/services/recentUserActionService.d.ts +10 -0
  27. package/dist/utils/constants.d.ts +21 -0
  28. package/dist/utils/enums/index.d.ts +2 -1
  29. package/dist/utils/enums/recentUserAction.d.ts +7 -0
  30. package/dist/utils/hooks/useLayoutContext.d.ts +3 -1
  31. package/dist/utils/hooks/useSwitchAcademy.d.ts +1 -1
  32. package/dist/utils/types/checkSuperUrl.d.ts +1 -0
  33. package/dist/utils/types/index.d.ts +2 -1
  34. package/dist/utils/types/recentUserAction.d.ts +33 -0
  35. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -87,10 +87,10 @@ var encodeParams = function encodeParams(params) {
87
87
  if (Array.isArray(params[key])) {
88
88
  return params[key].map(function (i) {
89
89
  return encodeURIComponent(key) + "=" + encodeURIComponent(i);
90
- }).join('&');
90
+ }).join("&");
91
91
  }
92
92
  return encodeURIComponent(key) + "=" + encodeURIComponent(params[key]);
93
- }).join('&');
93
+ }).join("&");
94
94
  };
95
95
  (function (Role) {
96
96
  Role["Student"] = "Student";
@@ -102,6 +102,27 @@ var encodeParams = function encodeParams(params) {
102
102
  Language["ko"] = "ko";
103
103
  Language["en"] = "en";
104
104
  })(exports.Language || (exports.Language = {}));
105
+ var RecentUserAction = {
106
+ ViewedUser: "viewed_user",
107
+ ViewedQNA: "viewed_QNA",
108
+ ViewedExamResult: "viewed_exam_result",
109
+ PrintedExamResult: "printed_exam_result",
110
+ ViewedAttendance: "viewed_attendance",
111
+ UpdatedUser: "updated_user",
112
+ CreatedNewUser: "created_new_user",
113
+ ImportedUser: "imported_user",
114
+ ImportedRemoveUser: "imported_remove_user",
115
+ DeletedUser: "deleted_user",
116
+ CompletedQNA: "completed_QNA",
117
+ AnsweredQNA: "answered_QNA",
118
+ RemoveMessageQNA: "remove_message_QNA",
119
+ UpdateMessageQNA: "update_message_QNA",
120
+ UpdatedAttendance: "updated_attendance",
121
+ AddedTeacherToClass: "added_teacher_to_class",
122
+ RemovedTeacherFromClass: "removed_teacher_from_class",
123
+ AddedStudentToClass: "added_student_to_class",
124
+ RemovedStudentFromClass: "removed_student_from_class"
125
+ };
105
126
  var PrintHeaderClassName = "print-header";
106
127
  var PrintTitleClassName = "print-title";
107
128
  var PrintContentClassName = "print-content";
@@ -144,6 +165,13 @@ function _objectWithoutPropertiesLoose(source, excluded) {
144
165
  }
145
166
  return target;
146
167
  }
168
+ function _taggedTemplateLiteralLoose(strings, raw) {
169
+ if (!raw) {
170
+ raw = strings.slice(0);
171
+ }
172
+ strings.raw = raw;
173
+ return strings;
174
+ }
147
175
 
148
176
  var styles = {"lighter":"#F0FFF6","light":"#89F0B2","less_dark":"#3DC674","dark":"#349056","darker":"#18442A","gray_50":"#FBFBF9","gray_100":"#EAEAE5","gray_300":"#D0D0C8","gray_500":"#9A9A98","gray_700":"#5D5D5B","gray_900":"#363634","btn-login-google":"_2HqmH","block-login":"_wWIyO","box-login":"_38Lo1","btn-primary":"_rd4Uy","dropdown-menu":"_1krbH","header-avatar":"_RQaHE","dropdown-menu-flag":"_XK8oS","dropdown-content":"_3ys4W","dropdown-change":"_ToOW_","item-address":"_3sQlR","item-logout":"_3bqSM","title-address":"_1jgSI","img-avatar":"_35Ttz","item-contact":"_1wc7o","content-text":"_3S4f2","dropdown-content-language":"_3ajui","dropdown-item-language":"_3Y_y4","dropdown-item-language-active":"_CzNMi","dropdown-academy":"_3CMVp","image-academy":"_2ibYC","academy-btn":"_1JMRU","switch-icon":"_N4FNf","dropdown-content-academy":"_31Dr0","dropdown-academy-item":"_3bjcz","noGutters":"_31ZQk","custom-col-2":"_3yXyK","custom-col-3":"_1RsJQ","custom-col-5":"_L42CP","custom-col-10":"_2u6eL","custom-row":"_8x7OP","custom-col":"_1JmTh","custom-col-4":"_3HO1e","custom-col-8":"_Oy31M","custom-col-12":"_3aUKo","custom-container":"_39LRs","form-label":"__Ut-u","form-control":"_2k4dX","btn-outline-primary":"_2PWdX","sort-icons":"_mQvLF","active":"_3oAH-","form-select":"_3W3aw","truncate":"_3NJzN","headers":"_3xnI5","logo-container":"_3YG70","tabBox":"_1CQPn","routerBox":"_3hx2T","tabText":"_3UyhW","router-link-active":"_1TGKA","router-link":"_1AqMh","userImg":"_2RI6G","disabled-link":"_3aVHg","line-clamp":"_3fpky"};
149
177
 
@@ -456,6 +484,9 @@ var apiLoginWithAccessToken = function apiLoginWithAccessToken(body, domain) {
456
484
  headers: (_headers = {}, _headers[AcademyHeaders] = domain, _headers)
457
485
  });
458
486
  };
487
+ var apiLoginSuperAdminWithAccessToken = function apiLoginSuperAdminWithAccessToken(body) {
488
+ return api.post(AUTH_SUPER_ADMIN_URL + "/login/access-token", body);
489
+ };
459
490
 
460
491
  var useGoogleSignOut = function useGoogleSignOut(props) {
461
492
  var dispatch = reactRedux.useDispatch();
@@ -484,7 +515,10 @@ var useGoogleSignOut = function useGoogleSignOut(props) {
484
515
  localStorage.removeItem(ACADEMY_DOMAIN);
485
516
  }
486
517
  try {
518
+ var _window$gapi, _window$gapi$auth, _auth2$signOut;
487
519
  signOut();
520
+ var auth2 = (_window$gapi = window.gapi) === null || _window$gapi === void 0 ? void 0 : (_window$gapi$auth = _window$gapi.auth2) === null || _window$gapi$auth === void 0 ? void 0 : _window$gapi$auth.getAuthInstance();
521
+ auth2 === null || auth2 === void 0 ? void 0 : (_auth2$signOut = auth2.signOut) === null || _auth2$signOut === void 0 ? void 0 : _auth2$signOut.call(auth2);
488
522
  } catch (error) {
489
523
  console.log({
490
524
  error: error
@@ -535,6 +569,10 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl)
535
569
  t = _useTranslation.t;
536
570
  var _useGoogleSignOut = useGoogleSignOut({}),
537
571
  handleSignOut = _useGoogleSignOut.handleSignOut;
572
+ var user = reactRedux.useSelector(function (state) {
573
+ var _state$common;
574
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
575
+ });
538
576
  var searchParams = new URLSearchParams(window.location.search);
539
577
  var paramDomain = searchParams.get('domain');
540
578
  var handleLoginGoogle = function handleLoginGoogle(data, isLogout) {
@@ -547,16 +585,28 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl)
547
585
  return Promise.resolve(handleLogin(function () {
548
586
  return new Promise(function (resolve, reject) {
549
587
  try {
550
- var _temp = _catch(function () {
588
+ var _temp3 = _catch(function () {
551
589
  return Promise.resolve(academyDomain ? apiLoginGoogle(data) : apiLoginGoogleSuperAdmin(data)).then(function (loginResponse) {
590
+ function _temp2() {
591
+ resolve(result);
592
+ }
552
593
  var result = loginResponse.data;
553
- resolve(result);
594
+ var _temp = function () {
595
+ if (loginResponse.status === 204 && academyDomain) {
596
+ localStorage.removeItem(ACADEMY_DOMAIN);
597
+ return Promise.resolve(apiLoginGoogleSuperAdmin(data)).then(function (_apiLoginGoogleSuperA) {
598
+ loginResponse = _apiLoginGoogleSuperA;
599
+ result = loginResponse.data;
600
+ });
601
+ }
602
+ }();
603
+ return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
554
604
  });
555
605
  }, function (error) {
556
606
  !!academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
557
607
  reject(error);
558
608
  });
559
- return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
609
+ return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(function () {}) : void 0);
560
610
  } catch (e) {
561
611
  return Promise.reject(e);
562
612
  }
@@ -575,15 +625,16 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl)
575
625
  return Promise.resolve(handleLogin(function () {
576
626
  return new Promise(function (resolve, reject) {
577
627
  try {
578
- var _temp2 = _catch(function () {
579
- return Promise.resolve(apiLoginWithAccessToken(data, domain)).then(function (loginResponse) {
628
+ var isSuperAdminUser = user && !user.academyDomain;
629
+ var _temp4 = _catch(function () {
630
+ return Promise.resolve(isSuperAdminUser ? apiLoginSuperAdminWithAccessToken(data) : apiLoginWithAccessToken(data, domain)).then(function (loginResponse) {
580
631
  var result = loginResponse.data;
581
632
  resolve(result);
582
633
  });
583
634
  }, function (error) {
584
635
  reject(error);
585
636
  });
586
- return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(function () {}) : void 0);
637
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
587
638
  } catch (e) {
588
639
  return Promise.reject(e);
589
640
  }
@@ -598,11 +649,11 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl)
598
649
  isLogout = true;
599
650
  }
600
651
  try {
601
- var _temp4 = function _temp4() {
652
+ var _temp6 = function _temp6() {
602
653
  dispatch(setLoading(false));
603
654
  };
604
655
  dispatch(setLoading(true));
605
- var _temp3 = _catch(function () {
656
+ var _temp5 = _catch(function () {
606
657
  return Promise.resolve(apiLogin()).then(function (loginResponse) {
607
658
  var isFirstLogin = loginResponse.isFirstLogin,
608
659
  token = loginResponse.token,
@@ -619,7 +670,7 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl)
619
670
  alert(getErrorMessage(t, error));
620
671
  isLogout && handleSignOut();
621
672
  });
622
- return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
673
+ return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
623
674
  } catch (e) {
624
675
  return Promise.reject(e);
625
676
  }
@@ -944,13 +995,16 @@ var defaultInfo = {
944
995
  captcha: "",
945
996
  rememberMe: false
946
997
  };
947
- var useLogin$1 = function useLogin() {
998
+ var PAGE_TITLE = "sign_in";
999
+ var useLogin$1 = function useLogin(homeAcademyUrl, homeUrl) {
948
1000
  var _useState = React.useState(false),
949
1001
  openLogin = _useState[0],
950
1002
  setOpenLogin = _useState[1];
951
1003
  var _useState2 = React.useState(),
952
1004
  infoUser = _useState2[0],
953
1005
  setInfoUser = _useState2[1];
1006
+ var _useTranslation = reactI18next.useTranslation(),
1007
+ t = _useTranslation.t;
954
1008
  var toggle = React.useCallback(function () {
955
1009
  setOpenLogin(!openLogin);
956
1010
  }, [openLogin]);
@@ -968,8 +1022,13 @@ var useLogin$1 = function useLogin() {
968
1022
  }, [gapiScript.gapi]);
969
1023
  React.useEffect(function () {
970
1024
  var token = getAccessToken();
971
- if (token) window.location.href = "/";
972
- }, []);
1025
+ var academyDomain = getAcademyDomain();
1026
+ if (token && academyDomain) window.location.href = homeAcademyUrl;
1027
+ if (token && !academyDomain) window.location.href = homeUrl;
1028
+ }, [homeAcademyUrl, homeUrl]);
1029
+ React.useEffect(function () {
1030
+ document.title = t("study_peak") + " | " + t(PAGE_TITLE);
1031
+ }, [t]);
973
1032
  return {
974
1033
  defaultInfo: defaultInfo,
975
1034
  openLogin: openLogin,
@@ -1079,7 +1138,7 @@ var _excluded = ["history"];
1079
1138
  var Login = function Login(_ref) {
1080
1139
  var history = _ref.history,
1081
1140
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
1082
- var _useLogin = useLogin$1(),
1141
+ var _useLogin = useLogin$1(rest.homeAcademyUrl, rest.homeUrl),
1083
1142
  defaultInfo = _useLogin.defaultInfo;
1084
1143
  useLanguage(history);
1085
1144
  return React__default.createElement("div", {
@@ -1361,9 +1420,9 @@ var NotFound = function NotFound(_ref) {
1361
1420
  var history = _ref.history;
1362
1421
  var _useTranslation = reactI18next.useTranslation(),
1363
1422
  t = _useTranslation.t;
1364
- useLanguage(history);
1423
+ history && useLanguage(history);
1365
1424
  React.useEffect(function () {
1366
- document.title = t(TITLE);
1425
+ document.title = t("study_peak") + " | " + t(TITLE);
1367
1426
  }, [t]);
1368
1427
  return React__default.createElement("div", {
1369
1428
  className: "not-found d-flex justify-content-center"
@@ -1422,11 +1481,21 @@ var getUserAcademies = function getUserAcademies(role) {
1422
1481
  }
1423
1482
  });
1424
1483
  };
1484
+ var getAcademyByDomainApi = function getAcademyByDomainApi(domain, role) {
1485
+ return api.get(SUPER_ADMIN_ACADEMY_URL + "/domain/" + domain, {
1486
+ params: {
1487
+ role: role
1488
+ }
1489
+ });
1490
+ };
1425
1491
  var getAcademyDetail = function getAcademyDetail() {
1426
1492
  return api.get(ACADEMY_URL + "/detail");
1427
1493
  };
1428
- var switchAcademy = function switchAcademy(academyId) {
1429
- return api.post(ACADEMY_URL + "/switch-academy?academyId=" + academyId);
1494
+ var switchAcademy = function switchAcademy(academyId, role) {
1495
+ return api.post(ACADEMY_URL + "/" + academyId + "/switch-academy/" + role);
1496
+ };
1497
+ var switchSuperAdminAcademy = function switchSuperAdminAcademy(academyId, role) {
1498
+ return api.post(SUPER_ADMIN_ACADEMY_URL + "/" + academyId + "/switch-academy/" + role);
1430
1499
  };
1431
1500
 
1432
1501
  var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls) {
@@ -1452,6 +1521,7 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls) {
1452
1521
  var roles = (user === null || user === void 0 ? void 0 : user.roles) || [];
1453
1522
  var academyDomain = user === null || user === void 0 ? void 0 : user.academyDomain;
1454
1523
  var pathname = window.location.pathname;
1524
+ var search = window.location.search;
1455
1525
  var resetAuth = function resetAuth() {
1456
1526
  handleSignOut();
1457
1527
  };
@@ -1479,7 +1549,7 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls) {
1479
1549
  }
1480
1550
  };
1481
1551
  var checkRoleUser = React.useCallback(function () {
1482
- if (!user) return;
1552
+ if (!(user !== null && user !== void 0 && user.email)) return;
1483
1553
  if (!roles.includes(role) && !!academyDomain) {
1484
1554
  alert(t("user_not_allow_to_register_role", {
1485
1555
  user: user.email,
@@ -1487,7 +1557,7 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls) {
1487
1557
  }));
1488
1558
  resetAuth();
1489
1559
  }
1490
- }, [role, JSON.stringify(user)]);
1560
+ }, [role, user === null || user === void 0 ? void 0 : user.email, academyDomain, JSON.stringify(roles)]);
1491
1561
  var loadInfo = function loadInfo() {
1492
1562
  try {
1493
1563
  var _temp4 = function _temp4() {
@@ -1495,6 +1565,7 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls) {
1495
1565
  };
1496
1566
  var token = getAccessToken();
1497
1567
  if (!token) {
1568
+ localStorage.setItem(REDIRECT_URL, "" + pathname + search);
1498
1569
  resetAuth();
1499
1570
  return Promise.resolve();
1500
1571
  }
@@ -1565,8 +1636,10 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls) {
1565
1636
  }, [pusherRegisterUrls.join(","), academyDomain, pathname, isReadyRegisterPusher, currentPusher === null || currentPusher === void 0 ? void 0 : (_currentPusher$connec2 = currentPusher.connection) === null || _currentPusher$connec2 === void 0 ? void 0 : _currentPusher$connec2.state]);
1566
1637
  React.useEffect(function () {
1567
1638
  !user && loadInfo();
1568
- !!user && checkRoleUser();
1569
- }, [JSON.stringify(user)]);
1639
+ }, []);
1640
+ React.useEffect(function () {
1641
+ checkRoleUser();
1642
+ }, [checkRoleUser]);
1570
1643
  React.useEffect(function () {
1571
1644
  handleGetAcademyDetail();
1572
1645
  }, [academyDomain]);
@@ -1578,6 +1651,33 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls) {
1578
1651
  }
1579
1652
  };
1580
1653
  }, [registerPusher]);
1654
+ return {
1655
+ user: user
1656
+ };
1657
+ };
1658
+
1659
+ var loadingStyle$1 = {
1660
+ minWidth: "100vw",
1661
+ minHeight: "100vh",
1662
+ position: "fixed",
1663
+ top: 0,
1664
+ left: 0,
1665
+ zIndex: 999999999,
1666
+ backgroundColor: "rgba(0, 0, 0, 0.4)",
1667
+ display: "flex",
1668
+ justifyContent: "center",
1669
+ alignItems: "center"
1670
+ };
1671
+ var LoadingComponent = function LoadingComponent(_ref) {
1672
+ var isLoading = _ref.isLoading;
1673
+ return isLoading ? React__default.createElement("div", {
1674
+ style: loadingStyle$1
1675
+ }, React__default.createElement("div", {
1676
+ className: "spinner-border text-secondary",
1677
+ role: "status"
1678
+ }, React__default.createElement("span", {
1679
+ className: "sr-only"
1680
+ }))) : null;
1581
1681
  };
1582
1682
 
1583
1683
  var LayoutContext = function LayoutContext(_ref) {
@@ -1585,8 +1685,14 @@ var LayoutContext = function LayoutContext(_ref) {
1585
1685
  role = _ref.role,
1586
1686
  _ref$pusherRegisterUr = _ref.pusherRegisterUrls,
1587
1687
  pusherRegisterUrls = _ref$pusherRegisterUr === void 0 ? [] : _ref$pusherRegisterUr;
1688
+ var user = reactRedux.useSelector(function (state) {
1689
+ var _state$common;
1690
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
1691
+ });
1588
1692
  useLayoutContext(role, pusherRegisterUrls);
1589
- return React__default.createElement(React.Fragment, null, children);
1693
+ if (!(user !== null && user !== void 0 && user.email)) return React__default.createElement(LoadingComponent, {
1694
+ isLoading: true
1695
+ });else return React__default.createElement(React.Fragment, null, children);
1590
1696
  };
1591
1697
 
1592
1698
  var ConfirmDialog = function ConfirmDialog(_ref) {
@@ -1739,7 +1845,7 @@ var formatTime = (function (time, ORIGINAL_FORMAT, FORMAT) {
1739
1845
  var diffFromNow = (function (time, unitOfTime, targetTime) {
1740
1846
  if (time === DATE_MIN_VALUE || targetTime === DATE_MIN_VALUE) return 0;
1741
1847
  try {
1742
- var now = !!targetTime ? moment() : moment.utc(targetTime).local();
1848
+ var now = !targetTime ? moment() : moment.utc(targetTime).local();
1743
1849
  return now.diff(moment.utc(time).local(), unitOfTime);
1744
1850
  } catch (_unused) {
1745
1851
  return "";
@@ -2182,7 +2288,7 @@ var user_academy = {
2182
2288
  remove_failed: "아카데미에서 사용자를 제거하지 못했습니다",
2183
2289
  remove_successfully: "아카데미에서 사용자를 성공적으로 제거했습니다",
2184
2290
  update_user_roles_failed: "아카데미 사용자 역할 업데이트에 실패했습니다",
2185
- update_user_roles__successfully: "아카데미 사용자 역할을 성공적으로 제거했습니다",
2291
+ update_user_roles_successfully: "아카데미 사용자 역할을 성공적으로 제거했습니다",
2186
2292
  get_failed: "아카데미 사용자 가져오기 실패"
2187
2293
  };
2188
2294
  var get_users_failed = "사용자 가져오기 실패";
@@ -2514,9 +2620,97 @@ var number_of_correct_answers = "정답 수";
2514
2620
  var total_solve_time = "총 풀이 시간";
2515
2621
  var number_of_answer = "{{ number }} 개";
2516
2622
  var time_comparison = "시간 비교";
2623
+ var import_student_exam_results = "학생 시험 결과 가져오기";
2624
+ var file_required = "파일이 필요합니다";
2625
+ var exam_required = "시험이 필요합니다";
2626
+ var teacher_required = "선생님은 필수입니다";
2517
2627
  var total_users = "총 사용자";
2518
2628
  var added_date = "추가된 날짜";
2629
+ var sync_exam_results = "시험 결과 동기화";
2519
2630
  var update_data_fail = "데이터 업데이트 실패";
2631
+ var are_you_sure_to_sync_exam_results_to_academy = "시험 결과를 아카데미 {{ academyName }}에 동기화하시겠습니까(백그라운드에서 실행되며 시간이 다소 소요됨)";
2632
+ var messages = {
2633
+ exam_sessions_are_being_synchronized: "{{ total }} 개의 시험 세션이 동기화되고 있습니다"
2634
+ };
2635
+ var submit = "제출하다";
2636
+ var must_select_a_teacher_first = "먼저 교사를 선택해야 합니다";
2637
+ var student_grade_is_invalid = "학생 등급은 1에서 12 사이여야 합니다";
2638
+ var recent_users = "최근 사용자";
2639
+ var recent_students = "최근 학생";
2640
+ var viewed_user = "본 사용자";
2641
+ var viewed_QNA = "조회한 질문&답변";
2642
+ var viewed_exam_result = "시험 결과를 보았습니다";
2643
+ var printed_exam_result = "인쇄된 시험 결과";
2644
+ var viewed_attendance = "출석 조회";
2645
+ var updated_user = "업데이트된 사용자";
2646
+ var created_new_user = "새 사용자가 생성되었습니다";
2647
+ var imported_user = "가져온 사용자";
2648
+ var imported_remove_user = "가져온 사용자 제거";
2649
+ var deleted_user = "삭제된 사용자";
2650
+ var completed_QNA = "완료된 질문 및 답변";
2651
+ var answered_QNA = "답변된 질문&답변";
2652
+ var remove_message_QNA = "메시지 질문 및 답변 제거";
2653
+ var update_message_QNA = "메시지 질문 및 답변 업데이트";
2654
+ var updated_attendance = "업데이트된 출석";
2655
+ var added_teacher_to_class = "수업에 교사를 추가했습니다.";
2656
+ var removed_teacher_from_class = "수업에서 교사를 제거했습니다";
2657
+ var added_student_to_class = "수업에 학생을 추가했습니다.";
2658
+ var removed_student_from_class = "수업에서 학생을 제거했습니다.";
2659
+ var exam_detail = "시험 세부정보";
2660
+ var study_peak = "스터디 피크";
2661
+ var enter_pass_code = "비밀번호를 입력하세요";
2662
+ var join_an_academy = "아카데미에 가입하세요";
2663
+ var select_an_academy = "아카데미를 선택하세요";
2664
+ var pass_code = "비밀번호";
2665
+ var enter_academy_pass_code = "학원비밀번호를 입력하세요";
2666
+ var authentication_failed = "인증 실패!";
2667
+ var verifying = "확인 중...";
2668
+ var login = "로그인";
2669
+ var please_wait_a_moment = "잠시만 기다려주세요";
2670
+ var oops_sorry = "이런, 미안해요!";
2671
+ var invitation_token_not_provided = "초대 토큰이 제공되지 않았습니다";
2672
+ var academy_invitation = "아카데미 초대";
2673
+ var join_academy = "아카데미 가입";
2674
+ var you_need_to_log_out_of_your_current_academy_to_use_the_invite_link = "초대 링크를 사용하려면 현재 아카데미에서 로그아웃해야 합니다";
2675
+ var you_need_to_log_out_of_your_current_academy_to_use_the_academy_join_link = "아카데미 가입 링크를 이용하려면 현재 아카데미에서 로그아웃해야 합니다";
2676
+ var enter_academy_passcode = "아카데미 비밀번호를 입력하세요";
2677
+ var academy_passcode = "아카데미 비밀번호";
2678
+ var academy_invite = "아카데미 초대";
2679
+ var academy_invite_new_students = "아카데미 신입생 초대";
2680
+ var create_passcode = "비밀번호 생성";
2681
+ var update_passcode = "비밀번호 업데이트";
2682
+ var is_active = "활성화됨";
2683
+ var limited_emails = "제한된 이메일";
2684
+ var limited_used_times = "제한된 사용 시간";
2685
+ var used_times = "사용시간";
2686
+ var update_data_successfully = "데이터 업데이트 성공";
2687
+ var reset_data_successfully = "데이터 재설정 성공";
2688
+ var limited_used_times_is_required = "제한된 사용 시간이 필요합니다";
2689
+ var limited_emails_is_required = "제한된 이메일이 필요합니다";
2690
+ var are_you_sure_you_want_to_delete_the_passcode = "비밀번호({{passcode}})를 삭제하시겠습니까?";
2691
+ var expired_time = "만료된 시간";
2692
+ var expired_time_is_required = "만료된 시간은 필수 항목입니다.";
2693
+ var total_emails = "총 이메일";
2694
+ var academy_invite_detail = "아카데미 초대 세부정보";
2695
+ var are_you_sure_to_delete_academy_invite = "이 아카데미 초대를 삭제하시겠습니까?";
2696
+ var day = "낮";
2697
+ var days = "날";
2698
+ var emails = "이메일";
2699
+ var is_accepted = "승인됨";
2700
+ var re_send = "다시 보내기";
2701
+ var revoke = "취소";
2702
+ var resend_invite_successfully = "초대를 다시 보냈습니다.";
2703
+ var revoke_invite_successfully = "초대를 취소했습니다.";
2704
+ var create_invite_successfully = "초대를 성공적으로 만들었습니다";
2705
+ var must_be_a_number = "숫자여야 합니다.";
2706
+ var is_revoked = "취소됨";
2707
+ var is_sent = "전송됨";
2708
+ var is_send = "전송됨";
2709
+ var expired_date = "만료일";
2710
+ var reset_passcode = "사용된 시간 비밀번호 재설정";
2711
+ var at_academy = "학원에서";
2712
+ var sent_at = "보낸 시간";
2713
+ var create_data_successfully = "데이터를 성공적으로 생성했습니다";
2520
2714
  var lang_ko = {
2521
2715
  problem_solving: problem_solving,
2522
2716
  my_story: my_story,
@@ -3169,9 +3363,95 @@ var lang_ko = {
3169
3363
  total_solve_time: total_solve_time,
3170
3364
  number_of_answer: number_of_answer,
3171
3365
  time_comparison: time_comparison,
3366
+ import_student_exam_results: import_student_exam_results,
3367
+ file_required: file_required,
3368
+ exam_required: exam_required,
3369
+ teacher_required: teacher_required,
3172
3370
  total_users: total_users,
3173
3371
  added_date: added_date,
3174
- update_data_fail: update_data_fail
3372
+ sync_exam_results: sync_exam_results,
3373
+ update_data_fail: update_data_fail,
3374
+ are_you_sure_to_sync_exam_results_to_academy: are_you_sure_to_sync_exam_results_to_academy,
3375
+ messages: messages,
3376
+ submit: submit,
3377
+ must_select_a_teacher_first: must_select_a_teacher_first,
3378
+ student_grade_is_invalid: student_grade_is_invalid,
3379
+ recent_users: recent_users,
3380
+ recent_students: recent_students,
3381
+ viewed_user: viewed_user,
3382
+ viewed_QNA: viewed_QNA,
3383
+ viewed_exam_result: viewed_exam_result,
3384
+ printed_exam_result: printed_exam_result,
3385
+ viewed_attendance: viewed_attendance,
3386
+ updated_user: updated_user,
3387
+ created_new_user: created_new_user,
3388
+ imported_user: imported_user,
3389
+ imported_remove_user: imported_remove_user,
3390
+ deleted_user: deleted_user,
3391
+ completed_QNA: completed_QNA,
3392
+ answered_QNA: answered_QNA,
3393
+ remove_message_QNA: remove_message_QNA,
3394
+ update_message_QNA: update_message_QNA,
3395
+ updated_attendance: updated_attendance,
3396
+ added_teacher_to_class: added_teacher_to_class,
3397
+ removed_teacher_from_class: removed_teacher_from_class,
3398
+ added_student_to_class: added_student_to_class,
3399
+ removed_student_from_class: removed_student_from_class,
3400
+ exam_detail: exam_detail,
3401
+ study_peak: study_peak,
3402
+ enter_pass_code: enter_pass_code,
3403
+ join_an_academy: join_an_academy,
3404
+ select_an_academy: select_an_academy,
3405
+ pass_code: pass_code,
3406
+ enter_academy_pass_code: enter_academy_pass_code,
3407
+ authentication_failed: authentication_failed,
3408
+ verifying: verifying,
3409
+ login: login,
3410
+ please_wait_a_moment: please_wait_a_moment,
3411
+ oops_sorry: oops_sorry,
3412
+ invitation_token_not_provided: invitation_token_not_provided,
3413
+ academy_invitation: academy_invitation,
3414
+ join_academy: join_academy,
3415
+ you_need_to_log_out_of_your_current_academy_to_use_the_invite_link: you_need_to_log_out_of_your_current_academy_to_use_the_invite_link,
3416
+ you_need_to_log_out_of_your_current_academy_to_use_the_academy_join_link: you_need_to_log_out_of_your_current_academy_to_use_the_academy_join_link,
3417
+ enter_academy_passcode: enter_academy_passcode,
3418
+ academy_passcode: academy_passcode,
3419
+ academy_invite: academy_invite,
3420
+ academy_invite_new_students: academy_invite_new_students,
3421
+ create_passcode: create_passcode,
3422
+ update_passcode: update_passcode,
3423
+ is_active: is_active,
3424
+ limited_emails: limited_emails,
3425
+ limited_used_times: limited_used_times,
3426
+ used_times: used_times,
3427
+ update_data_successfully: update_data_successfully,
3428
+ reset_data_successfully: reset_data_successfully,
3429
+ limited_used_times_is_required: limited_used_times_is_required,
3430
+ limited_emails_is_required: limited_emails_is_required,
3431
+ are_you_sure_you_want_to_delete_the_passcode: are_you_sure_you_want_to_delete_the_passcode,
3432
+ expired_time: expired_time,
3433
+ expired_time_is_required: expired_time_is_required,
3434
+ total_emails: total_emails,
3435
+ academy_invite_detail: academy_invite_detail,
3436
+ are_you_sure_to_delete_academy_invite: are_you_sure_to_delete_academy_invite,
3437
+ day: day,
3438
+ days: days,
3439
+ emails: emails,
3440
+ is_accepted: is_accepted,
3441
+ re_send: re_send,
3442
+ revoke: revoke,
3443
+ resend_invite_successfully: resend_invite_successfully,
3444
+ revoke_invite_successfully: revoke_invite_successfully,
3445
+ create_invite_successfully: create_invite_successfully,
3446
+ must_be_a_number: must_be_a_number,
3447
+ is_revoked: is_revoked,
3448
+ is_sent: is_sent,
3449
+ is_send: is_send,
3450
+ expired_date: expired_date,
3451
+ reset_passcode: reset_passcode,
3452
+ at_academy: at_academy,
3453
+ sent_at: sent_at,
3454
+ create_data_successfully: create_data_successfully
3175
3455
  };
3176
3456
 
3177
3457
  var problem_solving$1 = "Problem Solving";
@@ -3823,16 +4103,103 @@ var choose$1 = "Choose";
3823
4103
  var additional_duration$1 = "Additional duration";
3824
4104
  var enter_textbook_name_to_search$1 = "Enter textbook name to search";
3825
4105
  var select_class_placeholder$1 = "Select class...";
3826
- var user_name$1 = "Username";
4106
+ var user_name$1 = "User Name";
3827
4107
  var vulnerable_detail$1 = "Other students had a high percentage of correct answers, but I could not answer these questions correctly.";
3828
4108
  var protracted_problem_detail$1 = "Compare the solution time among the correct answers.";
3829
4109
  var number_of_correct_answers$1 = "Number of correct answers";
3830
4110
  var total_solve_time$1 = "Total solve time";
3831
4111
  var number_of_answer$1 = "{{ number }}";
3832
4112
  var time_comparison$1 = "Time comparison";
4113
+ var import_student_exam_results$1 = "Import Student Exam Results";
4114
+ var file_required$1 = "File is required";
4115
+ var exam_required$1 = "Exam is required";
4116
+ var teacher_required$1 = "Teacher is required";
3833
4117
  var total_users$1 = "Total users";
3834
4118
  var added_date$1 = "Added date";
4119
+ var sync_exam_results$1 = "Sync exam results";
3835
4120
  var update_data_fail$1 = "Update data fail";
4121
+ var are_you_sure_to_sync_exam_results_to_academy$1 = "Are you sure to sync exam results to academy \"{{ academyName }}\" (it will run in the background and take a while)";
4122
+ var messages$1 = {
4123
+ exam_sessions_are_being_synchronized: "{{ total }} exam sessions are being synchronized"
4124
+ };
4125
+ var submit$1 = "Submit";
4126
+ var must_select_a_teacher_first$1 = "Must select a teacher first";
4127
+ var student_grade_is_invalid$1 = "Student grade must be from 1 to 12";
4128
+ var recent_users$1 = "Recent Users";
4129
+ var recent_students$1 = "Recent Students";
4130
+ var viewed_user$1 = "Viewed User";
4131
+ var viewed_QNA$1 = "Viewed Question&Answer";
4132
+ var viewed_exam_result$1 = "Viewed Exam Results";
4133
+ var printed_exam_result$1 = "Printed Exam Result";
4134
+ var viewed_attendance$1 = "Viewed Attendance";
4135
+ var updated_user$1 = "Updated User";
4136
+ var created_new_user$1 = "Created New User";
4137
+ var imported_user$1 = "Imported User";
4138
+ var imported_remove_user$1 = "Imported Remove User";
4139
+ var deleted_user$1 = "Deleted User";
4140
+ var completed_QNA$1 = "Completed Question&Answer";
4141
+ var answered_QNA$1 = "Answered Question&Answer";
4142
+ var remove_message_QNA$1 = "Remove Message Question&Answer";
4143
+ var update_message_QNA$1 = "Update Message Question&Answer";
4144
+ var updated_attendance$1 = "Updated Attendance";
4145
+ var added_teacher_to_class$1 = "Added Teacher To Class";
4146
+ var removed_teacher_from_class$1 = "Removed Teacher From Class";
4147
+ var added_student_to_class$1 = "Added Student To Class";
4148
+ var removed_student_from_class$1 = "Removed Student From Class";
4149
+ var exam_detail$1 = "Exam detail";
4150
+ var study_peak$1 = "Study Peak";
4151
+ var enter_pass_code$1 = "Enter pass code";
4152
+ var join_an_academy$1 = "Join an academy";
4153
+ var select_an_academy$1 = "Select an academy";
4154
+ var pass_code$1 = "Pass Code";
4155
+ var enter_academy_pass_code$1 = "Enter academy pass code";
4156
+ var authentication_failed$1 = "Authentication failed!";
4157
+ var verifying$1 = "Verifying...";
4158
+ var login$1 = "Login";
4159
+ var please_wait_a_moment$1 = "Please wait a moment";
4160
+ var oops_sorry$1 = "Oops, sorry!";
4161
+ var invitation_token_not_provided$1 = "Invitation token not provided";
4162
+ var academy_invitation$1 = "Academy invitation";
4163
+ var join_academy$1 = "Join academy";
4164
+ var you_need_to_log_out_of_your_current_academy_to_use_the_invite_link$1 = "You need to log out of your current academy to use the invite link";
4165
+ var you_need_to_log_out_of_your_current_academy_to_use_the_academy_join_link$1 = "You need to log out of your current academy to use the academy join link";
4166
+ var enter_academy_passcode$1 = "Enter Academy Pass Code";
4167
+ var academy_passcode$1 = "Academy Pass Code";
4168
+ var academy_invite$1 = "Academy Invite";
4169
+ var academy_invite_new_students$1 = "Academy Invite New Students";
4170
+ var create_passcode$1 = "Create Pass Code";
4171
+ var update_passcode$1 = "Update Pass Code";
4172
+ var is_active$1 = "IsActive";
4173
+ var limited_emails$1 = "Limited Emails";
4174
+ var limited_used_times$1 = "Limited Used Times";
4175
+ var used_times$1 = "Used Times";
4176
+ var update_data_successfully$1 = "Update Data Successfully";
4177
+ var reset_data_successfully$1 = "Reset Data Successfully";
4178
+ var limited_used_times_is_required$1 = "Limited Used Times is required";
4179
+ var limited_emails_is_required$1 = "Limited Emails is Required";
4180
+ var are_you_sure_you_want_to_delete_the_passcode$1 = "Are you sure you want to delete the passcode: {{passcode}}?";
4181
+ var expired_time$1 = "Expired Time";
4182
+ var expired_time_is_required$1 = "Expiry Time is required";
4183
+ var total_emails$1 = "Total Emails";
4184
+ var academy_invite_detail$1 = "Academy Invite Detail";
4185
+ var are_you_sure_to_delete_academy_invite$1 = "Are you sure to delete this academy invite?";
4186
+ var day$1 = "day";
4187
+ var days$1 = "days";
4188
+ var emails$1 = "Emails";
4189
+ var is_accepted$1 = "Is Accepted";
4190
+ var re_send$1 = "Resend";
4191
+ var revoke$1 = "Revoke";
4192
+ var resend_invite_successfully$1 = "Resend invite successfully";
4193
+ var revoke_invite_successfully$1 = "Revoke invite successfully";
4194
+ var create_invite_successfully$1 = "Create invite successfully";
4195
+ var must_be_a_number$1 = "Must be a number";
4196
+ var is_revoked$1 = "Is Revoked";
4197
+ var is_sent$1 = "Is Sent";
4198
+ var is_send$1 = "Is Send";
4199
+ var expired_date$1 = "Expired Date";
4200
+ var reset_passcode$1 = "Reset Used Times Pass Code";
4201
+ var at_academy$1 = "At academy";
4202
+ var sent_at$1 = "Sent at";
3836
4203
  var lang_en = {
3837
4204
  problem_solving: problem_solving$1,
3838
4205
  my_story: my_story$1,
@@ -4485,9 +4852,94 @@ var lang_en = {
4485
4852
  total_solve_time: total_solve_time$1,
4486
4853
  number_of_answer: number_of_answer$1,
4487
4854
  time_comparison: time_comparison$1,
4855
+ import_student_exam_results: import_student_exam_results$1,
4856
+ file_required: file_required$1,
4857
+ exam_required: exam_required$1,
4858
+ teacher_required: teacher_required$1,
4488
4859
  total_users: total_users$1,
4489
4860
  added_date: added_date$1,
4490
- update_data_fail: update_data_fail$1
4861
+ sync_exam_results: sync_exam_results$1,
4862
+ update_data_fail: update_data_fail$1,
4863
+ are_you_sure_to_sync_exam_results_to_academy: are_you_sure_to_sync_exam_results_to_academy$1,
4864
+ messages: messages$1,
4865
+ submit: submit$1,
4866
+ must_select_a_teacher_first: must_select_a_teacher_first$1,
4867
+ student_grade_is_invalid: student_grade_is_invalid$1,
4868
+ recent_users: recent_users$1,
4869
+ recent_students: recent_students$1,
4870
+ viewed_user: viewed_user$1,
4871
+ viewed_QNA: viewed_QNA$1,
4872
+ viewed_exam_result: viewed_exam_result$1,
4873
+ printed_exam_result: printed_exam_result$1,
4874
+ viewed_attendance: viewed_attendance$1,
4875
+ updated_user: updated_user$1,
4876
+ created_new_user: created_new_user$1,
4877
+ imported_user: imported_user$1,
4878
+ imported_remove_user: imported_remove_user$1,
4879
+ deleted_user: deleted_user$1,
4880
+ completed_QNA: completed_QNA$1,
4881
+ answered_QNA: answered_QNA$1,
4882
+ remove_message_QNA: remove_message_QNA$1,
4883
+ update_message_QNA: update_message_QNA$1,
4884
+ updated_attendance: updated_attendance$1,
4885
+ added_teacher_to_class: added_teacher_to_class$1,
4886
+ removed_teacher_from_class: removed_teacher_from_class$1,
4887
+ added_student_to_class: added_student_to_class$1,
4888
+ removed_student_from_class: removed_student_from_class$1,
4889
+ exam_detail: exam_detail$1,
4890
+ study_peak: study_peak$1,
4891
+ enter_pass_code: enter_pass_code$1,
4892
+ join_an_academy: join_an_academy$1,
4893
+ select_an_academy: select_an_academy$1,
4894
+ pass_code: pass_code$1,
4895
+ enter_academy_pass_code: enter_academy_pass_code$1,
4896
+ authentication_failed: authentication_failed$1,
4897
+ verifying: verifying$1,
4898
+ login: login$1,
4899
+ please_wait_a_moment: please_wait_a_moment$1,
4900
+ oops_sorry: oops_sorry$1,
4901
+ invitation_token_not_provided: invitation_token_not_provided$1,
4902
+ academy_invitation: academy_invitation$1,
4903
+ join_academy: join_academy$1,
4904
+ you_need_to_log_out_of_your_current_academy_to_use_the_invite_link: you_need_to_log_out_of_your_current_academy_to_use_the_invite_link$1,
4905
+ you_need_to_log_out_of_your_current_academy_to_use_the_academy_join_link: you_need_to_log_out_of_your_current_academy_to_use_the_academy_join_link$1,
4906
+ enter_academy_passcode: enter_academy_passcode$1,
4907
+ academy_passcode: academy_passcode$1,
4908
+ academy_invite: academy_invite$1,
4909
+ academy_invite_new_students: academy_invite_new_students$1,
4910
+ create_passcode: create_passcode$1,
4911
+ update_passcode: update_passcode$1,
4912
+ is_active: is_active$1,
4913
+ limited_emails: limited_emails$1,
4914
+ limited_used_times: limited_used_times$1,
4915
+ used_times: used_times$1,
4916
+ update_data_successfully: update_data_successfully$1,
4917
+ reset_data_successfully: reset_data_successfully$1,
4918
+ limited_used_times_is_required: limited_used_times_is_required$1,
4919
+ limited_emails_is_required: limited_emails_is_required$1,
4920
+ are_you_sure_you_want_to_delete_the_passcode: are_you_sure_you_want_to_delete_the_passcode$1,
4921
+ expired_time: expired_time$1,
4922
+ expired_time_is_required: expired_time_is_required$1,
4923
+ total_emails: total_emails$1,
4924
+ academy_invite_detail: academy_invite_detail$1,
4925
+ are_you_sure_to_delete_academy_invite: are_you_sure_to_delete_academy_invite$1,
4926
+ day: day$1,
4927
+ days: days$1,
4928
+ emails: emails$1,
4929
+ is_accepted: is_accepted$1,
4930
+ re_send: re_send$1,
4931
+ revoke: revoke$1,
4932
+ resend_invite_successfully: resend_invite_successfully$1,
4933
+ revoke_invite_successfully: revoke_invite_successfully$1,
4934
+ create_invite_successfully: create_invite_successfully$1,
4935
+ must_be_a_number: must_be_a_number$1,
4936
+ is_revoked: is_revoked$1,
4937
+ is_sent: is_sent$1,
4938
+ is_send: is_send$1,
4939
+ expired_date: expired_date$1,
4940
+ reset_passcode: reset_passcode$1,
4941
+ at_academy: at_academy$1,
4942
+ sent_at: sent_at$1
4491
4943
  };
4492
4944
 
4493
4945
  i18n.use(reactI18next.initReactI18next).init({
@@ -4583,6 +5035,7 @@ var TheLanguageDropdown = function TheLanguageDropdown(_ref) {
4583
5035
  };
4584
5036
 
4585
5037
  var useSwitchAcademy = function useSwitchAcademy(role, history, homeAcademyUrl, homeUrl, canFetchAcademies) {
5038
+ var _user$roles;
4586
5039
  if (role === void 0) {
4587
5040
  role = exports.Role.Student;
4588
5041
  }
@@ -4658,8 +5111,9 @@ var useSwitchAcademy = function useSwitchAcademy(role, history, homeAcademyUrl,
4658
5111
  isLoading && dispatch(setLoading(true));
4659
5112
  var academyId = selectedAcademy ? selectedAcademy.id : 0;
4660
5113
  var academyDomain = selectedAcademy ? selectedAcademy.domain : undefined;
5114
+ var isSuperAdminUser = user && !user.academyDomain;
4661
5115
  var _temp4 = _catch(function () {
4662
- return Promise.resolve(switchAcademy(academyId)).then(function (res) {
5116
+ return Promise.resolve(isSuperAdminUser ? switchSuperAdminAcademy(academyId, role) : switchAcademy(academyId, role)).then(function (res) {
4663
5117
  var data = res.data;
4664
5118
  var requestBody = {
4665
5119
  accessToken: data.accessToken,
@@ -4680,16 +5134,15 @@ var useSwitchAcademy = function useSwitchAcademy(role, history, homeAcademyUrl,
4680
5134
  return Promise.reject(e);
4681
5135
  }
4682
5136
  };
4683
- var handleLogOutAcademy = function handleLogOutAcademy(selectedAcademy, callback) {
5137
+ var handleLogOutAcademy = function handleLogOutAcademy(callback) {
4684
5138
  try {
4685
5139
  var _temp7 = function _temp7() {
4686
5140
  dispatch(setLoading(false));
4687
5141
  callback();
4688
5142
  };
4689
5143
  dispatch(setLoading(true));
4690
- var academyDomain = selectedAcademy ? selectedAcademy.domain : undefined;
4691
5144
  var _temp6 = _catch(function () {
4692
- return Promise.resolve(switchAcademy(0)).then(function (res) {
5145
+ return Promise.resolve(switchAcademy(0, role)).then(function (res) {
4693
5146
  var data = res.data;
4694
5147
  var requestBody = {
4695
5148
  accessToken: data.accessToken,
@@ -4697,12 +5150,11 @@ var useSwitchAcademy = function useSwitchAcademy(role, history, homeAcademyUrl,
4697
5150
  academyId: 0,
4698
5151
  role: role
4699
5152
  };
4700
- academyDomain && localStorage.setItem(ACADEMY_DOMAIN, academyDomain);
4701
- !academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
4702
- return Promise.resolve(handleLoginAccessToken(requestBody, false, user.academyDomain ? academyDomain : undefined)).then(function () {});
5153
+ localStorage.removeItem(ACADEMY_DOMAIN);
5154
+ return Promise.resolve(handleLoginAccessToken(requestBody, false)).then(function () {});
4703
5155
  });
4704
5156
  }, function (error) {
4705
- academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
5157
+ localStorage.removeItem(ACADEMY_DOMAIN);
4706
5158
  reactToastify.toast.error(getErrorMessage(t, error));
4707
5159
  });
4708
5160
  return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6));
@@ -4712,7 +5164,7 @@ var useSwitchAcademy = function useSwitchAcademy(role, history, homeAcademyUrl,
4712
5164
  };
4713
5165
  React.useEffect(function () {
4714
5166
  canFetchAcademies && getAcademies();
4715
- }, [canFetchAcademies, user === null || user === void 0 ? void 0 : user.academyDomain, user === null || user === void 0 ? void 0 : user.email]);
5167
+ }, [canFetchAcademies, user === null || user === void 0 ? void 0 : user.academyDomain, user === null || user === void 0 ? void 0 : user.email, user === null || user === void 0 ? void 0 : (_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.join(",")]);
4716
5168
  React.useEffect(function () {
4717
5169
  canFetchAcademies && isReFetchUserAcademies && getAcademies(false);
4718
5170
  }, [canFetchAcademies, isReFetchUserAcademies]);
@@ -4808,7 +5260,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
4808
5260
  display: "flex",
4809
5261
  alignItems: "center"
4810
5262
  }
4811
- }, selectedAcademy !== null && selectedAcademy !== void 0 && selectedAcademy.name ? React__default.createElement(material.Stack, {
5263
+ }, React__default.createElement(material.Stack, {
4812
5264
  flexDirection: "column",
4813
5265
  gap: "2px"
4814
5266
  }, React__default.createElement(material.Typography, {
@@ -4829,28 +5281,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
4829
5281
  lineHeight: '1.5em',
4830
5282
  color: styles.gray_500
4831
5283
  }
4832
- }, selectedAcademy.name)) : React__default.createElement(material.Stack, {
4833
- flexDirection: "column",
4834
- gap: "2px"
4835
- }, React__default.createElement(material.Typography, {
4836
- textAlign: "start",
4837
- className: "" + styles["line-clamp"],
4838
- sx: {
4839
- fontSize: 14,
4840
- fontWeight: 900,
4841
- lineHeight: '1.5em',
4842
- color: styles.gray_900
4843
- }
4844
- }), React__default.createElement(material.Typography, {
4845
- textAlign: "start",
4846
- className: "" + styles["line-clamp"],
4847
- sx: {
4848
- fontSize: 14,
4849
- fontWeight: 600,
4850
- lineHeight: '1.5em',
4851
- color: styles.gray_500
4852
- }
4853
- }, t("no_academy_selected"))))), React__default.createElement(material.Grid, {
5284
+ }, selectedAcademy !== null && selectedAcademy !== void 0 && selectedAcademy.name ? selectedAcademy.name : t("no_academy_selected"))))), React__default.createElement(material.Grid, {
4854
5285
  item: true,
4855
5286
  xs: 6,
4856
5287
  lg: 2,
@@ -4950,7 +5381,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
4950
5381
  }
4951
5382
  }, option.name))), option.id === (selectedAcademy === null || selectedAcademy === void 0 ? void 0 : selectedAcademy.id) && React__default.createElement("div", {
4952
5383
  onClick: function onClick() {
4953
- return handleLogOutAcademy(selectedAcademy, handleClose);
5384
+ return handleLogOutAcademy(handleClose);
4954
5385
  }
4955
5386
  }, React__default.createElement(io5.IoCloseCircle, {
4956
5387
  size: 18,
@@ -6455,14 +6886,14 @@ var MessageStatus;
6455
6886
  })(MessageStatus || (MessageStatus = {}));
6456
6887
 
6457
6888
  var types = {
6458
- __proto__: null,
6459
- get MessageSortBy () { return MessageSortBy; },
6460
- get OrderBy () { return OrderBy; },
6461
- get StudentSortBy () { return StudentSortBy; },
6462
- get StudentOrderBy () { return StudentOrderBy; },
6463
- get MessageAction () { return MessageAction; },
6464
- get MessageSourceType () { return MessageSourceType; },
6465
- get MessageStatus () { return MessageStatus; }
6889
+ __proto__: null,
6890
+ get MessageSortBy () { return MessageSortBy; },
6891
+ get OrderBy () { return OrderBy; },
6892
+ get StudentSortBy () { return StudentSortBy; },
6893
+ get StudentOrderBy () { return StudentOrderBy; },
6894
+ get MessageAction () { return MessageAction; },
6895
+ get MessageSourceType () { return MessageSourceType; },
6896
+ get MessageStatus () { return MessageStatus; }
6466
6897
  };
6467
6898
 
6468
6899
  var ExamStatus;
@@ -6486,7 +6917,8 @@ var MESSAGE_DEFAULT_FILTER = {
6486
6917
  sortColumnName: MessageSortBy.CreatedAt
6487
6918
  };
6488
6919
 
6489
- var useMessageList = function useMessageList() {
6920
+ var useMessageList = function useMessageList(_ref) {
6921
+ var student = _ref.student;
6490
6922
  var _useState = React.useState([]),
6491
6923
  messages = _useState[0],
6492
6924
  setMessages = _useState[1];
@@ -6498,13 +6930,19 @@ var useMessageList = function useMessageList() {
6498
6930
  setLoading = _useState3[1];
6499
6931
  var _useTranslation = reactI18next.useTranslation(),
6500
6932
  t = _useTranslation.t;
6933
+ var roles = reactRedux.useSelector(function (state) {
6934
+ var _state$common, _state$common$user;
6935
+ return (state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : (_state$common$user = _state$common.user) === null || _state$common$user === void 0 ? void 0 : _state$common$user.roles) || [];
6936
+ });
6937
+ var isTeacher = roles === null || roles === void 0 ? void 0 : roles.includes(exports.Role.Teacher);
6938
+ var isFirst = true;
6501
6939
  var getMessageList = function getMessageList(conversationId) {
6502
6940
  try {
6503
- var _temp2 = function _temp2() {
6941
+ var _temp3 = function _temp3() {
6504
6942
  setLoading(false);
6505
6943
  };
6506
6944
  setLoading(true);
6507
- var _temp = _catch(function () {
6945
+ var _temp2 = _catch(function () {
6508
6946
  var filter = _extends({}, messageFilter);
6509
6947
  return Promise.resolve(getMessagesByConversation(conversationId, filter)).then(function (res) {
6510
6948
  return Promise.resolve(updateLastTimeReadConversation(conversationId)).then(function () {
@@ -6516,19 +6954,32 @@ var useMessageList = function useMessageList() {
6516
6954
  totalPages: res.data.totalPages
6517
6955
  });
6518
6956
  });
6957
+ var _temp = function () {
6958
+ if (isFirst && isTeacher) {
6959
+ return Promise.resolve(createRecentUserActionListApi({
6960
+ userId: (student === null || student === void 0 ? void 0 : student.id) || 0,
6961
+ action: RecentUserAction$1.ViewedQNA,
6962
+ data: "" + conversationId,
6963
+ roles: [exports.Role.Teacher]
6964
+ })).then(function () {
6965
+ isFirst = false;
6966
+ });
6967
+ }
6968
+ }();
6969
+ if (_temp && _temp.then) return _temp.then(function () {});
6519
6970
  });
6520
6971
  });
6521
6972
  }, function (error) {
6522
6973
  reactToastify.toast.error(getErrorMessage(t, error));
6523
6974
  });
6524
- return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
6975
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2));
6525
6976
  } catch (e) {
6526
6977
  return Promise.reject(e);
6527
6978
  }
6528
6979
  };
6529
6980
  var handleLoadMore = function handleLoadMore(conversationId) {
6530
6981
  try {
6531
- var _temp4 = function _temp4(_result) {
6982
+ var _temp5 = function _temp5(_result) {
6532
6983
  if (_exit) return _result;
6533
6984
  setLoading(false);
6534
6985
  return true;
@@ -6539,7 +6990,7 @@ var useMessageList = function useMessageList() {
6539
6990
  currentPage: ((messageFilter === null || messageFilter === void 0 ? void 0 : messageFilter.currentPage) || 1) + 1
6540
6991
  });
6541
6992
  setLoading(true);
6542
- var _temp3 = _catch(function () {
6993
+ var _temp4 = _catch(function () {
6543
6994
  return Promise.resolve(getMessagesByConversation(conversationId, filter)).then(function (res) {
6544
6995
  return Promise.resolve(updateLastTimeReadConversation(conversationId)).then(function () {
6545
6996
  if (res.data.items.length) {
@@ -6563,7 +7014,7 @@ var useMessageList = function useMessageList() {
6563
7014
  reactToastify.toast.error(getErrorMessage(t, error));
6564
7015
  _exit = true;
6565
7016
  });
6566
- return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
7017
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
6567
7018
  } catch (e) {
6568
7019
  return Promise.reject(e);
6569
7020
  }
@@ -6574,19 +7025,19 @@ var useMessageList = function useMessageList() {
6574
7025
  };
6575
7026
  var handleDeleteMessage = function handleDeleteMessage(conversationId, id, callback) {
6576
7027
  try {
6577
- var _temp6 = function _temp6(_result2) {
7028
+ var _temp7 = function _temp7(_result2) {
6578
7029
  if (_exit2) return _result2;
6579
7030
  callback();
6580
7031
  };
6581
7032
  var _exit2 = false;
6582
7033
  if (isLoading) return Promise.resolve();
6583
- var _temp5 = _catch(function () {
7034
+ var _temp6 = _catch(function () {
6584
7035
  return Promise.resolve(deleteMessage(conversationId, id)).then(function () {});
6585
7036
  }, function (error) {
6586
7037
  reactToastify.toast.error(getErrorMessage(t, error));
6587
7038
  _exit2 = true;
6588
7039
  });
6589
- return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
7040
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6));
6590
7041
  } catch (e) {
6591
7042
  return Promise.reject(e);
6592
7043
  }
@@ -6610,19 +7061,19 @@ var useMessageList = function useMessageList() {
6610
7061
  };
6611
7062
  var handleUpdateMessage = function handleUpdateMessage(conversationId, id, message, callback) {
6612
7063
  try {
6613
- var _temp8 = function _temp8(_result3) {
7064
+ var _temp9 = function _temp9(_result3) {
6614
7065
  if (_exit3) return _result3;
6615
7066
  setLoading(false);
6616
7067
  callback();
6617
7068
  };
6618
7069
  var _exit3 = false;
6619
- var _temp7 = _catch(function () {
7070
+ var _temp8 = _catch(function () {
6620
7071
  return Promise.resolve(updateMessage(conversationId, id, message)).then(function () {});
6621
7072
  }, function (error) {
6622
7073
  reactToastify.toast.error(getErrorMessage(t, error));
6623
7074
  _exit3 = true;
6624
7075
  });
6625
- return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(_temp8) : _temp8(_temp7));
7076
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(_temp9) : _temp9(_temp8));
6626
7077
  } catch (e) {
6627
7078
  return Promise.reject(e);
6628
7079
  }
@@ -6677,7 +7128,9 @@ var useChatContainer = function useChatContainer(props) {
6677
7128
  var _useState4 = React.useState(true),
6678
7129
  isScrollToEnd = _useState4[0],
6679
7130
  setScrollToEnd = _useState4[1];
6680
- var _useMessageList = useMessageList(),
7131
+ var _useMessageList = useMessageList({
7132
+ student: student
7133
+ }),
6681
7134
  isLoadingMessages = _useMessageList.isLoading,
6682
7135
  messages = _useMessageList.messages,
6683
7136
  messageFilter = _useMessageList.messageFilter,
@@ -6960,8 +7413,10 @@ var usePusherConversation = function usePusherConversation(onNewMessageConversat
6960
7413
  return {};
6961
7414
  };
6962
7415
 
7416
+ var _templateObject;
7417
+ var BorderedTextField = material.styled(material.TextField)(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n & .MuiOutlinedInput-root {\n &.Mui-focused fieldset {\n border-width: 1px;\n border-color: ", ";\n }\n }\n & .MuiOutlinedInput-root:hover {\n fieldset {\n border-width: 1px;\n border-color: ", ";\n }\n }\n"])), styles.dark, styles.less_dark);
6963
7418
  var InputText = function InputText(props) {
6964
- return React__default.createElement(material.TextField, Object.assign({
7419
+ return React__default.createElement(BorderedTextField, Object.assign({
6965
7420
  sx: {
6966
7421
  "& input": {
6967
7422
  py: "7.5px",
@@ -7753,12 +8208,22 @@ var OrderType;
7753
8208
  OrderType["DESC"] = "DESC";
7754
8209
  })(OrderType || (OrderType = {}));
7755
8210
 
8211
+ var RecentUserAction$1;
8212
+ (function (RecentUserAction) {
8213
+ RecentUserAction["ViewedUser"] = "ViewedUser";
8214
+ RecentUserAction["ViewedQNA"] = "ViewedQNA";
8215
+ RecentUserAction["ViewedExamResult"] = "ViewedExamResult";
8216
+ RecentUserAction["PrintedExamResult"] = "PrintedExamResult";
8217
+ RecentUserAction["ViewedAttendance"] = "ViewedAttendance";
8218
+ })(RecentUserAction$1 || (RecentUserAction$1 = {}));
8219
+
7756
8220
 
7757
8221
 
7758
8222
  var index = {
7759
- __proto__: null,
7760
- get OrderType () { return OrderType; },
7761
- get ExamStatus () { return ExamStatus$1; }
8223
+ __proto__: null,
8224
+ get OrderType () { return OrderType; },
8225
+ get ExamStatus () { return ExamStatus$1; },
8226
+ get RecentUserAction () { return RecentUserAction$1; }
7762
8227
  };
7763
8228
 
7764
8229
  var TextbookSortBy;
@@ -8002,6 +8467,8 @@ var useExam = function useExam(props) {
8002
8467
  };
8003
8468
  };
8004
8469
 
8470
+ var PAGE_TITLE_DETAIL = "textbook_detail";
8471
+ var PAGE_TITLE_CREATE = "create_textbook";
8005
8472
  var useTextbookDetail = function useTextbookDetail(props) {
8006
8473
  var role = props.role,
8007
8474
  isReadonlyParam = props.isReadonlyParam,
@@ -8703,7 +9170,7 @@ var useTextbookDetail = function useTextbookDetail(props) {
8703
9170
  handleChangeExamRequest(exam);
8704
9171
  };
8705
9172
  React.useEffect(function () {
8706
- document.title = t("textbooks") + " | " + t(id ? "textbook_detail" : "create_textbook");
9173
+ document.title = t("study_peak") + " | " + t(id ? PAGE_TITLE_DETAIL : PAGE_TITLE_CREATE);
8707
9174
  }, [id, t]);
8708
9175
  React.useEffect(function () {
8709
9176
  setReadonly(textbook.isCreatedByAdmin || !!isReadonlyParam);
@@ -9761,6 +10228,22 @@ var TextbookViewDetail = function TextbookViewDetail(props) {
9761
10228
  }));
9762
10229
  };
9763
10230
 
10231
+ var checkSuperUrl = function checkSuperUrl(superUrls, pathname) {
10232
+ return superUrls.some(function (i) {
10233
+ if (i.includes(":")) {
10234
+ var urls = i.split("/");
10235
+ var names = pathname.split("/");
10236
+ if (urls.length != names.length) return false;
10237
+ var isMatches = true;
10238
+ urls.forEach(function (u, index) {
10239
+ if (u != names[index] && !u.startsWith(":")) isMatches = false;
10240
+ });
10241
+ return isMatches;
10242
+ }
10243
+ return pathname.startsWith(i);
10244
+ });
10245
+ };
10246
+
9764
10247
  var useAutoAcademyDomain = function useAutoAcademyDomain(logout, history, superUrls, homeUrl, homeAcademyUrl, isAuthPage) {
9765
10248
  if (isAuthPage === void 0) {
9766
10249
  isAuthPage = true;
@@ -9779,9 +10262,7 @@ var useAutoAcademyDomain = function useAutoAcademyDomain(logout, history, superU
9779
10262
  var paramAcademyDomain = searchParams.get("domain");
9780
10263
  var domain = getAcademyDomain();
9781
10264
  if (!!email !== isAuthPage) return;
9782
- var isSuperUrl = superUrls.some(function (i) {
9783
- return pathname.startsWith(i);
9784
- });
10265
+ var isSuperUrl = checkSuperUrl(superUrls, pathname);
9785
10266
  if (!academyDomain) {
9786
10267
  if (!isSuperUrl) {
9787
10268
  !paramAcademyDomain && domain && searchParams.set("domain", domain);
@@ -9822,7 +10303,7 @@ var useAutoAcademyDomain = function useAutoAcademyDomain(logout, history, superU
9822
10303
  };
9823
10304
  React.useEffect(function () {
9824
10305
  changeAcademySearchParams();
9825
- }, [window.location.pathname, window.location.search, isAuthPage, email, academyDomain]);
10306
+ }, [pathname, window.location.search, isAuthPage, email, academyDomain]);
9826
10307
  };
9827
10308
 
9828
10309
  var DEFAULT_PAGING_RESPONSE = {
@@ -9940,12 +10421,13 @@ var useList = function useList(fetchData, defaultQuery) {
9940
10421
 
9941
10422
 
9942
10423
  var index$1 = {
9943
- __proto__: null,
9944
- useLogin: useLogin,
9945
- useAutoAcademyDomain: useAutoAcademyDomain,
9946
- useList: useList
10424
+ __proto__: null,
10425
+ useLogin: useLogin,
10426
+ useAutoAcademyDomain: useAutoAcademyDomain,
10427
+ useList: useList
9947
10428
  };
9948
10429
 
10430
+ var PAGE_TITLE$1 = "textbooks";
9949
10431
  var useTextbookList = function useTextbookList(props) {
9950
10432
  var role = props.role,
9951
10433
  navigate = props.navigate;
@@ -10009,6 +10491,9 @@ var useTextbookList = function useTextbookList(props) {
10009
10491
  return Promise.reject(e);
10010
10492
  }
10011
10493
  };
10494
+ React.useEffect(function () {
10495
+ document.title = t("study_peak") + " | " + t(PAGE_TITLE$1);
10496
+ }, [t]);
10012
10497
  return {
10013
10498
  filter: filter,
10014
10499
  textSearchRef: textSearchRef,
@@ -10232,9 +10717,9 @@ var TextbookList = function TextbookList(props) {
10232
10717
 
10233
10718
 
10234
10719
  var index$2 = {
10235
- __proto__: null,
10236
- TextbookList: TextbookList,
10237
- TextbookDetail: TextbookViewDetail
10720
+ __proto__: null,
10721
+ TextbookList: TextbookList,
10722
+ TextbookDetail: TextbookViewDetail
10238
10723
  };
10239
10724
 
10240
10725
  var _excluded$5 = ["defaultValue", "options", "isDisabled", "scrollBottom", "value", "isMulti"];
@@ -10344,9 +10829,6 @@ var getResultsCategoriesTeacher = function getResultsCategoriesTeacher(id, stude
10344
10829
  var createConversationApi = function createConversationApi(data) {
10345
10830
  return api.post(BASE_URL + "/api/conversation", data);
10346
10831
  };
10347
- var getCheckStatusExam = function getCheckStatusExam(examCode) {
10348
- return api.get(EXAM_SESSION_URL + "/" + examCode + "/status");
10349
- };
10350
10832
 
10351
10833
  var toNumberOrder = function toNumberOrder(value) {
10352
10834
  return "The " + value + (value % 10 === 1 ? 'st' : value % 10 === 2 ? 'nd' : value % 10 === 3 ? 'rd' : 'th');
@@ -11145,6 +11627,28 @@ var defaultSeries = function defaultSeries(t) {
11145
11627
  }];
11146
11628
  };
11147
11629
 
11630
+ var RECENT_USER_URL = BASE_URL + "/api/recentUsers";
11631
+ var getRecentUserActionListApi = function getRecentUserActionListApi(query) {
11632
+ return api.get("" + RECENT_USER_URL, {
11633
+ params: _extends({}, query)
11634
+ });
11635
+ };
11636
+ var createRecentUserActionListApi = function createRecentUserActionListApi(_ref) {
11637
+ var userId = _ref.userId,
11638
+ action = _ref.action,
11639
+ data = _ref.data,
11640
+ roles = _ref.roles;
11641
+ return api.post("" + RECENT_USER_URL, {
11642
+ userId: userId,
11643
+ action: action,
11644
+ data: data
11645
+ }, {
11646
+ params: {
11647
+ roles: roles
11648
+ }
11649
+ });
11650
+ };
11651
+
11148
11652
  var useExamResult = function useExamResult(searchParam, history, examSessionId, studentId, code, handleChangeTab, selectedTab) {
11149
11653
  var _allSeries$dataChartI;
11150
11654
  if (examSessionId === void 0) {
@@ -11169,97 +11673,94 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11169
11673
  var _state$common2;
11170
11674
  return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.language;
11171
11675
  });
11172
- var _useState = React.useState(),
11173
- resultData = _useState[0],
11174
- setResultData = _useState[1];
11676
+ var _useState = React.useState(false),
11677
+ isLoading = _useState[0],
11678
+ setIsLoading = _useState[1];
11175
11679
  var _useState2 = React.useState(),
11176
- effectSize = _useState2[0],
11177
- setEffectSize = _useState2[1];
11178
- var _useState3 = React.useState([]),
11179
- longTimeSpend = _useState3[0],
11180
- setLongTimeSpend = _useState3[1];
11680
+ resultData = _useState2[0],
11681
+ setResultData = _useState2[1];
11682
+ var _useState3 = React.useState(),
11683
+ effectSize = _useState3[0],
11684
+ setEffectSize = _useState3[1];
11181
11685
  var _useState4 = React.useState([]),
11182
- timelyOrderQuestions = _useState4[0],
11183
- setTimelyOrderQuestions = _useState4[1];
11686
+ longTimeSpend = _useState4[0],
11687
+ setLongTimeSpend = _useState4[1];
11184
11688
  var _useState5 = React.useState([]),
11185
- categoryResponses = _useState5[0],
11186
- setCategoryResponses = _useState5[1];
11187
- var _useState6 = React.useState(0),
11188
- dataChartIndex = _useState6[0],
11189
- setDataChartIndex = _useState6[1];
11190
- var _useState7 = React.useState(""),
11191
- openProblem = _useState7[0],
11192
- setOpenProblem = _useState7[1];
11689
+ timelyOrderQuestions = _useState5[0],
11690
+ setTimelyOrderQuestions = _useState5[1];
11691
+ var _useState6 = React.useState([]),
11692
+ categoryResponses = _useState6[0],
11693
+ setCategoryResponses = _useState6[1];
11694
+ var _useState7 = React.useState(0),
11695
+ dataChartIndex = _useState7[0],
11696
+ setDataChartIndex = _useState7[1];
11697
+ var _useState8 = React.useState(""),
11698
+ openProblem = _useState8[0],
11699
+ setOpenProblem = _useState8[1];
11193
11700
  var _useTranslation = reactI18next.useTranslation(),
11194
11701
  t = _useTranslation.t;
11195
11702
  var getStudentData = function getStudentData(examCode) {
11196
11703
  try {
11197
- var _temp4 = function _temp4() {
11198
- function _temp2() {
11199
- dispatch(setLoading(false));
11200
- }
11201
- var _temp = _catch(function () {
11202
- return Promise.resolve(Promise.all([getResults(examCode), getResultsLongTimeSpend(examCode), getResultsEffectSize(examCode), getResultsTimeOrderQuestion(examCode), getResultsCategories(examCode)])).then(function (result) {
11203
- var _result$0$data, _result$1$data, _result$2$data, _result$3$data, _result$4$data;
11204
- handleChangeTab(0);
11205
- setDataChartIndex(0);
11206
- setResultData((_result$0$data = result[0].data) === null || _result$0$data === void 0 ? void 0 : _result$0$data.data);
11207
- setLongTimeSpend((_result$1$data = result[1].data) === null || _result$1$data === void 0 ? void 0 : _result$1$data.data);
11208
- setEffectSize((_result$2$data = result[2].data) === null || _result$2$data === void 0 ? void 0 : _result$2$data.data);
11209
- setTimelyOrderQuestions((_result$3$data = result[3].data) === null || _result$3$data === void 0 ? void 0 : _result$3$data.data);
11210
- setCategoryResponses(((_result$4$data = result[4].data) === null || _result$4$data === void 0 ? void 0 : _result$4$data.data) || []);
11211
- });
11212
- }, function (error) {
11213
- reactToastify.toast.error(getErrorMessage(t, error));
11214
- });
11215
- return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
11704
+ var _temp2 = function _temp2() {
11705
+ setIsLoading(false);
11216
11706
  };
11217
11707
  if (!examCode) return Promise.resolve();
11218
- dispatch(setLoading(true));
11219
- var _temp3 = _catch(function () {
11220
- return Promise.resolve(getCheckStatusExam(examCode)).then(function () {});
11221
- }, function (error) {
11222
- console.log({
11223
- error: error
11708
+ setIsLoading(true);
11709
+ var _temp = _catch(function () {
11710
+ return Promise.resolve(Promise.all([getResults(examCode), getResultsLongTimeSpend(examCode), getResultsEffectSize(examCode), getResultsTimeOrderQuestion(examCode), getResultsCategories(examCode)])).then(function (result) {
11711
+ var _result$0$data, _result$1$data, _result$2$data, _result$3$data, _result$4$data;
11712
+ handleChangeTab(0);
11713
+ setDataChartIndex(0);
11714
+ setResultData((_result$0$data = result[0].data) === null || _result$0$data === void 0 ? void 0 : _result$0$data.data);
11715
+ setLongTimeSpend((_result$1$data = result[1].data) === null || _result$1$data === void 0 ? void 0 : _result$1$data.data);
11716
+ setEffectSize((_result$2$data = result[2].data) === null || _result$2$data === void 0 ? void 0 : _result$2$data.data);
11717
+ setTimelyOrderQuestions((_result$3$data = result[3].data) === null || _result$3$data === void 0 ? void 0 : _result$3$data.data);
11718
+ setCategoryResponses(((_result$4$data = result[4].data) === null || _result$4$data === void 0 ? void 0 : _result$4$data.data) || []);
11224
11719
  });
11720
+ }, function (error) {
11721
+ reactToastify.toast.error(getErrorMessage(t, error));
11225
11722
  });
11226
- return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
11723
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
11227
11724
  } catch (e) {
11228
11725
  return Promise.reject(e);
11229
11726
  }
11230
11727
  };
11231
11728
  var getStudentDataByTeacher = function getStudentDataByTeacher(examCode, examSessionId, studentId) {
11232
11729
  try {
11233
- var _temp8 = function _temp8() {
11234
- function _temp6() {
11235
- dispatch(setLoading(false));
11236
- }
11237
- var _temp5 = _catch(function () {
11238
- return Promise.resolve(Promise.all([getResultsTeacher(examSessionId, studentId), getResultsLongTimeSpendTeacher(examSessionId, studentId), getResultsEffectSizeTeacher(examSessionId, studentId), getResultsTimeOrderQuestionTeacher(examSessionId, studentId), getResultsCategoriesTeacher(examSessionId, studentId)])).then(function (result) {
11239
- var _result$0$data2, _result$1$data2, _result$2$data2, _result$3$data2, _result$4$data2;
11240
- handleChangeTab(0);
11241
- setDataChartIndex(0);
11242
- setResultData((_result$0$data2 = result[0].data) === null || _result$0$data2 === void 0 ? void 0 : _result$0$data2.data);
11243
- setLongTimeSpend((_result$1$data2 = result[1].data) === null || _result$1$data2 === void 0 ? void 0 : _result$1$data2.data);
11244
- setEffectSize((_result$2$data2 = result[2].data) === null || _result$2$data2 === void 0 ? void 0 : _result$2$data2.data);
11245
- setTimelyOrderQuestions((_result$3$data2 = result[3].data) === null || _result$3$data2 === void 0 ? void 0 : _result$3$data2.data);
11246
- setCategoryResponses(((_result$4$data2 = result[4].data) === null || _result$4$data2 === void 0 ? void 0 : _result$4$data2.data) || []);
11247
- });
11248
- }, function (error) {
11249
- reactToastify.toast.error(getErrorMessage(t, error));
11250
- });
11251
- return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5);
11730
+ var _temp5 = function _temp5() {
11731
+ setIsLoading(false);
11252
11732
  };
11253
11733
  if (!examCode || !examSessionId || !studentId) return Promise.resolve();
11254
- dispatch(setLoading(true));
11255
- var _temp7 = _catch(function () {
11256
- return Promise.resolve(getCheckStatusExam(examCode)).then(function () {});
11257
- }, function (error) {
11258
- console.log({
11259
- error: error
11734
+ setIsLoading(true);
11735
+ var _temp4 = _catch(function () {
11736
+ return Promise.resolve(Promise.all([getResultsTeacher(examSessionId, studentId), getResultsLongTimeSpendTeacher(examSessionId, studentId), getResultsEffectSizeTeacher(examSessionId, studentId), getResultsTimeOrderQuestionTeacher(examSessionId, studentId), getResultsCategoriesTeacher(examSessionId, studentId)])).then(function (result) {
11737
+ var _result$0$data2, _result$1$data2, _result$2$data2, _result$3$data2, _result$4$data2;
11738
+ function _temp3(_createRecentUserActi) {
11739
+ _createRecentUserActi;
11740
+ }
11741
+ handleChangeTab(0);
11742
+ setDataChartIndex(0);
11743
+ setResultData((_result$0$data2 = result[0].data) === null || _result$0$data2 === void 0 ? void 0 : _result$0$data2.data);
11744
+ setLongTimeSpend((_result$1$data2 = result[1].data) === null || _result$1$data2 === void 0 ? void 0 : _result$1$data2.data);
11745
+ setEffectSize((_result$2$data2 = result[2].data) === null || _result$2$data2 === void 0 ? void 0 : _result$2$data2.data);
11746
+ setTimelyOrderQuestions((_result$3$data2 = result[3].data) === null || _result$3$data2 === void 0 ? void 0 : _result$3$data2.data);
11747
+ setCategoryResponses(((_result$4$data2 = result[4].data) === null || _result$4$data2 === void 0 ? void 0 : _result$4$data2.data) || []);
11748
+ return isStudent ? _temp3(!isStudent && createRecentUserActionListApi({
11749
+ userId: studentId,
11750
+ action: RecentUserAction$1.ViewedExamResult,
11751
+ data: "" + examSessionId,
11752
+ roles: [exports.Role.Teacher]
11753
+ })) : Promise.resolve(!isStudent && createRecentUserActionListApi({
11754
+ userId: studentId,
11755
+ action: RecentUserAction$1.ViewedExamResult,
11756
+ data: "" + examSessionId,
11757
+ roles: [exports.Role.Teacher]
11758
+ })).then(_temp3);
11260
11759
  });
11760
+ }, function (error) {
11761
+ reactToastify.toast.error(getErrorMessage(t, error));
11261
11762
  });
11262
- return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(_temp8) : _temp8(_temp7));
11763
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
11263
11764
  } catch (e) {
11264
11765
  return Promise.reject(e);
11265
11766
  }
@@ -11435,13 +11936,13 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11435
11936
  var series = (_allSeries$dataChartI = allSeries[dataChartIndex]) != null ? _allSeries$dataChartI : defaultSeries(t);
11436
11937
  var handleExportPdf = function handleExportPdf() {
11437
11938
  try {
11438
- var _temp26 = function _temp26(_result) {
11939
+ var _temp24 = function _temp24(_result) {
11439
11940
  if (_exit) return _result;
11440
11941
  dispatch(setLoading(false));
11441
11942
  };
11442
11943
  var _exit = false;
11443
11944
  dispatch(setLoading(true));
11444
- var _temp25 = _catch(function () {
11945
+ var _temp23 = _catch(function () {
11445
11946
  var canvas = document.querySelector("#canvas");
11446
11947
  var headerCanvas = document.querySelector("#header-canvas");
11447
11948
  if (!canvas || !headerCanvas) {
@@ -11463,24 +11964,38 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11463
11964
  var imgWidth = WIDTH_PAPER;
11464
11965
  var chartWidth = WIDTH_PAPER - 20;
11465
11966
  return Promise.resolve(html2canvas(headerCanvas)).then(function (header) {
11466
- function _temp24() {
11967
+ function _temp22() {
11968
+ function _temp20(_createRecentUserActi2) {
11969
+ _createRecentUserActi2;
11970
+ }
11467
11971
  doc.save("download.pdf");
11972
+ return isStudent ? _temp20(!isStudent && createRecentUserActionListApi({
11973
+ userId: studentId,
11974
+ action: RecentUserAction$1.PrintedExamResult,
11975
+ data: "" + examSessionId,
11976
+ roles: [exports.Role.Teacher]
11977
+ })) : Promise.resolve(!isStudent && createRecentUserActionListApi({
11978
+ userId: studentId,
11979
+ action: RecentUserAction$1.PrintedExamResult,
11980
+ data: "" + examSessionId,
11981
+ roles: [exports.Role.Teacher]
11982
+ })).then(_temp20);
11468
11983
  }
11469
11984
  var imgHeaderHeight = header.height * imgWidth / header.width;
11470
11985
  var imgHeaderData = header.toDataURL('image/png');
11471
11986
  doc.addImage(imgHeaderData, 'PNG', 0, 0, imgWidth, imgHeaderHeight);
11472
11987
  line += imgHeaderHeight;
11473
11988
  if (line > HEIGHT_PAPER) breakPage();
11474
- var _temp23 = function () {
11989
+ var _temp21 = function () {
11475
11990
  if (canvas && canvas.childElementCount > 0) {
11476
11991
  var _index = 0;
11477
- var _temp22 = _for(function () {
11992
+ var _temp19 = _for(function () {
11478
11993
  return _index < canvas.childElementCount;
11479
11994
  }, function () {
11480
11995
  return _index++;
11481
11996
  }, function () {
11482
- function _temp21() {
11483
- function _temp19() {
11997
+ function _temp18() {
11998
+ function _temp16() {
11484
11999
  line += 20;
11485
12000
  }
11486
12001
  var printChartTitle = function printChartTitle() {
@@ -11495,11 +12010,11 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11495
12010
  return Promise.reject(e);
11496
12011
  }
11497
12012
  };
11498
- var _temp18 = function () {
12013
+ var _temp15 = function () {
11499
12014
  if (printContainerEls.length) {
11500
- var _temp17 = _forTo(printContainerEls, function (i) {
11501
- function _temp16() {
11502
- function _temp14() {
12015
+ var _temp14 = _forTo(printContainerEls, function (i) {
12016
+ function _temp13() {
12017
+ function _temp11() {
11503
12018
  var printTitle = function printTitle() {
11504
12019
  try {
11505
12020
  if (!printTitleHeight || !printTitleData) return Promise.resolve();
@@ -11528,10 +12043,10 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11528
12043
  var printContents = printContainerEl.querySelectorAll("." + PrintContentClassName);
11529
12044
  if (!printContents.length) return;
11530
12045
  printTitle();
11531
- var _temp12 = _forTo(printContents, function (j) {
12046
+ var _temp9 = _forTo(printContents, function (j) {
11532
12047
  var rowItem = printContents[j];
11533
12048
  return Promise.resolve(html2canvas(rowItem)).then(function (rowItemCanvas) {
11534
- function _temp11() {
12049
+ function _temp8() {
11535
12050
  doc.addImage(data, 'PNG', 10, line, chartWidth, height);
11536
12051
  line += height;
11537
12052
  }
@@ -11539,25 +12054,25 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11539
12054
  var data = rowItemCanvas.toDataURL('image/png');
11540
12055
  if (i === 0 && j === 0 && line + height + (printHeaderHeight || 0) + ((chartTitleHeight || 0) + 10) + 20 > HEIGHT_PAPER) breakPage();
11541
12056
  i === 0 && j === 0 && printChartTitle();
11542
- var _temp10 = function () {
12057
+ var _temp7 = function () {
11543
12058
  if (line + height + 20 > HEIGHT_PAPER) {
11544
12059
  breakPage();
11545
12060
  return Promise.resolve(printHeader()).then(function () {});
11546
12061
  } else {
11547
- var _temp27 = function () {
12062
+ var _temp25 = function () {
11548
12063
  if (j === 0) {
11549
12064
  return Promise.resolve(printHeader(10)).then(function () {});
11550
12065
  }
11551
12066
  }();
11552
- if (_temp27 && _temp27.then) return _temp27.then(function () {});
12067
+ if (_temp25 && _temp25.then) return _temp25.then(function () {});
11553
12068
  }
11554
12069
  }();
11555
- return _temp10 && _temp10.then ? _temp10.then(_temp11) : _temp11(_temp10);
12070
+ return _temp7 && _temp7.then ? _temp7.then(_temp8) : _temp8(_temp7);
11556
12071
  });
11557
12072
  });
11558
- if (_temp12 && _temp12.then) return _temp12.then(function () {});
12073
+ if (_temp9 && _temp9.then) return _temp9.then(function () {});
11559
12074
  }
11560
- var _temp13 = function () {
12075
+ var _temp10 = function () {
11561
12076
  if (printHeaderEl) {
11562
12077
  return Promise.resolve(html2canvas(printHeaderEl)).then(function (_html2canvas3) {
11563
12078
  printHeaderCanvas = _html2canvas3;
@@ -11566,7 +12081,7 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11566
12081
  });
11567
12082
  }
11568
12083
  }();
11569
- return _temp13 && _temp13.then ? _temp13.then(_temp14) : _temp14(_temp13);
12084
+ return _temp10 && _temp10.then ? _temp10.then(_temp11) : _temp11(_temp10);
11570
12085
  }
11571
12086
  var printContainerEl = printContainerEls[i];
11572
12087
  var printTitleEl = printContainerEl.querySelector("." + PrintTitleClassName);
@@ -11577,7 +12092,7 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11577
12092
  var printHeaderCanvas = null;
11578
12093
  var printHeaderHeight = null;
11579
12094
  var printHeaderData = "";
11580
- var _temp15 = function () {
12095
+ var _temp12 = function () {
11581
12096
  if (printTitleEl) {
11582
12097
  return Promise.resolve(html2canvas(printTitleEl)).then(function (_html2canvas2) {
11583
12098
  printTitleCanvas = _html2canvas2;
@@ -11586,9 +12101,9 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11586
12101
  });
11587
12102
  }
11588
12103
  }();
11589
- return _temp15 && _temp15.then ? _temp15.then(_temp16) : _temp16(_temp15);
12104
+ return _temp12 && _temp12.then ? _temp12.then(_temp13) : _temp13(_temp12);
11590
12105
  });
11591
- if (_temp17 && _temp17.then) return _temp17.then(function () {});
12106
+ if (_temp14 && _temp14.then) return _temp14.then(function () {});
11592
12107
  } else {
11593
12108
  return Promise.resolve(html2canvas(chart)).then(function (chartCanvas) {
11594
12109
  var imgBodyHeight = chartCanvas.height * chartWidth / chartCanvas.width;
@@ -11601,7 +12116,7 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11601
12116
  });
11602
12117
  }
11603
12118
  }();
11604
- return _temp18 && _temp18.then ? _temp18.then(_temp19) : _temp19(_temp18);
12119
+ return _temp15 && _temp15.then ? _temp15.then(_temp16) : _temp16(_temp15);
11605
12120
  }
11606
12121
  var chart = canvas.children.item(_index);
11607
12122
  if (chart.getAttribute("id") === "header-canvas") return;
@@ -11610,7 +12125,7 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11610
12125
  var printChartTitleCanvas = null;
11611
12126
  var chartTitleHeight = null;
11612
12127
  var chartTitleData = "";
11613
- var _temp20 = function () {
12128
+ var _temp17 = function () {
11614
12129
  if (chartTitle && printContainerEls.length) {
11615
12130
  return Promise.resolve(html2canvas(chartTitle)).then(function (_html2canvas) {
11616
12131
  printChartTitleCanvas = _html2canvas;
@@ -11619,12 +12134,12 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11619
12134
  });
11620
12135
  }
11621
12136
  }();
11622
- return _temp20 && _temp20.then ? _temp20.then(_temp21) : _temp21(_temp20);
12137
+ return _temp17 && _temp17.then ? _temp17.then(_temp18) : _temp18(_temp17);
11623
12138
  });
11624
- if (_temp22 && _temp22.then) return _temp22.then(function () {});
12139
+ if (_temp19 && _temp19.then) return _temp19.then(function () {});
11625
12140
  }
11626
12141
  }();
11627
- return _temp23 && _temp23.then ? _temp23.then(_temp24) : _temp24(_temp23);
12142
+ return _temp21 && _temp21.then ? _temp21.then(_temp22) : _temp22(_temp21);
11628
12143
  });
11629
12144
  }, function (error) {
11630
12145
  console.log({
@@ -11632,7 +12147,7 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11632
12147
  });
11633
12148
  reactToastify.toast.error(getErrorMessage(t, error));
11634
12149
  });
11635
- return Promise.resolve(_temp25 && _temp25.then ? _temp25.then(_temp26) : _temp26(_temp25));
12150
+ return Promise.resolve(_temp23 && _temp23.then ? _temp23.then(_temp24) : _temp24(_temp23));
11636
12151
  } catch (e) {
11637
12152
  return Promise.reject(e);
11638
12153
  }
@@ -11644,6 +12159,7 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11644
12159
  return utcToLocalTime(resultData === null || resultData === void 0 ? void 0 : resultData.startTime, "HH:mm") + " ~ " + utcToLocalTime(resultData === null || resultData === void 0 ? void 0 : resultData.finishTime, "HH:mm");
11645
12160
  }, [resultData === null || resultData === void 0 ? void 0 : resultData.startTime, resultData === null || resultData === void 0 ? void 0 : resultData.finishTime]);
11646
12161
  return {
12162
+ isLoading: isLoading,
11647
12163
  examTime: examTime,
11648
12164
  series: series,
11649
12165
  chartOptions: chartOptions,
@@ -13283,6 +13799,7 @@ function MyAnswer(_ref) {
13283
13799
  justifyContent: "flex-end"
13284
13800
  }
13285
13801
  }, React__default.createElement("span", {
13802
+ className: "pointer",
13286
13803
  onClick: function onClick(e) {
13287
13804
  return handleOpenChat(e, question === null || question === void 0 ? void 0 : question.id);
13288
13805
  }
@@ -14394,6 +14911,7 @@ var ExamResultV2 = function ExamResultV2(_ref) {
14394
14911
  selected = _useTab.selected,
14395
14912
  handleChangeTab = _useTab.handleChangeTab;
14396
14913
  var _useExamResult = useExamResult(searchParams, history, examSessionId, studentId, code, handleChangeTab, selected),
14914
+ isLoading = _useExamResult.isLoading,
14397
14915
  examTime = _useExamResult.examTime,
14398
14916
  series = _useExamResult.series,
14399
14917
  allSeries = _useExamResult.allSeries,
@@ -14418,7 +14936,9 @@ var ExamResultV2 = function ExamResultV2(_ref) {
14418
14936
  openCreateQuestionDialog = _useCreateQuestionDia.openCreateQuestionDialog,
14419
14937
  toggleCreateQuestion = _useCreateQuestionDia.toggleCreateQuestion;
14420
14938
  var isTabletUp = material.useMediaQuery('(min-width:900px)');
14421
- return React__default.createElement(React.Fragment, null, timelyOrderQuestions[dataChartIndex] && longTimeSpend && resultData && effectSize ? React__default.createElement("div", {
14939
+ return React__default.createElement(React.Fragment, null, React__default.createElement(LoadingComponent, {
14940
+ isLoading: isLoading
14941
+ }), timelyOrderQuestions[dataChartIndex] && longTimeSpend && resultData && effectSize ? React__default.createElement("div", {
14422
14942
  style: {
14423
14943
  width: "100%"
14424
14944
  }
@@ -14852,10 +15372,22 @@ var ExamResultV2 = function ExamResultV2(_ref) {
14852
15372
  })) : React__default.createElement(React.Fragment, null));
14853
15373
  };
14854
15374
 
15375
+ var RecentUserActionSortBy;
15376
+ (function (RecentUserActionSortBy) {
15377
+ RecentUserActionSortBy["CreatedAt"] = "CreatedAt";
15378
+ })(RecentUserActionSortBy || (RecentUserActionSortBy = {}));
15379
+ var OrderBy$1;
15380
+ (function (OrderBy) {
15381
+ OrderBy["ASC"] = "ASC";
15382
+ OrderBy["DESC"] = "DESC";
15383
+ })(OrderBy$1 || (OrderBy$1 = {}));
15384
+
14855
15385
 
14856
15386
 
14857
15387
  var index$3 = {
14858
- __proto__: null
15388
+ __proto__: null,
15389
+ get OrderBy () { return OrderBy$1; },
15390
+ get RecentUserActionSortBy () { return RecentUserActionSortBy; }
14859
15391
  };
14860
15392
 
14861
15393
  var getLocalDayOfWeek = function getLocalDayOfWeek(utcDateTime, dayOfWeek) {
@@ -14891,12 +15423,12 @@ var getRemainTime = function getRemainTime(startTime, duration) {
14891
15423
  };
14892
15424
 
14893
15425
  var times = {
14894
- __proto__: null,
14895
- getLocalDayOfWeek: getLocalDayOfWeek,
14896
- getUtcDayOfWeek: getUtcDayOfWeek,
14897
- timeSpanToLocalMoment: timeSpanToLocalMoment,
14898
- convertHHMMSStoSeconds: convertHHMMSStoSeconds,
14899
- getRemainTime: getRemainTime
15426
+ __proto__: null,
15427
+ getLocalDayOfWeek: getLocalDayOfWeek,
15428
+ getUtcDayOfWeek: getUtcDayOfWeek,
15429
+ timeSpanToLocalMoment: timeSpanToLocalMoment,
15430
+ convertHHMMSStoSeconds: convertHHMMSStoSeconds,
15431
+ getRemainTime: getRemainTime
14900
15432
  };
14901
15433
 
14902
15434
  var SIGN_IN_SUPER_ADMIN_URL = SUPER_ADMIN_BASE_URL + "/api/auth/login";
@@ -14922,6 +15454,7 @@ var signInSuperAdminApi = function signInSuperAdminApi(_ref2) {
14922
15454
  });
14923
15455
  };
14924
15456
 
15457
+ var PAGE_TITLE$2 = "sign_in";
14925
15458
  var useLogin$2 = function useLogin(_ref) {
14926
15459
  var history = _ref.history,
14927
15460
  _ref$role = _ref.role,
@@ -15012,8 +15545,13 @@ var useLogin$2 = function useLogin(_ref) {
15012
15545
  };
15013
15546
  React.useEffect(function () {
15014
15547
  var token = getAccessToken();
15015
- if (token) window.location.href = "/";
15016
- }, []);
15548
+ var academyDomain = getAcademyDomain();
15549
+ if (token && academyDomain) window.location.href = homeAcademyUrl;
15550
+ if (token && !academyDomain) window.location.href = homeUrl;
15551
+ }, [homeAcademyUrl, homeUrl]);
15552
+ React.useEffect(function () {
15553
+ document.title = t("study_peak") + " | " + t(PAGE_TITLE$2);
15554
+ }, [t]);
15017
15555
  return {
15018
15556
  handleSubmit: handleSubmit,
15019
15557
  handleClearAcademyDomain: handleClearAcademyDomain,
@@ -15514,15 +16052,14 @@ var Header = function Header(_ref) {
15514
16052
  var path = _ref2.path,
15515
16053
  icon = _ref2.icon,
15516
16054
  label = _ref2.label,
15517
- isMain = _ref2.isMain,
15518
16055
  activePaths = _ref2.activePaths;
15519
16056
  return React__default.createElement(reactRouterDom.Link, {
15520
16057
  key: path,
15521
16058
  "aria-current": "page",
15522
- to: !academyDomain && !isMain ? "#" : path,
16059
+ to: !academyDomain ? "#" : path,
15523
16060
  className: "text-decoration-none " + ((activePaths !== null && activePaths !== void 0 && activePaths.length ? activePaths.some(function (a) {
15524
- return pathname.startsWith(a);
15525
- }) : pathname.startsWith(path)) ? "" + styles["router-link-active"] : "") + " " + styles["tabText"] + " " + (!academyDomain && !isMain ? styles["disabled-link"] : "")
16061
+ return pathname === a;
16062
+ }) : pathname === path) ? "" + styles["router-link-active"] : "") + " " + styles["tabText"] + " " + (!academyDomain ? styles["disabled-link"] : "")
15526
16063
  }, React__default.createElement(material.Stack, {
15527
16064
  sx: {
15528
16065
  justifyContent: "center",
@@ -15551,7 +16088,7 @@ var Header = function Header(_ref) {
15551
16088
  alignItems: "center"
15552
16089
  }, React__default.createElement(reactRouterDom.Link, {
15553
16090
  "aria-current": "page",
15554
- to: homeRoute.path,
16091
+ to: academyDomain ? homeRoute.path : academyListRoute.path,
15555
16092
  className: "border-none"
15556
16093
  }, React__default.createElement(material.Stack, {
15557
16094
  justifyContent: "center",
@@ -15569,53 +16106,28 @@ var Header = function Header(_ref) {
15569
16106
  }))));
15570
16107
  };
15571
16108
 
15572
- var ACADEMY_URL$1 = BASE_URL + "/api/academy";
15573
- var getAcademyList$1 = function getAcademyList() {
15574
- return api.get("" + ACADEMY_URL$1);
15575
- };
15576
- var switchAcademy$1 = function switchAcademy(academyId) {
15577
- return api.post(ACADEMY_URL$1 + "/switch-academy?academyId=" + academyId);
15578
- };
15579
-
15580
16109
  var useAcademyList = function useAcademyList(history, role, homeAcademyUrl, homeUrl, registerUrl) {
15581
16110
  var dispatch = reactRedux.useDispatch();
15582
16111
  var _useLogin = useLogin(history, homeAcademyUrl, homeUrl, registerUrl),
15583
16112
  handleLoginAccessToken = _useLogin.handleLoginAccessToken;
15584
- var _useState = React.useState([]),
15585
- academyList = _useState[0],
15586
- setAcademyList = _useState[1];
16113
+ var academyList = reactRedux.useSelector(function (state) {
16114
+ var _state$academies;
16115
+ return (state === null || state === void 0 ? void 0 : (_state$academies = state.academies) === null || _state$academies === void 0 ? void 0 : _state$academies.items) || [];
16116
+ });
15587
16117
  var email = reactRedux.useSelector(function (state) {
15588
16118
  var _state$common, _state$common$user;
15589
16119
  return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : (_state$common$user = _state$common.user) === null || _state$common$user === void 0 ? void 0 : _state$common$user.email;
15590
16120
  });
15591
16121
  var _useTranslation = reactI18next.useTranslation(),
15592
16122
  t = _useTranslation.t;
15593
- var getAcademies = function getAcademies() {
16123
+ var handleSwitchAcademy = function handleSwitchAcademy(id, domain) {
15594
16124
  try {
15595
16125
  var _temp2 = function _temp2() {
15596
16126
  dispatch(setLoading(false));
15597
16127
  };
15598
16128
  dispatch(setLoading(true));
15599
16129
  var _temp = _catch(function () {
15600
- return Promise.resolve(getAcademyList$1()).then(function (res) {
15601
- setAcademyList(res.data.items || []);
15602
- });
15603
- }, function (error) {
15604
- reactToastify.toast.error(getErrorMessage(t, error));
15605
- });
15606
- return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
15607
- } catch (e) {
15608
- return Promise.reject(e);
15609
- }
15610
- };
15611
- var handleSwitchAcademy = function handleSwitchAcademy(id, domain) {
15612
- try {
15613
- var _temp4 = function _temp4() {
15614
- dispatch(setLoading(false));
15615
- };
15616
- dispatch(setLoading(true));
15617
- var _temp3 = _catch(function () {
15618
- return Promise.resolve(switchAcademy$1(id)).then(function (res) {
16130
+ return Promise.resolve(switchSuperAdminAcademy(id, role)).then(function (res) {
15619
16131
  var data = res.data;
15620
16132
  var requestBody = {
15621
16133
  accessToken: data.accessToken,
@@ -15629,14 +16141,11 @@ var useAcademyList = function useAcademyList(history, role, homeAcademyUrl, home
15629
16141
  }, function (error) {
15630
16142
  reactToastify.toast.error(getErrorMessage(t, error));
15631
16143
  });
15632
- return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
16144
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
15633
16145
  } catch (e) {
15634
16146
  return Promise.reject(e);
15635
16147
  }
15636
16148
  };
15637
- React.useEffect(function () {
15638
- getAcademies();
15639
- }, []);
15640
16149
  return {
15641
16150
  academyList: academyList,
15642
16151
  handleSwitchAcademy: handleSwitchAcademy
@@ -15676,6 +16185,220 @@ var AcademyCard = function AcademyCard(_ref) {
15676
16185
  }, t("switch"))));
15677
16186
  };
15678
16187
 
16188
+ var PassCodeDialog = function PassCodeDialog(_ref) {
16189
+ var open = _ref.open,
16190
+ onClose = _ref.onClose,
16191
+ onSubmit = _ref.onSubmit,
16192
+ academyDomain = _ref.academyDomain;
16193
+ var _useTranslation = reactI18next.useTranslation(),
16194
+ t = _useTranslation.t;
16195
+ var _useState = React.useState(""),
16196
+ passCode = _useState[0],
16197
+ setPassCode = _useState[1];
16198
+ var handleClose = function handleClose(event, reason) {
16199
+ onClose(event, reason);
16200
+ };
16201
+ var handleSubmit = function handleSubmit() {
16202
+ try {
16203
+ var data = {
16204
+ code: passCode,
16205
+ academyDomain: academyDomain
16206
+ };
16207
+ return Promise.resolve(onSubmit(data, handleClose)).then(function () {});
16208
+ } catch (e) {
16209
+ return Promise.reject(e);
16210
+ }
16211
+ };
16212
+ var handleChangePassCode = function handleChangePassCode(e) {
16213
+ setPassCode(e.target.value);
16214
+ };
16215
+ var theme = material.useTheme();
16216
+ return React__default.createElement(CommonDialog, {
16217
+ open: open,
16218
+ onClose: handleClose,
16219
+ size: "xs",
16220
+ title: t("join_an_academy")
16221
+ }, React__default.createElement(material.DialogContent, {
16222
+ sx: {
16223
+ overflowY: "unset"
16224
+ }
16225
+ }, React__default.createElement(material.Stack, {
16226
+ direction: "column",
16227
+ spacing: 2,
16228
+ zIndex: 1,
16229
+ position: "relative"
16230
+ }, React__default.createElement(material.FormGroup, null, React__default.createElement(material.FormLabel, {
16231
+ className: "fw-medium mb-1"
16232
+ }, t("pass_code"), React__default.createElement("span", {
16233
+ className: "text-danger"
16234
+ }, "*")), React__default.createElement(InputText, {
16235
+ id: "pass-code",
16236
+ placeholder: t("enter_pass_code"),
16237
+ value: passCode,
16238
+ onChange: handleChangePassCode
16239
+ })))), React__default.createElement(material.DialogActions, {
16240
+ className: ""
16241
+ }, React__default.createElement(material.Button, {
16242
+ variant: "contained",
16243
+ sx: {
16244
+ bgcolor: theme.palette.grey[700]
16245
+ },
16246
+ onClick: handleClose
16247
+ }, t("cancel")), React__default.createElement(material.Button, {
16248
+ variant: "contained",
16249
+ onClick: handleSubmit,
16250
+ disabled: !passCode.trim().length
16251
+ }, t("submit"))));
16252
+ };
16253
+
16254
+ var PASS_CODE_URL = SUPER_ADMIN_BASE_URL + "/api/passCodes";
16255
+ var checkPassCodeApi = function checkPassCodeApi(code, academyDomain) {
16256
+ return api.post(PASS_CODE_URL + "/check", {
16257
+ code: code,
16258
+ academyDomain: academyDomain
16259
+ });
16260
+ };
16261
+
16262
+ var usePassCodeCheck = function usePassCodeCheck(props) {
16263
+ var history = props.history,
16264
+ role = props.role,
16265
+ homeAcademyUrl = props.homeAcademyUrl,
16266
+ homeUrl = props.homeUrl,
16267
+ registerUrl = props.registerUrl,
16268
+ domain = props.domain;
16269
+ var _useTranslation = reactI18next.useTranslation(),
16270
+ t = _useTranslation.t;
16271
+ var dispatch = reactRedux.useDispatch();
16272
+ var email = reactRedux.useSelector(function (state) {
16273
+ var _state$common, _state$common$user;
16274
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : (_state$common$user = _state$common.user) === null || _state$common$user === void 0 ? void 0 : _state$common$user.email;
16275
+ });
16276
+ var academyDomain = reactRedux.useSelector(function (state) {
16277
+ var _state$common2, _state$common2$user;
16278
+ return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : (_state$common2$user = _state$common2.user) === null || _state$common2$user === void 0 ? void 0 : _state$common2$user.academyDomain;
16279
+ });
16280
+ var _useState = React.useState(),
16281
+ academy = _useState[0],
16282
+ setAcademy = _useState[1];
16283
+ var _useState2 = React.useState(),
16284
+ isLoadingAcademy = _useState2[0],
16285
+ setLoadingAcademy = _useState2[1];
16286
+ var _useLogin = useLogin(history, homeAcademyUrl, homeUrl, registerUrl),
16287
+ handleLoginAccessToken = _useLogin.handleLoginAccessToken;
16288
+ var handleCheckPassCode = function handleCheckPassCode(form, callback) {
16289
+ try {
16290
+ var _temp2 = function _temp2(_result) {
16291
+ if (_exit) return _result;
16292
+ dispatch(setLoading(false));
16293
+ };
16294
+ var _exit = false;
16295
+ dispatch(setLoading(true));
16296
+ var _temp = _catch(function () {
16297
+ if (role !== exports.Role.Student) {
16298
+ _exit = true;
16299
+ return;
16300
+ }
16301
+ return Promise.resolve(checkPassCodeApi(form.code, form.academyDomain)).then(function (res) {
16302
+ var data = res.data;
16303
+ var requestBody = {
16304
+ accessToken: data.accessToken,
16305
+ email: email,
16306
+ academyId: data.academyId,
16307
+ role: exports.Role.Student
16308
+ };
16309
+ return Promise.resolve(handleLoginAccessToken(requestBody, false)).then(function () {
16310
+ localStorage.setItem(ACADEMY_DOMAIN, data.academyDomain);
16311
+ callback === null || callback === void 0 ? void 0 : callback();
16312
+ });
16313
+ });
16314
+ }, function (error) {
16315
+ reactToastify.toast.error(getErrorMessage(t, error));
16316
+ });
16317
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
16318
+ } catch (e) {
16319
+ return Promise.reject(e);
16320
+ }
16321
+ };
16322
+ var getAcademyByDomain = function getAcademyByDomain() {
16323
+ try {
16324
+ var _temp6 = function _temp6(_result2) {
16325
+ if (_exit2) return _result2;
16326
+ setLoadingAcademy(false);
16327
+ };
16328
+ var _exit2 = false;
16329
+ if (!domain) return Promise.resolve();
16330
+ setLoadingAcademy(true);
16331
+ var _temp5 = _catch(function () {
16332
+ return Promise.resolve(getAcademyByDomainApi(domain, exports.Role.Student)).then(function (res) {
16333
+ var _res$data;
16334
+ var _exit3 = false;
16335
+ function _temp4(_result3) {
16336
+ if (_exit3) return _result3;
16337
+ setAcademy(academy);
16338
+ }
16339
+ var academy = (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.data;
16340
+ var _temp3 = function () {
16341
+ if (academy.isOwned) {
16342
+ return Promise.resolve(switchSuperAdminAcademy(academy.id, exports.Role.Student)).then(function (switchAcademyRes) {
16343
+ var switchAcademyData = switchAcademyRes.data;
16344
+ var requestBody = {
16345
+ accessToken: switchAcademyData.accessToken,
16346
+ email: email,
16347
+ academyId: academy.id,
16348
+ role: exports.Role.Student
16349
+ };
16350
+ localStorage.setItem(ACADEMY_DOMAIN, domain);
16351
+ return Promise.resolve(handleLoginAccessToken(requestBody, false)).then(function () {
16352
+ _exit2 = true;
16353
+ });
16354
+ });
16355
+ }
16356
+ }();
16357
+ return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
16358
+ });
16359
+ }, function (error) {
16360
+ console.log("error", error);
16361
+ });
16362
+ return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
16363
+ } catch (e) {
16364
+ return Promise.reject(e);
16365
+ }
16366
+ };
16367
+ React.useEffect(function () {
16368
+ email && !academyDomain && getAcademyByDomain();
16369
+ }, [domain, academyDomain, email]);
16370
+ return {
16371
+ academy: academy,
16372
+ isLoadingAcademy: isLoadingAcademy,
16373
+ academyDomain: academyDomain,
16374
+ email: email,
16375
+ handleCheckPassCode: handleCheckPassCode
16376
+ };
16377
+ };
16378
+
16379
+ var PassCodeCheck = function PassCodeCheck(props) {
16380
+ var role = props.role,
16381
+ open = props.open,
16382
+ domain = props.domain,
16383
+ onClose = props.onClose;
16384
+ var _usePassCodeCheck = usePassCodeCheck(props),
16385
+ academy = _usePassCodeCheck.academy,
16386
+ isLoadingAcademy = _usePassCodeCheck.isLoadingAcademy,
16387
+ academyDomain = _usePassCodeCheck.academyDomain,
16388
+ email = _usePassCodeCheck.email,
16389
+ handleCheckPassCode = _usePassCodeCheck.handleCheckPassCode;
16390
+ if (role !== exports.Role.Student || domain && isLoadingAcademy === false && !academy) return React__default.createElement(NotFound, null);
16391
+ return React__default.createElement(React.Fragment, null, React__default.createElement(LoadingComponent, {
16392
+ isLoading: !!isLoadingAcademy
16393
+ }), !!email && !academyDomain && (!domain || !!academy) && React__default.createElement(PassCodeDialog, {
16394
+ open: open,
16395
+ academyDomain: domain,
16396
+ onClose: onClose,
16397
+ onSubmit: handleCheckPassCode
16398
+ }));
16399
+ };
16400
+
16401
+ var PAGE_TITLE$3 = "academy_list";
15679
16402
  var AcademyList = function AcademyList(_ref) {
15680
16403
  var theme = _ref.theme,
15681
16404
  history = _ref.history,
@@ -15685,10 +16408,19 @@ var AcademyList = function AcademyList(_ref) {
15685
16408
  registerUrl = _ref.registerUrl;
15686
16409
  var _useTranslation = reactI18next.useTranslation(),
15687
16410
  t = _useTranslation.t;
16411
+ var _useState = React.useState(false),
16412
+ isOpenPassCode = _useState[0],
16413
+ setOpenPassCode = _useState[1];
16414
+ var handleTogglePassCodeDialog = function handleTogglePassCodeDialog() {
16415
+ setOpenPassCode(!isOpenPassCode);
16416
+ };
15688
16417
  useAutoAcademyDomain(function () {}, history, [], "", window.location.pathname, true);
15689
16418
  var _useAcademyList = useAcademyList(history, role, homeAcademyUrl, homeUrl, registerUrl),
15690
16419
  academyList = _useAcademyList.academyList,
15691
16420
  handleSwitchAcademy = _useAcademyList.handleSwitchAcademy;
16421
+ React.useEffect(function () {
16422
+ document.title = t("study_peak") + " | " + t(PAGE_TITLE$3);
16423
+ }, [t]);
15692
16424
  return React__default.createElement("div", {
15693
16425
  className: "py-3 px-4"
15694
16426
  }, React__default.createElement(Grid, {
@@ -15697,10 +16429,18 @@ var AcademyList = function AcademyList(_ref) {
15697
16429
  }, React__default.createElement(Grid, {
15698
16430
  item: true,
15699
16431
  xs: 12
16432
+ }, React__default.createElement(material.Stack, {
16433
+ direction: "row",
16434
+ justifyContent: "space-between",
16435
+ alignItems: "center",
16436
+ spacing: 3
15700
16437
  }, React__default.createElement(Typography, {
15701
16438
  fontSize: 24,
15702
16439
  fontWeight: 600
15703
- }, t("academy_list"))), React__default.createElement(Grid, {
16440
+ }, t("academy_list")), role === exports.Role.Student && React__default.createElement(material.Button, {
16441
+ variant: "contained",
16442
+ onClick: handleTogglePassCodeDialog
16443
+ }, t("enter_academy_pass_code")))), React__default.createElement(Grid, {
15704
16444
  item: true,
15705
16445
  xs: 12
15706
16446
  }, React__default.createElement(Grid, {
@@ -15720,7 +16460,20 @@ var AcademyList = function AcademyList(_ref) {
15720
16460
  }), !academyList.length && React__default.createElement(Grid, {
15721
16461
  item: true,
15722
16462
  xs: 3
15723
- }, React__default.createElement("span", null, t("no_academy_available"), "."))))));
16463
+ }, React__default.createElement("span", null, t("no_academy_available"), "."))))), React__default.createElement(PassCodeCheck, {
16464
+ role: role,
16465
+ open: isOpenPassCode,
16466
+ onClose: handleTogglePassCodeDialog,
16467
+ homeAcademyUrl: homeAcademyUrl,
16468
+ homeUrl: homeUrl,
16469
+ registerUrl: registerUrl,
16470
+ history: history
16471
+ }));
16472
+ };
16473
+
16474
+ var EXAM_SESSION_URL$1 = BASE_URL + "/api/examSession";
16475
+ var getCheckStatusExam = function getCheckStatusExam(examCode) {
16476
+ return api.get(EXAM_SESSION_URL$1 + "/" + examCode + "/status");
15724
16477
  };
15725
16478
 
15726
16479
  var ONE_SECOND_IN_MILLISECONDS = 1000;
@@ -15731,6 +16484,7 @@ var useCountDownTimer = function useCountDownTimer(props) {
15731
16484
  duration = props.duration,
15732
16485
  fetchedCount = props.fetchedCount,
15733
16486
  onFinish = props.onFinish;
16487
+ var dispatch = reactRedux.useDispatch();
15734
16488
  var _useState = React.useState(),
15735
16489
  remainTime = _useState[0],
15736
16490
  setRemainTime = _useState[1];
@@ -15743,9 +16497,11 @@ var useCountDownTimer = function useCountDownTimer(props) {
15743
16497
  return Promise.resolve();
15744
16498
  }
15745
16499
  var _temp = _catch(function () {
16500
+ dispatch(setLoading(true));
15746
16501
  return Promise.resolve(getCheckStatusExam(code)).then(function (res) {
15747
16502
  if (res.data.data.status === ExamStatus$1.Completed) {
15748
- clearInterval(checkStatusRef.current);
16503
+ clearTimeout(checkStatusRef.current);
16504
+ dispatch(setLoading(false));
15749
16505
  onFinish();
15750
16506
  } else {
15751
16507
  checkStatusRef.current = setTimeout(checkLiveExamStatus, ONE_SECOND_IN_MILLISECONDS);
@@ -15766,7 +16522,6 @@ var useCountDownTimer = function useCountDownTimer(props) {
15766
16522
  var animate = function animate() {
15767
16523
  if (!startTime || !duration) return;
15768
16524
  if (typeof remainTime === "number" && remainTime <= 0) {
15769
- onFinish();
15770
16525
  return;
15771
16526
  }
15772
16527
  var remain = getRemainTime(startTime, duration);
@@ -15776,7 +16531,6 @@ var useCountDownTimer = function useCountDownTimer(props) {
15776
16531
  }
15777
16532
  if (remain <= 0) {
15778
16533
  setRemainTime(0);
15779
- checkLiveExamStatus();
15780
16534
  return;
15781
16535
  }
15782
16536
  setRemainTime(remain || 0);
@@ -15785,61 +16539,15 @@ var useCountDownTimer = function useCountDownTimer(props) {
15785
16539
  requestRef.current = requestAnimationFrame(animate);
15786
16540
  return function () {
15787
16541
  !!requestRef.current && cancelAnimationFrame(requestRef.current);
15788
- !!checkStatusRef.current && clearTimeout(checkStatusRef.current);
15789
16542
  setRemainTime(undefined);
15790
16543
  };
15791
- }, [startTime, duration, fetchedCount, checkLiveExamStatus]);
16544
+ }, [startTime, duration, fetchedCount]);
15792
16545
  React.useEffect(function () {
15793
- if (typeof remainTime === "number" && remainTime <= 0) onFinish();
15794
- }, [remainTime, onFinish]);
16546
+ if (typeof remainTime === "number" && remainTime <= 0) checkLiveExamStatus();
16547
+ }, [remainTime, checkLiveExamStatus]);
15795
16548
  return remainTime;
15796
16549
  };
15797
16550
 
15798
- var EXAM_SESSION_URL$1 = BASE_URL + "/api/examSession";
15799
- var getCheckStatusExam$1 = function getCheckStatusExam(examCode) {
15800
- return api.get(EXAM_SESSION_URL$1 + "/" + examCode + "/status");
15801
- };
15802
-
15803
- var useCheckExam = function useCheckExam(code, status) {
15804
- var _useState = React.useState({}),
15805
- isCheckExam = _useState[0],
15806
- setCheckExam = _useState[1];
15807
- var isCheck = !code ? false : isCheckExam[code];
15808
- var checkExam = function checkExam() {
15809
- try {
15810
- if (!code || isCheck) return Promise.resolve();
15811
- if (status === ExamStatus$1.Completed) {
15812
- setCheckExam(function (state) {
15813
- var _extends2;
15814
- return _extends({}, state, (_extends2 = {}, _extends2[code] = true, _extends2));
15815
- });
15816
- return Promise.resolve();
15817
- }
15818
- var _temp = _catch(function () {
15819
- return Promise.resolve(getCheckStatusExam$1(code)).then(function () {
15820
- setCheckExam(function (state) {
15821
- var _extends3;
15822
- return _extends({}, state, (_extends3 = {}, _extends3[code] = true, _extends3));
15823
- });
15824
- });
15825
- }, function (error) {
15826
- console.log({
15827
- error: error
15828
- });
15829
- });
15830
- return Promise.resolve(_temp && _temp.then ? _temp.then(function () {}) : void 0);
15831
- } catch (e) {
15832
- return Promise.reject(e);
15833
- }
15834
- };
15835
- React.useEffect(function () {
15836
- checkExam();
15837
- }, [code]);
15838
- return {
15839
- isCheck: isCheck
15840
- };
15841
- };
15842
-
15843
16551
  var useLoadMore = function useLoadMore(props) {
15844
16552
  var onLoadMore = props.onLoadMore,
15845
16553
  loading = props.loading;
@@ -15940,28 +16648,28 @@ var useVirtualizeList = function useVirtualizeList(totalItems, rowHeight, offset
15940
16648
 
15941
16649
  exports.moment = moment;
15942
16650
  Object.defineProperty(exports, 'I18nextProvider', {
15943
- enumerable: true,
15944
- get: function () {
15945
- return reactI18next.I18nextProvider;
15946
- }
16651
+ enumerable: true,
16652
+ get: function () {
16653
+ return reactI18next.I18nextProvider;
16654
+ }
15947
16655
  });
15948
16656
  Object.defineProperty(exports, 'useTranslation', {
15949
- enumerable: true,
15950
- get: function () {
15951
- return reactI18next.useTranslation;
15952
- }
16657
+ enumerable: true,
16658
+ get: function () {
16659
+ return reactI18next.useTranslation;
16660
+ }
15953
16661
  });
15954
16662
  Object.defineProperty(exports, 'ToastContainer', {
15955
- enumerable: true,
15956
- get: function () {
15957
- return reactToastify.ToastContainer;
15958
- }
16663
+ enumerable: true,
16664
+ get: function () {
16665
+ return reactToastify.ToastContainer;
16666
+ }
15959
16667
  });
15960
16668
  Object.defineProperty(exports, 'toast', {
15961
- enumerable: true,
15962
- get: function () {
15963
- return reactToastify.toast;
15964
- }
16669
+ enumerable: true,
16670
+ get: function () {
16671
+ return reactToastify.toast;
16672
+ }
15965
16673
  });
15966
16674
  exports.ACADEMY_DOMAIN = ACADEMY_DOMAIN;
15967
16675
  exports.ACCESS_TOKEN = ACCESS_TOKEN;
@@ -15995,11 +16703,14 @@ exports.InputText = InputText;
15995
16703
  exports.LANGUAGES = LANGUAGES;
15996
16704
  exports.LayoutContext = LayoutContext;
15997
16705
  exports.Loading = Loading;
16706
+ exports.LoadingComponent = LoadingComponent;
15998
16707
  exports.Login = Login;
15999
16708
  exports.LoginWithPassword = SignIn;
16000
16709
  exports.NotFound = NotFound;
16001
16710
  exports.PUSHER_CONFIG = PUSHER_CONFIG;
16711
+ exports.PassCodeCheck = PassCodeCheck;
16002
16712
  exports.QuestionCountSelector = QuestionCountSelector;
16713
+ exports.RecentUserAction = RecentUserAction;
16003
16714
  exports.SUPER_ADMIN_BASE_URL = SUPER_ADMIN_BASE_URL;
16004
16715
  exports.ScoreSelector = ScoreSelector;
16005
16716
  exports.SubjectSelector = SubjectSelector;
@@ -16012,12 +16723,15 @@ exports.Types = index$3;
16012
16723
  exports.api = api;
16013
16724
  exports.apiUpload = apiUpload;
16014
16725
  exports.canAccessRoute = canAccess;
16726
+ exports.checkSuperUrl = checkSuperUrl;
16727
+ exports.createRecentUserActionListApi = createRecentUserActionListApi;
16015
16728
  exports.diffFromNow = diffFromNow;
16016
16729
  exports.formatTime = formatTime;
16017
16730
  exports.getAcademyDomain = getAcademyDomain;
16018
16731
  exports.getAccessToken = getAccessToken;
16019
16732
  exports.getErrorMessage = getErrorMessage;
16020
16733
  exports.getOrdinalSuffix = getOrdinalSuffix;
16734
+ exports.getRecentUserActionListApi = getRecentUserActionListApi;
16021
16735
  exports.i18n = i18n;
16022
16736
  exports.minutesToTimeSpan = minutesToTimeSpan;
16023
16737
  exports.setAlert = setAlert;
@@ -16032,7 +16746,6 @@ exports.toISOString = toISOString;
16032
16746
  exports.useAutoAcademyDomain = useAutoAcademyDomain;
16033
16747
  exports.useCategorySelect = useCategorySelect;
16034
16748
  exports.useChatContainer = useChatContainer;
16035
- exports.useCheckExam = useCheckExam;
16036
16749
  exports.useCountDownTimer = useCountDownTimer;
16037
16750
  exports.useGoogleSignOut = useGoogleSignOut;
16038
16751
  exports.useLanguage = useLanguage;