touchstudy-core 0.1.69 → 0.1.71

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 (33) 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/hooks/useExamResult.d.ts +1 -0
  11. package/dist/containers/Login/hooks/useLogin.d.ts +1 -1
  12. package/dist/containers/PassCodes/configs/types.d.ts +6 -0
  13. package/dist/containers/PassCodes/hooks/usePassCodeCheck.d.ts +19 -0
  14. package/dist/containers/PassCodes/views/PassCodeCheck.d.ts +14 -0
  15. package/dist/index.css +2 -1
  16. package/dist/index.d.ts +6 -2
  17. package/dist/index.js +955 -220
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.modern.js +934 -205
  20. package/dist/index.modern.js.map +1 -1
  21. package/dist/services/academyService.d.ts +4 -1
  22. package/dist/services/accountService.d.ts +1 -0
  23. package/dist/services/passCodeService.d.ts +1 -0
  24. package/dist/services/recentUserActionService.d.ts +10 -0
  25. package/dist/utils/constants.d.ts +21 -0
  26. package/dist/utils/enums/index.d.ts +2 -1
  27. package/dist/utils/enums/recentUserAction.d.ts +7 -0
  28. package/dist/utils/hooks/useLayoutContext.d.ts +3 -1
  29. package/dist/utils/hooks/useSwitchAcademy.d.ts +1 -1
  30. package/dist/utils/types/checkSuperUrl.d.ts +1 -0
  31. package/dist/utils/types/index.d.ts +2 -1
  32. package/dist/utils/types/recentUserAction.d.ts +33 -0
  33. 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) {
@@ -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 = "사용자 가져오기 실패";
@@ -2529,6 +2635,82 @@ var messages = {
2529
2635
  var submit = "제출하다";
2530
2636
  var must_select_a_teacher_first = "먼저 교사를 선택해야 합니다";
2531
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 = "데이터를 성공적으로 생성했습니다";
2532
2714
  var lang_ko = {
2533
2715
  problem_solving: problem_solving,
2534
2716
  my_story: my_story,
@@ -3193,7 +3375,83 @@ var lang_ko = {
3193
3375
  messages: messages,
3194
3376
  submit: submit,
3195
3377
  must_select_a_teacher_first: must_select_a_teacher_first,
3196
- student_grade_is_invalid: student_grade_is_invalid
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
3197
3455
  };
3198
3456
 
3199
3457
  var problem_solving$1 = "Problem Solving";
@@ -3845,7 +4103,7 @@ var choose$1 = "Choose";
3845
4103
  var additional_duration$1 = "Additional duration";
3846
4104
  var enter_textbook_name_to_search$1 = "Enter textbook name to search";
3847
4105
  var select_class_placeholder$1 = "Select class...";
3848
- var user_name$1 = "Username";
4106
+ var user_name$1 = "User Name";
3849
4107
  var vulnerable_detail$1 = "Other students had a high percentage of correct answers, but I could not answer these questions correctly.";
3850
4108
  var protracted_problem_detail$1 = "Compare the solution time among the correct answers.";
3851
4109
  var number_of_correct_answers$1 = "Number of correct answers";
@@ -3867,6 +4125,81 @@ var messages$1 = {
3867
4125
  var submit$1 = "Submit";
3868
4126
  var must_select_a_teacher_first$1 = "Must select a teacher first";
3869
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";
3870
4203
  var lang_en = {
3871
4204
  problem_solving: problem_solving$1,
3872
4205
  my_story: my_story$1,
@@ -4531,7 +4864,82 @@ var lang_en = {
4531
4864
  messages: messages$1,
4532
4865
  submit: submit$1,
4533
4866
  must_select_a_teacher_first: must_select_a_teacher_first$1,
4534
- student_grade_is_invalid: student_grade_is_invalid$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
4535
4943
  };
4536
4944
 
4537
4945
  i18n.use(reactI18next.initReactI18next).init({
@@ -4627,6 +5035,7 @@ var TheLanguageDropdown = function TheLanguageDropdown(_ref) {
4627
5035
  };
4628
5036
 
4629
5037
  var useSwitchAcademy = function useSwitchAcademy(role, history, homeAcademyUrl, homeUrl, canFetchAcademies) {
5038
+ var _user$roles;
4630
5039
  if (role === void 0) {
4631
5040
  role = exports.Role.Student;
4632
5041
  }
@@ -4702,8 +5111,9 @@ var useSwitchAcademy = function useSwitchAcademy(role, history, homeAcademyUrl,
4702
5111
  isLoading && dispatch(setLoading(true));
4703
5112
  var academyId = selectedAcademy ? selectedAcademy.id : 0;
4704
5113
  var academyDomain = selectedAcademy ? selectedAcademy.domain : undefined;
5114
+ var isSuperAdminUser = user && !user.academyDomain;
4705
5115
  var _temp4 = _catch(function () {
4706
- return Promise.resolve(switchAcademy(academyId)).then(function (res) {
5116
+ return Promise.resolve(isSuperAdminUser ? switchSuperAdminAcademy(academyId, role) : switchAcademy(academyId, role)).then(function (res) {
4707
5117
  var data = res.data;
4708
5118
  var requestBody = {
4709
5119
  accessToken: data.accessToken,
@@ -4724,16 +5134,15 @@ var useSwitchAcademy = function useSwitchAcademy(role, history, homeAcademyUrl,
4724
5134
  return Promise.reject(e);
4725
5135
  }
4726
5136
  };
4727
- var handleLogOutAcademy = function handleLogOutAcademy(selectedAcademy, callback) {
5137
+ var handleLogOutAcademy = function handleLogOutAcademy(callback) {
4728
5138
  try {
4729
5139
  var _temp7 = function _temp7() {
4730
5140
  dispatch(setLoading(false));
4731
5141
  callback();
4732
5142
  };
4733
5143
  dispatch(setLoading(true));
4734
- var academyDomain = selectedAcademy ? selectedAcademy.domain : undefined;
4735
5144
  var _temp6 = _catch(function () {
4736
- return Promise.resolve(switchAcademy(0)).then(function (res) {
5145
+ return Promise.resolve(switchAcademy(0, role)).then(function (res) {
4737
5146
  var data = res.data;
4738
5147
  var requestBody = {
4739
5148
  accessToken: data.accessToken,
@@ -4741,12 +5150,11 @@ var useSwitchAcademy = function useSwitchAcademy(role, history, homeAcademyUrl,
4741
5150
  academyId: 0,
4742
5151
  role: role
4743
5152
  };
4744
- academyDomain && localStorage.setItem(ACADEMY_DOMAIN, academyDomain);
4745
- !academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
4746
- 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 () {});
4747
5155
  });
4748
5156
  }, function (error) {
4749
- academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
5157
+ localStorage.removeItem(ACADEMY_DOMAIN);
4750
5158
  reactToastify.toast.error(getErrorMessage(t, error));
4751
5159
  });
4752
5160
  return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6));
@@ -4756,7 +5164,7 @@ var useSwitchAcademy = function useSwitchAcademy(role, history, homeAcademyUrl,
4756
5164
  };
4757
5165
  React.useEffect(function () {
4758
5166
  canFetchAcademies && getAcademies();
4759
- }, [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(",")]);
4760
5168
  React.useEffect(function () {
4761
5169
  canFetchAcademies && isReFetchUserAcademies && getAcademies(false);
4762
5170
  }, [canFetchAcademies, isReFetchUserAcademies]);
@@ -4852,7 +5260,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
4852
5260
  display: "flex",
4853
5261
  alignItems: "center"
4854
5262
  }
4855
- }, selectedAcademy !== null && selectedAcademy !== void 0 && selectedAcademy.name ? React__default.createElement(material.Stack, {
5263
+ }, React__default.createElement(material.Stack, {
4856
5264
  flexDirection: "column",
4857
5265
  gap: "2px"
4858
5266
  }, React__default.createElement(material.Typography, {
@@ -4873,28 +5281,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
4873
5281
  lineHeight: '1.5em',
4874
5282
  color: styles.gray_500
4875
5283
  }
4876
- }, selectedAcademy.name)) : React__default.createElement(material.Stack, {
4877
- flexDirection: "column",
4878
- gap: "2px"
4879
- }, React__default.createElement(material.Typography, {
4880
- textAlign: "start",
4881
- className: "" + styles["line-clamp"],
4882
- sx: {
4883
- fontSize: 14,
4884
- fontWeight: 900,
4885
- lineHeight: '1.5em',
4886
- color: styles.gray_900
4887
- }
4888
- }), React__default.createElement(material.Typography, {
4889
- textAlign: "start",
4890
- className: "" + styles["line-clamp"],
4891
- sx: {
4892
- fontSize: 14,
4893
- fontWeight: 600,
4894
- lineHeight: '1.5em',
4895
- color: styles.gray_500
4896
- }
4897
- }, 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, {
4898
5285
  item: true,
4899
5286
  xs: 6,
4900
5287
  lg: 2,
@@ -4994,7 +5381,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
4994
5381
  }
4995
5382
  }, option.name))), option.id === (selectedAcademy === null || selectedAcademy === void 0 ? void 0 : selectedAcademy.id) && React__default.createElement("div", {
4996
5383
  onClick: function onClick() {
4997
- return handleLogOutAcademy(selectedAcademy, handleClose);
5384
+ return handleLogOutAcademy(handleClose);
4998
5385
  }
4999
5386
  }, React__default.createElement(io5.IoCloseCircle, {
5000
5387
  size: 18,
@@ -6499,14 +6886,14 @@ var MessageStatus;
6499
6886
  })(MessageStatus || (MessageStatus = {}));
6500
6887
 
6501
6888
  var types = {
6502
- __proto__: null,
6503
- get MessageSortBy () { return MessageSortBy; },
6504
- get OrderBy () { return OrderBy; },
6505
- get StudentSortBy () { return StudentSortBy; },
6506
- get StudentOrderBy () { return StudentOrderBy; },
6507
- get MessageAction () { return MessageAction; },
6508
- get MessageSourceType () { return MessageSourceType; },
6509
- 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; }
6510
6897
  };
6511
6898
 
6512
6899
  var ExamStatus;
@@ -6530,7 +6917,8 @@ var MESSAGE_DEFAULT_FILTER = {
6530
6917
  sortColumnName: MessageSortBy.CreatedAt
6531
6918
  };
6532
6919
 
6533
- var useMessageList = function useMessageList() {
6920
+ var useMessageList = function useMessageList(_ref) {
6921
+ var student = _ref.student;
6534
6922
  var _useState = React.useState([]),
6535
6923
  messages = _useState[0],
6536
6924
  setMessages = _useState[1];
@@ -6542,13 +6930,19 @@ var useMessageList = function useMessageList() {
6542
6930
  setLoading = _useState3[1];
6543
6931
  var _useTranslation = reactI18next.useTranslation(),
6544
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;
6545
6939
  var getMessageList = function getMessageList(conversationId) {
6546
6940
  try {
6547
- var _temp2 = function _temp2() {
6941
+ var _temp3 = function _temp3() {
6548
6942
  setLoading(false);
6549
6943
  };
6550
6944
  setLoading(true);
6551
- var _temp = _catch(function () {
6945
+ var _temp2 = _catch(function () {
6552
6946
  var filter = _extends({}, messageFilter);
6553
6947
  return Promise.resolve(getMessagesByConversation(conversationId, filter)).then(function (res) {
6554
6948
  return Promise.resolve(updateLastTimeReadConversation(conversationId)).then(function () {
@@ -6560,19 +6954,32 @@ var useMessageList = function useMessageList() {
6560
6954
  totalPages: res.data.totalPages
6561
6955
  });
6562
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 () {});
6563
6970
  });
6564
6971
  });
6565
6972
  }, function (error) {
6566
6973
  reactToastify.toast.error(getErrorMessage(t, error));
6567
6974
  });
6568
- return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
6975
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2));
6569
6976
  } catch (e) {
6570
6977
  return Promise.reject(e);
6571
6978
  }
6572
6979
  };
6573
6980
  var handleLoadMore = function handleLoadMore(conversationId) {
6574
6981
  try {
6575
- var _temp4 = function _temp4(_result) {
6982
+ var _temp5 = function _temp5(_result) {
6576
6983
  if (_exit) return _result;
6577
6984
  setLoading(false);
6578
6985
  return true;
@@ -6583,7 +6990,7 @@ var useMessageList = function useMessageList() {
6583
6990
  currentPage: ((messageFilter === null || messageFilter === void 0 ? void 0 : messageFilter.currentPage) || 1) + 1
6584
6991
  });
6585
6992
  setLoading(true);
6586
- var _temp3 = _catch(function () {
6993
+ var _temp4 = _catch(function () {
6587
6994
  return Promise.resolve(getMessagesByConversation(conversationId, filter)).then(function (res) {
6588
6995
  return Promise.resolve(updateLastTimeReadConversation(conversationId)).then(function () {
6589
6996
  if (res.data.items.length) {
@@ -6607,7 +7014,7 @@ var useMessageList = function useMessageList() {
6607
7014
  reactToastify.toast.error(getErrorMessage(t, error));
6608
7015
  _exit = true;
6609
7016
  });
6610
- return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
7017
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
6611
7018
  } catch (e) {
6612
7019
  return Promise.reject(e);
6613
7020
  }
@@ -6618,19 +7025,19 @@ var useMessageList = function useMessageList() {
6618
7025
  };
6619
7026
  var handleDeleteMessage = function handleDeleteMessage(conversationId, id, callback) {
6620
7027
  try {
6621
- var _temp6 = function _temp6(_result2) {
7028
+ var _temp7 = function _temp7(_result2) {
6622
7029
  if (_exit2) return _result2;
6623
7030
  callback();
6624
7031
  };
6625
7032
  var _exit2 = false;
6626
7033
  if (isLoading) return Promise.resolve();
6627
- var _temp5 = _catch(function () {
7034
+ var _temp6 = _catch(function () {
6628
7035
  return Promise.resolve(deleteMessage(conversationId, id)).then(function () {});
6629
7036
  }, function (error) {
6630
7037
  reactToastify.toast.error(getErrorMessage(t, error));
6631
7038
  _exit2 = true;
6632
7039
  });
6633
- return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
7040
+ return Promise.resolve(_temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6));
6634
7041
  } catch (e) {
6635
7042
  return Promise.reject(e);
6636
7043
  }
@@ -6654,19 +7061,19 @@ var useMessageList = function useMessageList() {
6654
7061
  };
6655
7062
  var handleUpdateMessage = function handleUpdateMessage(conversationId, id, message, callback) {
6656
7063
  try {
6657
- var _temp8 = function _temp8(_result3) {
7064
+ var _temp9 = function _temp9(_result3) {
6658
7065
  if (_exit3) return _result3;
6659
7066
  setLoading(false);
6660
7067
  callback();
6661
7068
  };
6662
7069
  var _exit3 = false;
6663
- var _temp7 = _catch(function () {
7070
+ var _temp8 = _catch(function () {
6664
7071
  return Promise.resolve(updateMessage(conversationId, id, message)).then(function () {});
6665
7072
  }, function (error) {
6666
7073
  reactToastify.toast.error(getErrorMessage(t, error));
6667
7074
  _exit3 = true;
6668
7075
  });
6669
- return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(_temp8) : _temp8(_temp7));
7076
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(_temp9) : _temp9(_temp8));
6670
7077
  } catch (e) {
6671
7078
  return Promise.reject(e);
6672
7079
  }
@@ -6721,7 +7128,9 @@ var useChatContainer = function useChatContainer(props) {
6721
7128
  var _useState4 = React.useState(true),
6722
7129
  isScrollToEnd = _useState4[0],
6723
7130
  setScrollToEnd = _useState4[1];
6724
- var _useMessageList = useMessageList(),
7131
+ var _useMessageList = useMessageList({
7132
+ student: student
7133
+ }),
6725
7134
  isLoadingMessages = _useMessageList.isLoading,
6726
7135
  messages = _useMessageList.messages,
6727
7136
  messageFilter = _useMessageList.messageFilter,
@@ -7004,8 +7413,10 @@ var usePusherConversation = function usePusherConversation(onNewMessageConversat
7004
7413
  return {};
7005
7414
  };
7006
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);
7007
7418
  var InputText = function InputText(props) {
7008
- return React__default.createElement(material.TextField, Object.assign({
7419
+ return React__default.createElement(BorderedTextField, Object.assign({
7009
7420
  sx: {
7010
7421
  "& input": {
7011
7422
  py: "7.5px",
@@ -7797,12 +8208,22 @@ var OrderType;
7797
8208
  OrderType["DESC"] = "DESC";
7798
8209
  })(OrderType || (OrderType = {}));
7799
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
+
7800
8220
 
7801
8221
 
7802
8222
  var index = {
7803
- __proto__: null,
7804
- get OrderType () { return OrderType; },
7805
- 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; }
7806
8227
  };
7807
8228
 
7808
8229
  var TextbookSortBy;
@@ -8046,6 +8467,8 @@ var useExam = function useExam(props) {
8046
8467
  };
8047
8468
  };
8048
8469
 
8470
+ var PAGE_TITLE_DETAIL = "textbook_detail";
8471
+ var PAGE_TITLE_CREATE = "create_textbook";
8049
8472
  var useTextbookDetail = function useTextbookDetail(props) {
8050
8473
  var role = props.role,
8051
8474
  isReadonlyParam = props.isReadonlyParam,
@@ -8747,7 +9170,7 @@ var useTextbookDetail = function useTextbookDetail(props) {
8747
9170
  handleChangeExamRequest(exam);
8748
9171
  };
8749
9172
  React.useEffect(function () {
8750
- document.title = t("textbooks") + " | " + t(id ? "textbook_detail" : "create_textbook");
9173
+ document.title = t("study_peak") + " | " + t(id ? PAGE_TITLE_DETAIL : PAGE_TITLE_CREATE);
8751
9174
  }, [id, t]);
8752
9175
  React.useEffect(function () {
8753
9176
  setReadonly(textbook.isCreatedByAdmin || !!isReadonlyParam);
@@ -9805,6 +10228,22 @@ var TextbookViewDetail = function TextbookViewDetail(props) {
9805
10228
  }));
9806
10229
  };
9807
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
+
9808
10247
  var useAutoAcademyDomain = function useAutoAcademyDomain(logout, history, superUrls, homeUrl, homeAcademyUrl, isAuthPage) {
9809
10248
  if (isAuthPage === void 0) {
9810
10249
  isAuthPage = true;
@@ -9823,9 +10262,7 @@ var useAutoAcademyDomain = function useAutoAcademyDomain(logout, history, superU
9823
10262
  var paramAcademyDomain = searchParams.get("domain");
9824
10263
  var domain = getAcademyDomain();
9825
10264
  if (!!email !== isAuthPage) return;
9826
- var isSuperUrl = superUrls.some(function (i) {
9827
- return pathname.startsWith(i);
9828
- });
10265
+ var isSuperUrl = checkSuperUrl(superUrls, pathname);
9829
10266
  if (!academyDomain) {
9830
10267
  if (!isSuperUrl) {
9831
10268
  !paramAcademyDomain && domain && searchParams.set("domain", domain);
@@ -9866,7 +10303,7 @@ var useAutoAcademyDomain = function useAutoAcademyDomain(logout, history, superU
9866
10303
  };
9867
10304
  React.useEffect(function () {
9868
10305
  changeAcademySearchParams();
9869
- }, [window.location.pathname, window.location.search, isAuthPage, email, academyDomain]);
10306
+ }, [pathname, window.location.search, isAuthPage, email, academyDomain]);
9870
10307
  };
9871
10308
 
9872
10309
  var DEFAULT_PAGING_RESPONSE = {
@@ -9984,12 +10421,13 @@ var useList = function useList(fetchData, defaultQuery) {
9984
10421
 
9985
10422
 
9986
10423
  var index$1 = {
9987
- __proto__: null,
9988
- useLogin: useLogin,
9989
- useAutoAcademyDomain: useAutoAcademyDomain,
9990
- useList: useList
10424
+ __proto__: null,
10425
+ useLogin: useLogin,
10426
+ useAutoAcademyDomain: useAutoAcademyDomain,
10427
+ useList: useList
9991
10428
  };
9992
10429
 
10430
+ var PAGE_TITLE$1 = "textbooks";
9993
10431
  var useTextbookList = function useTextbookList(props) {
9994
10432
  var role = props.role,
9995
10433
  navigate = props.navigate;
@@ -10053,6 +10491,9 @@ var useTextbookList = function useTextbookList(props) {
10053
10491
  return Promise.reject(e);
10054
10492
  }
10055
10493
  };
10494
+ React.useEffect(function () {
10495
+ document.title = t("study_peak") + " | " + t(PAGE_TITLE$1);
10496
+ }, [t]);
10056
10497
  return {
10057
10498
  filter: filter,
10058
10499
  textSearchRef: textSearchRef,
@@ -10276,9 +10717,9 @@ var TextbookList = function TextbookList(props) {
10276
10717
 
10277
10718
 
10278
10719
  var index$2 = {
10279
- __proto__: null,
10280
- TextbookList: TextbookList,
10281
- TextbookDetail: TextbookViewDetail
10720
+ __proto__: null,
10721
+ TextbookList: TextbookList,
10722
+ TextbookDetail: TextbookViewDetail
10282
10723
  };
10283
10724
 
10284
10725
  var _excluded$5 = ["defaultValue", "options", "isDisabled", "scrollBottom", "value", "isMulti"];
@@ -11186,6 +11627,28 @@ var defaultSeries = function defaultSeries(t) {
11186
11627
  }];
11187
11628
  };
11188
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
+
11189
11652
  var useExamResult = function useExamResult(searchParam, history, examSessionId, studentId, code, handleChangeTab, selectedTab) {
11190
11653
  var _allSeries$dataChartI;
11191
11654
  if (examSessionId === void 0) {
@@ -11210,35 +11673,39 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11210
11673
  var _state$common2;
11211
11674
  return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.language;
11212
11675
  });
11213
- var _useState = React.useState(),
11214
- resultData = _useState[0],
11215
- setResultData = _useState[1];
11676
+ var _useState = React.useState(false),
11677
+ isLoading = _useState[0],
11678
+ setIsLoading = _useState[1];
11216
11679
  var _useState2 = React.useState(),
11217
- effectSize = _useState2[0],
11218
- setEffectSize = _useState2[1];
11219
- var _useState3 = React.useState([]),
11220
- longTimeSpend = _useState3[0],
11221
- setLongTimeSpend = _useState3[1];
11680
+ resultData = _useState2[0],
11681
+ setResultData = _useState2[1];
11682
+ var _useState3 = React.useState(),
11683
+ effectSize = _useState3[0],
11684
+ setEffectSize = _useState3[1];
11222
11685
  var _useState4 = React.useState([]),
11223
- timelyOrderQuestions = _useState4[0],
11224
- setTimelyOrderQuestions = _useState4[1];
11686
+ longTimeSpend = _useState4[0],
11687
+ setLongTimeSpend = _useState4[1];
11225
11688
  var _useState5 = React.useState([]),
11226
- categoryResponses = _useState5[0],
11227
- setCategoryResponses = _useState5[1];
11228
- var _useState6 = React.useState(0),
11229
- dataChartIndex = _useState6[0],
11230
- setDataChartIndex = _useState6[1];
11231
- var _useState7 = React.useState(""),
11232
- openProblem = _useState7[0],
11233
- 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];
11234
11700
  var _useTranslation = reactI18next.useTranslation(),
11235
11701
  t = _useTranslation.t;
11236
11702
  var getStudentData = function getStudentData(examCode) {
11237
11703
  try {
11238
11704
  var _temp2 = function _temp2() {
11239
- dispatch(setLoading(false));
11705
+ setIsLoading(false);
11240
11706
  };
11241
11707
  if (!examCode) return Promise.resolve();
11708
+ setIsLoading(true);
11242
11709
  var _temp = _catch(function () {
11243
11710
  return Promise.resolve(Promise.all([getResults(examCode), getResultsLongTimeSpend(examCode), getResultsEffectSize(examCode), getResultsTimeOrderQuestion(examCode), getResultsCategories(examCode)])).then(function (result) {
11244
11711
  var _result$0$data, _result$1$data, _result$2$data, _result$3$data, _result$4$data;
@@ -11260,14 +11727,17 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11260
11727
  };
11261
11728
  var getStudentDataByTeacher = function getStudentDataByTeacher(examCode, examSessionId, studentId) {
11262
11729
  try {
11263
- var _temp4 = function _temp4() {
11264
- dispatch(setLoading(false));
11730
+ var _temp5 = function _temp5() {
11731
+ setIsLoading(false);
11265
11732
  };
11266
11733
  if (!examCode || !examSessionId || !studentId) return Promise.resolve();
11267
- dispatch(setLoading(true));
11268
- var _temp3 = _catch(function () {
11734
+ setIsLoading(true);
11735
+ var _temp4 = _catch(function () {
11269
11736
  return Promise.resolve(Promise.all([getResultsTeacher(examSessionId, studentId), getResultsLongTimeSpendTeacher(examSessionId, studentId), getResultsEffectSizeTeacher(examSessionId, studentId), getResultsTimeOrderQuestionTeacher(examSessionId, studentId), getResultsCategoriesTeacher(examSessionId, studentId)])).then(function (result) {
11270
11737
  var _result$0$data2, _result$1$data2, _result$2$data2, _result$3$data2, _result$4$data2;
11738
+ function _temp3(_createRecentUserActi) {
11739
+ _createRecentUserActi;
11740
+ }
11271
11741
  handleChangeTab(0);
11272
11742
  setDataChartIndex(0);
11273
11743
  setResultData((_result$0$data2 = result[0].data) === null || _result$0$data2 === void 0 ? void 0 : _result$0$data2.data);
@@ -11275,11 +11745,22 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11275
11745
  setEffectSize((_result$2$data2 = result[2].data) === null || _result$2$data2 === void 0 ? void 0 : _result$2$data2.data);
11276
11746
  setTimelyOrderQuestions((_result$3$data2 = result[3].data) === null || _result$3$data2 === void 0 ? void 0 : _result$3$data2.data);
11277
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);
11278
11759
  });
11279
11760
  }, function (error) {
11280
11761
  reactToastify.toast.error(getErrorMessage(t, error));
11281
11762
  });
11282
- return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
11763
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
11283
11764
  } catch (e) {
11284
11765
  return Promise.reject(e);
11285
11766
  }
@@ -11455,13 +11936,13 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11455
11936
  var series = (_allSeries$dataChartI = allSeries[dataChartIndex]) != null ? _allSeries$dataChartI : defaultSeries(t);
11456
11937
  var handleExportPdf = function handleExportPdf() {
11457
11938
  try {
11458
- var _temp22 = function _temp22(_result) {
11939
+ var _temp24 = function _temp24(_result) {
11459
11940
  if (_exit) return _result;
11460
11941
  dispatch(setLoading(false));
11461
11942
  };
11462
11943
  var _exit = false;
11463
11944
  dispatch(setLoading(true));
11464
- var _temp21 = _catch(function () {
11945
+ var _temp23 = _catch(function () {
11465
11946
  var canvas = document.querySelector("#canvas");
11466
11947
  var headerCanvas = document.querySelector("#header-canvas");
11467
11948
  if (!canvas || !headerCanvas) {
@@ -11483,24 +11964,38 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11483
11964
  var imgWidth = WIDTH_PAPER;
11484
11965
  var chartWidth = WIDTH_PAPER - 20;
11485
11966
  return Promise.resolve(html2canvas(headerCanvas)).then(function (header) {
11486
- function _temp20() {
11967
+ function _temp22() {
11968
+ function _temp20(_createRecentUserActi2) {
11969
+ _createRecentUserActi2;
11970
+ }
11487
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);
11488
11983
  }
11489
11984
  var imgHeaderHeight = header.height * imgWidth / header.width;
11490
11985
  var imgHeaderData = header.toDataURL('image/png');
11491
11986
  doc.addImage(imgHeaderData, 'PNG', 0, 0, imgWidth, imgHeaderHeight);
11492
11987
  line += imgHeaderHeight;
11493
11988
  if (line > HEIGHT_PAPER) breakPage();
11494
- var _temp19 = function () {
11989
+ var _temp21 = function () {
11495
11990
  if (canvas && canvas.childElementCount > 0) {
11496
11991
  var _index = 0;
11497
- var _temp18 = _for(function () {
11992
+ var _temp19 = _for(function () {
11498
11993
  return _index < canvas.childElementCount;
11499
11994
  }, function () {
11500
11995
  return _index++;
11501
11996
  }, function () {
11502
- function _temp17() {
11503
- function _temp15() {
11997
+ function _temp18() {
11998
+ function _temp16() {
11504
11999
  line += 20;
11505
12000
  }
11506
12001
  var printChartTitle = function printChartTitle() {
@@ -11515,11 +12010,11 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11515
12010
  return Promise.reject(e);
11516
12011
  }
11517
12012
  };
11518
- var _temp14 = function () {
12013
+ var _temp15 = function () {
11519
12014
  if (printContainerEls.length) {
11520
- var _temp13 = _forTo(printContainerEls, function (i) {
11521
- function _temp12() {
11522
- function _temp10() {
12015
+ var _temp14 = _forTo(printContainerEls, function (i) {
12016
+ function _temp13() {
12017
+ function _temp11() {
11523
12018
  var printTitle = function printTitle() {
11524
12019
  try {
11525
12020
  if (!printTitleHeight || !printTitleData) return Promise.resolve();
@@ -11548,10 +12043,10 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11548
12043
  var printContents = printContainerEl.querySelectorAll("." + PrintContentClassName);
11549
12044
  if (!printContents.length) return;
11550
12045
  printTitle();
11551
- var _temp8 = _forTo(printContents, function (j) {
12046
+ var _temp9 = _forTo(printContents, function (j) {
11552
12047
  var rowItem = printContents[j];
11553
12048
  return Promise.resolve(html2canvas(rowItem)).then(function (rowItemCanvas) {
11554
- function _temp7() {
12049
+ function _temp8() {
11555
12050
  doc.addImage(data, 'PNG', 10, line, chartWidth, height);
11556
12051
  line += height;
11557
12052
  }
@@ -11559,25 +12054,25 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11559
12054
  var data = rowItemCanvas.toDataURL('image/png');
11560
12055
  if (i === 0 && j === 0 && line + height + (printHeaderHeight || 0) + ((chartTitleHeight || 0) + 10) + 20 > HEIGHT_PAPER) breakPage();
11561
12056
  i === 0 && j === 0 && printChartTitle();
11562
- var _temp6 = function () {
12057
+ var _temp7 = function () {
11563
12058
  if (line + height + 20 > HEIGHT_PAPER) {
11564
12059
  breakPage();
11565
12060
  return Promise.resolve(printHeader()).then(function () {});
11566
12061
  } else {
11567
- var _temp23 = function () {
12062
+ var _temp25 = function () {
11568
12063
  if (j === 0) {
11569
12064
  return Promise.resolve(printHeader(10)).then(function () {});
11570
12065
  }
11571
12066
  }();
11572
- if (_temp23 && _temp23.then) return _temp23.then(function () {});
12067
+ if (_temp25 && _temp25.then) return _temp25.then(function () {});
11573
12068
  }
11574
12069
  }();
11575
- return _temp6 && _temp6.then ? _temp6.then(_temp7) : _temp7(_temp6);
12070
+ return _temp7 && _temp7.then ? _temp7.then(_temp8) : _temp8(_temp7);
11576
12071
  });
11577
12072
  });
11578
- if (_temp8 && _temp8.then) return _temp8.then(function () {});
12073
+ if (_temp9 && _temp9.then) return _temp9.then(function () {});
11579
12074
  }
11580
- var _temp9 = function () {
12075
+ var _temp10 = function () {
11581
12076
  if (printHeaderEl) {
11582
12077
  return Promise.resolve(html2canvas(printHeaderEl)).then(function (_html2canvas3) {
11583
12078
  printHeaderCanvas = _html2canvas3;
@@ -11586,7 +12081,7 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11586
12081
  });
11587
12082
  }
11588
12083
  }();
11589
- return _temp9 && _temp9.then ? _temp9.then(_temp10) : _temp10(_temp9);
12084
+ return _temp10 && _temp10.then ? _temp10.then(_temp11) : _temp11(_temp10);
11590
12085
  }
11591
12086
  var printContainerEl = printContainerEls[i];
11592
12087
  var printTitleEl = printContainerEl.querySelector("." + PrintTitleClassName);
@@ -11597,7 +12092,7 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11597
12092
  var printHeaderCanvas = null;
11598
12093
  var printHeaderHeight = null;
11599
12094
  var printHeaderData = "";
11600
- var _temp11 = function () {
12095
+ var _temp12 = function () {
11601
12096
  if (printTitleEl) {
11602
12097
  return Promise.resolve(html2canvas(printTitleEl)).then(function (_html2canvas2) {
11603
12098
  printTitleCanvas = _html2canvas2;
@@ -11606,9 +12101,9 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11606
12101
  });
11607
12102
  }
11608
12103
  }();
11609
- return _temp11 && _temp11.then ? _temp11.then(_temp12) : _temp12(_temp11);
12104
+ return _temp12 && _temp12.then ? _temp12.then(_temp13) : _temp13(_temp12);
11610
12105
  });
11611
- if (_temp13 && _temp13.then) return _temp13.then(function () {});
12106
+ if (_temp14 && _temp14.then) return _temp14.then(function () {});
11612
12107
  } else {
11613
12108
  return Promise.resolve(html2canvas(chart)).then(function (chartCanvas) {
11614
12109
  var imgBodyHeight = chartCanvas.height * chartWidth / chartCanvas.width;
@@ -11621,7 +12116,7 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11621
12116
  });
11622
12117
  }
11623
12118
  }();
11624
- return _temp14 && _temp14.then ? _temp14.then(_temp15) : _temp15(_temp14);
12119
+ return _temp15 && _temp15.then ? _temp15.then(_temp16) : _temp16(_temp15);
11625
12120
  }
11626
12121
  var chart = canvas.children.item(_index);
11627
12122
  if (chart.getAttribute("id") === "header-canvas") return;
@@ -11630,7 +12125,7 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11630
12125
  var printChartTitleCanvas = null;
11631
12126
  var chartTitleHeight = null;
11632
12127
  var chartTitleData = "";
11633
- var _temp16 = function () {
12128
+ var _temp17 = function () {
11634
12129
  if (chartTitle && printContainerEls.length) {
11635
12130
  return Promise.resolve(html2canvas(chartTitle)).then(function (_html2canvas) {
11636
12131
  printChartTitleCanvas = _html2canvas;
@@ -11639,12 +12134,12 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11639
12134
  });
11640
12135
  }
11641
12136
  }();
11642
- return _temp16 && _temp16.then ? _temp16.then(_temp17) : _temp17(_temp16);
12137
+ return _temp17 && _temp17.then ? _temp17.then(_temp18) : _temp18(_temp17);
11643
12138
  });
11644
- if (_temp18 && _temp18.then) return _temp18.then(function () {});
12139
+ if (_temp19 && _temp19.then) return _temp19.then(function () {});
11645
12140
  }
11646
12141
  }();
11647
- return _temp19 && _temp19.then ? _temp19.then(_temp20) : _temp20(_temp19);
12142
+ return _temp21 && _temp21.then ? _temp21.then(_temp22) : _temp22(_temp21);
11648
12143
  });
11649
12144
  }, function (error) {
11650
12145
  console.log({
@@ -11652,7 +12147,7 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11652
12147
  });
11653
12148
  reactToastify.toast.error(getErrorMessage(t, error));
11654
12149
  });
11655
- return Promise.resolve(_temp21 && _temp21.then ? _temp21.then(_temp22) : _temp22(_temp21));
12150
+ return Promise.resolve(_temp23 && _temp23.then ? _temp23.then(_temp24) : _temp24(_temp23));
11656
12151
  } catch (e) {
11657
12152
  return Promise.reject(e);
11658
12153
  }
@@ -11664,6 +12159,7 @@ var useExamResult = function useExamResult(searchParam, history, examSessionId,
11664
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");
11665
12160
  }, [resultData === null || resultData === void 0 ? void 0 : resultData.startTime, resultData === null || resultData === void 0 ? void 0 : resultData.finishTime]);
11666
12161
  return {
12162
+ isLoading: isLoading,
11667
12163
  examTime: examTime,
11668
12164
  series: series,
11669
12165
  chartOptions: chartOptions,
@@ -14415,6 +14911,7 @@ var ExamResultV2 = function ExamResultV2(_ref) {
14415
14911
  selected = _useTab.selected,
14416
14912
  handleChangeTab = _useTab.handleChangeTab;
14417
14913
  var _useExamResult = useExamResult(searchParams, history, examSessionId, studentId, code, handleChangeTab, selected),
14914
+ isLoading = _useExamResult.isLoading,
14418
14915
  examTime = _useExamResult.examTime,
14419
14916
  series = _useExamResult.series,
14420
14917
  allSeries = _useExamResult.allSeries,
@@ -14439,7 +14936,9 @@ var ExamResultV2 = function ExamResultV2(_ref) {
14439
14936
  openCreateQuestionDialog = _useCreateQuestionDia.openCreateQuestionDialog,
14440
14937
  toggleCreateQuestion = _useCreateQuestionDia.toggleCreateQuestion;
14441
14938
  var isTabletUp = material.useMediaQuery('(min-width:900px)');
14442
- 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", {
14443
14942
  style: {
14444
14943
  width: "100%"
14445
14944
  }
@@ -14873,10 +15372,22 @@ var ExamResultV2 = function ExamResultV2(_ref) {
14873
15372
  })) : React__default.createElement(React.Fragment, null));
14874
15373
  };
14875
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
+
14876
15385
 
14877
15386
 
14878
15387
  var index$3 = {
14879
- __proto__: null
15388
+ __proto__: null,
15389
+ get OrderBy () { return OrderBy$1; },
15390
+ get RecentUserActionSortBy () { return RecentUserActionSortBy; }
14880
15391
  };
14881
15392
 
14882
15393
  var getLocalDayOfWeek = function getLocalDayOfWeek(utcDateTime, dayOfWeek) {
@@ -14912,12 +15423,12 @@ var getRemainTime = function getRemainTime(startTime, duration) {
14912
15423
  };
14913
15424
 
14914
15425
  var times = {
14915
- __proto__: null,
14916
- getLocalDayOfWeek: getLocalDayOfWeek,
14917
- getUtcDayOfWeek: getUtcDayOfWeek,
14918
- timeSpanToLocalMoment: timeSpanToLocalMoment,
14919
- convertHHMMSStoSeconds: convertHHMMSStoSeconds,
14920
- getRemainTime: getRemainTime
15426
+ __proto__: null,
15427
+ getLocalDayOfWeek: getLocalDayOfWeek,
15428
+ getUtcDayOfWeek: getUtcDayOfWeek,
15429
+ timeSpanToLocalMoment: timeSpanToLocalMoment,
15430
+ convertHHMMSStoSeconds: convertHHMMSStoSeconds,
15431
+ getRemainTime: getRemainTime
14921
15432
  };
14922
15433
 
14923
15434
  var SIGN_IN_SUPER_ADMIN_URL = SUPER_ADMIN_BASE_URL + "/api/auth/login";
@@ -14943,6 +15454,7 @@ var signInSuperAdminApi = function signInSuperAdminApi(_ref2) {
14943
15454
  });
14944
15455
  };
14945
15456
 
15457
+ var PAGE_TITLE$2 = "sign_in";
14946
15458
  var useLogin$2 = function useLogin(_ref) {
14947
15459
  var history = _ref.history,
14948
15460
  _ref$role = _ref.role,
@@ -15033,8 +15545,13 @@ var useLogin$2 = function useLogin(_ref) {
15033
15545
  };
15034
15546
  React.useEffect(function () {
15035
15547
  var token = getAccessToken();
15036
- if (token) window.location.href = "/";
15037
- }, []);
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]);
15038
15555
  return {
15039
15556
  handleSubmit: handleSubmit,
15040
15557
  handleClearAcademyDomain: handleClearAcademyDomain,
@@ -15535,15 +16052,14 @@ var Header = function Header(_ref) {
15535
16052
  var path = _ref2.path,
15536
16053
  icon = _ref2.icon,
15537
16054
  label = _ref2.label,
15538
- isMain = _ref2.isMain,
15539
16055
  activePaths = _ref2.activePaths;
15540
16056
  return React__default.createElement(reactRouterDom.Link, {
15541
16057
  key: path,
15542
16058
  "aria-current": "page",
15543
- to: !academyDomain && !isMain ? "#" : path,
16059
+ to: !academyDomain ? "#" : path,
15544
16060
  className: "text-decoration-none " + ((activePaths !== null && activePaths !== void 0 && activePaths.length ? activePaths.some(function (a) {
15545
- return pathname.startsWith(a);
15546
- }) : 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"] : "")
15547
16063
  }, React__default.createElement(material.Stack, {
15548
16064
  sx: {
15549
16065
  justifyContent: "center",
@@ -15572,7 +16088,7 @@ var Header = function Header(_ref) {
15572
16088
  alignItems: "center"
15573
16089
  }, React__default.createElement(reactRouterDom.Link, {
15574
16090
  "aria-current": "page",
15575
- to: homeRoute.path,
16091
+ to: academyDomain ? homeRoute.path : academyListRoute.path,
15576
16092
  className: "border-none"
15577
16093
  }, React__default.createElement(material.Stack, {
15578
16094
  justifyContent: "center",
@@ -15590,53 +16106,28 @@ var Header = function Header(_ref) {
15590
16106
  }))));
15591
16107
  };
15592
16108
 
15593
- var ACADEMY_URL$1 = BASE_URL + "/api/academy";
15594
- var getAcademyList$1 = function getAcademyList() {
15595
- return api.get("" + ACADEMY_URL$1);
15596
- };
15597
- var switchAcademy$1 = function switchAcademy(academyId) {
15598
- return api.post(ACADEMY_URL$1 + "/switch-academy?academyId=" + academyId);
15599
- };
15600
-
15601
16109
  var useAcademyList = function useAcademyList(history, role, homeAcademyUrl, homeUrl, registerUrl) {
15602
16110
  var dispatch = reactRedux.useDispatch();
15603
16111
  var _useLogin = useLogin(history, homeAcademyUrl, homeUrl, registerUrl),
15604
16112
  handleLoginAccessToken = _useLogin.handleLoginAccessToken;
15605
- var _useState = React.useState([]),
15606
- academyList = _useState[0],
15607
- 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
+ });
15608
16117
  var email = reactRedux.useSelector(function (state) {
15609
16118
  var _state$common, _state$common$user;
15610
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;
15611
16120
  });
15612
16121
  var _useTranslation = reactI18next.useTranslation(),
15613
16122
  t = _useTranslation.t;
15614
- var getAcademies = function getAcademies() {
16123
+ var handleSwitchAcademy = function handleSwitchAcademy(id, domain) {
15615
16124
  try {
15616
16125
  var _temp2 = function _temp2() {
15617
16126
  dispatch(setLoading(false));
15618
16127
  };
15619
16128
  dispatch(setLoading(true));
15620
16129
  var _temp = _catch(function () {
15621
- return Promise.resolve(getAcademyList$1()).then(function (res) {
15622
- setAcademyList(res.data.items || []);
15623
- });
15624
- }, function (error) {
15625
- reactToastify.toast.error(getErrorMessage(t, error));
15626
- });
15627
- return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
15628
- } catch (e) {
15629
- return Promise.reject(e);
15630
- }
15631
- };
15632
- var handleSwitchAcademy = function handleSwitchAcademy(id, domain) {
15633
- try {
15634
- var _temp4 = function _temp4() {
15635
- dispatch(setLoading(false));
15636
- };
15637
- dispatch(setLoading(true));
15638
- var _temp3 = _catch(function () {
15639
- return Promise.resolve(switchAcademy$1(id)).then(function (res) {
16130
+ return Promise.resolve(switchSuperAdminAcademy(id, role)).then(function (res) {
15640
16131
  var data = res.data;
15641
16132
  var requestBody = {
15642
16133
  accessToken: data.accessToken,
@@ -15650,14 +16141,11 @@ var useAcademyList = function useAcademyList(history, role, homeAcademyUrl, home
15650
16141
  }, function (error) {
15651
16142
  reactToastify.toast.error(getErrorMessage(t, error));
15652
16143
  });
15653
- return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
16144
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
15654
16145
  } catch (e) {
15655
16146
  return Promise.reject(e);
15656
16147
  }
15657
16148
  };
15658
- React.useEffect(function () {
15659
- getAcademies();
15660
- }, []);
15661
16149
  return {
15662
16150
  academyList: academyList,
15663
16151
  handleSwitchAcademy: handleSwitchAcademy
@@ -15697,6 +16185,222 @@ var AcademyCard = function AcademyCard(_ref) {
15697
16185
  }, t("switch"))));
15698
16186
  };
15699
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
+ _props$as = props.as,
16384
+ as = _props$as === void 0 ? "component" : _props$as,
16385
+ onClose = props.onClose;
16386
+ var _usePassCodeCheck = usePassCodeCheck(props),
16387
+ academy = _usePassCodeCheck.academy,
16388
+ isLoadingAcademy = _usePassCodeCheck.isLoadingAcademy,
16389
+ academyDomain = _usePassCodeCheck.academyDomain,
16390
+ email = _usePassCodeCheck.email,
16391
+ handleCheckPassCode = _usePassCodeCheck.handleCheckPassCode;
16392
+ if (role !== exports.Role.Student || domain && isLoadingAcademy === false && !academy) return as === "page" ? React__default.createElement(NotFound, null) : null;
16393
+ return React__default.createElement(React.Fragment, null, React__default.createElement(LoadingComponent, {
16394
+ isLoading: !!isLoadingAcademy
16395
+ }), !!email && !academyDomain && (!domain || !!academy) && React__default.createElement(PassCodeDialog, {
16396
+ open: open,
16397
+ academyDomain: domain,
16398
+ onClose: onClose,
16399
+ onSubmit: handleCheckPassCode
16400
+ }));
16401
+ };
16402
+
16403
+ var PAGE_TITLE$3 = "academy_list";
15700
16404
  var AcademyList = function AcademyList(_ref) {
15701
16405
  var theme = _ref.theme,
15702
16406
  history = _ref.history,
@@ -15706,10 +16410,19 @@ var AcademyList = function AcademyList(_ref) {
15706
16410
  registerUrl = _ref.registerUrl;
15707
16411
  var _useTranslation = reactI18next.useTranslation(),
15708
16412
  t = _useTranslation.t;
16413
+ var _useState = React.useState(false),
16414
+ isOpenPassCode = _useState[0],
16415
+ setOpenPassCode = _useState[1];
16416
+ var handleTogglePassCodeDialog = function handleTogglePassCodeDialog() {
16417
+ setOpenPassCode(!isOpenPassCode);
16418
+ };
15709
16419
  useAutoAcademyDomain(function () {}, history, [], "", window.location.pathname, true);
15710
16420
  var _useAcademyList = useAcademyList(history, role, homeAcademyUrl, homeUrl, registerUrl),
15711
16421
  academyList = _useAcademyList.academyList,
15712
16422
  handleSwitchAcademy = _useAcademyList.handleSwitchAcademy;
16423
+ React.useEffect(function () {
16424
+ document.title = t("study_peak") + " | " + t(PAGE_TITLE$3);
16425
+ }, [t]);
15713
16426
  return React__default.createElement("div", {
15714
16427
  className: "py-3 px-4"
15715
16428
  }, React__default.createElement(Grid, {
@@ -15718,10 +16431,18 @@ var AcademyList = function AcademyList(_ref) {
15718
16431
  }, React__default.createElement(Grid, {
15719
16432
  item: true,
15720
16433
  xs: 12
16434
+ }, React__default.createElement(material.Stack, {
16435
+ direction: "row",
16436
+ justifyContent: "space-between",
16437
+ alignItems: "center",
16438
+ spacing: 3
15721
16439
  }, React__default.createElement(Typography, {
15722
16440
  fontSize: 24,
15723
16441
  fontWeight: 600
15724
- }, t("academy_list"))), React__default.createElement(Grid, {
16442
+ }, t("academy_list")), role === exports.Role.Student && React__default.createElement(material.Button, {
16443
+ variant: "contained",
16444
+ onClick: handleTogglePassCodeDialog
16445
+ }, t("enter_academy_pass_code")))), React__default.createElement(Grid, {
15725
16446
  item: true,
15726
16447
  xs: 12
15727
16448
  }, React__default.createElement(Grid, {
@@ -15741,7 +16462,15 @@ var AcademyList = function AcademyList(_ref) {
15741
16462
  }), !academyList.length && React__default.createElement(Grid, {
15742
16463
  item: true,
15743
16464
  xs: 3
15744
- }, React__default.createElement("span", null, t("no_academy_available"), "."))))));
16465
+ }, React__default.createElement("span", null, t("no_academy_available"), "."))))), React__default.createElement(PassCodeCheck, {
16466
+ role: role,
16467
+ open: isOpenPassCode,
16468
+ onClose: handleTogglePassCodeDialog,
16469
+ homeAcademyUrl: homeAcademyUrl,
16470
+ homeUrl: homeUrl,
16471
+ registerUrl: registerUrl,
16472
+ history: history
16473
+ }));
15745
16474
  };
15746
16475
 
15747
16476
  var EXAM_SESSION_URL$1 = BASE_URL + "/api/examSession";
@@ -15921,28 +16650,28 @@ var useVirtualizeList = function useVirtualizeList(totalItems, rowHeight, offset
15921
16650
 
15922
16651
  exports.moment = moment;
15923
16652
  Object.defineProperty(exports, 'I18nextProvider', {
15924
- enumerable: true,
15925
- get: function () {
15926
- return reactI18next.I18nextProvider;
15927
- }
16653
+ enumerable: true,
16654
+ get: function () {
16655
+ return reactI18next.I18nextProvider;
16656
+ }
15928
16657
  });
15929
16658
  Object.defineProperty(exports, 'useTranslation', {
15930
- enumerable: true,
15931
- get: function () {
15932
- return reactI18next.useTranslation;
15933
- }
16659
+ enumerable: true,
16660
+ get: function () {
16661
+ return reactI18next.useTranslation;
16662
+ }
15934
16663
  });
15935
16664
  Object.defineProperty(exports, 'ToastContainer', {
15936
- enumerable: true,
15937
- get: function () {
15938
- return reactToastify.ToastContainer;
15939
- }
16665
+ enumerable: true,
16666
+ get: function () {
16667
+ return reactToastify.ToastContainer;
16668
+ }
15940
16669
  });
15941
16670
  Object.defineProperty(exports, 'toast', {
15942
- enumerable: true,
15943
- get: function () {
15944
- return reactToastify.toast;
15945
- }
16671
+ enumerable: true,
16672
+ get: function () {
16673
+ return reactToastify.toast;
16674
+ }
15946
16675
  });
15947
16676
  exports.ACADEMY_DOMAIN = ACADEMY_DOMAIN;
15948
16677
  exports.ACCESS_TOKEN = ACCESS_TOKEN;
@@ -15976,11 +16705,14 @@ exports.InputText = InputText;
15976
16705
  exports.LANGUAGES = LANGUAGES;
15977
16706
  exports.LayoutContext = LayoutContext;
15978
16707
  exports.Loading = Loading;
16708
+ exports.LoadingComponent = LoadingComponent;
15979
16709
  exports.Login = Login;
15980
16710
  exports.LoginWithPassword = SignIn;
15981
16711
  exports.NotFound = NotFound;
15982
16712
  exports.PUSHER_CONFIG = PUSHER_CONFIG;
16713
+ exports.PassCodeCheck = PassCodeCheck;
15983
16714
  exports.QuestionCountSelector = QuestionCountSelector;
16715
+ exports.RecentUserAction = RecentUserAction;
15984
16716
  exports.SUPER_ADMIN_BASE_URL = SUPER_ADMIN_BASE_URL;
15985
16717
  exports.ScoreSelector = ScoreSelector;
15986
16718
  exports.SubjectSelector = SubjectSelector;
@@ -15993,12 +16725,15 @@ exports.Types = index$3;
15993
16725
  exports.api = api;
15994
16726
  exports.apiUpload = apiUpload;
15995
16727
  exports.canAccessRoute = canAccess;
16728
+ exports.checkSuperUrl = checkSuperUrl;
16729
+ exports.createRecentUserActionListApi = createRecentUserActionListApi;
15996
16730
  exports.diffFromNow = diffFromNow;
15997
16731
  exports.formatTime = formatTime;
15998
16732
  exports.getAcademyDomain = getAcademyDomain;
15999
16733
  exports.getAccessToken = getAccessToken;
16000
16734
  exports.getErrorMessage = getErrorMessage;
16001
16735
  exports.getOrdinalSuffix = getOrdinalSuffix;
16736
+ exports.getRecentUserActionListApi = getRecentUserActionListApi;
16002
16737
  exports.i18n = i18n;
16003
16738
  exports.minutesToTimeSpan = minutesToTimeSpan;
16004
16739
  exports.setAlert = setAlert;