touchstudy-core 0.1.52 → 0.1.53

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.
package/dist/index.js CHANGED
@@ -44,6 +44,10 @@ var TextField = _interopDefault(require('@mui/material/TextField'));
44
44
  var Paper = _interopDefault(require('@mui/material/Paper'));
45
45
  var Grid = _interopDefault(require('@mui/material/Grid'));
46
46
  var reactRouterDom = require('react-router-dom');
47
+ var Card = _interopDefault(require('@mui/material/Card'));
48
+ var CardActions = _interopDefault(require('@mui/material/CardActions'));
49
+ var CardContent = _interopDefault(require('@mui/material/CardContent'));
50
+ var CardMedia = _interopDefault(require('@mui/material/CardMedia'));
47
51
 
48
52
  var setLoading = toolkit.createAction("common/setLoading");
49
53
  var setAlert = toolkit.createAction("common/setAlert");
@@ -483,14 +487,16 @@ var useGoogleSignOut = function useGoogleSignOut(props) {
483
487
  };
484
488
  };
485
489
 
490
+ var pushTo = function pushTo(history, data) {
491
+ if (history.push) history.push(data);else history(data);
492
+ };
493
+
486
494
  var ERROR_MESSAGE = "request_login_fail";
487
- var useLogin = function useLogin(onNavigate, homeAcademyUrl, homeUrl, registerUrl) {
495
+ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl) {
488
496
  var dispatch = reactRedux.useDispatch();
489
497
  var _useTranslation = reactI18next.useTranslation(),
490
498
  t = _useTranslation.t;
491
- var _useGoogleSignOut = useGoogleSignOut({
492
- onNavigate: onNavigate
493
- }),
499
+ var _useGoogleSignOut = useGoogleSignOut({}),
494
500
  handleSignOut = _useGoogleSignOut.handleSignOut;
495
501
  var searchParams = new URLSearchParams(window.location.search);
496
502
  var paramDomain = searchParams.get('domain');
@@ -586,9 +592,7 @@ var useLogin = function useLogin(onNavigate, homeAcademyUrl, homeUrl, registerUr
586
592
  !data.academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
587
593
  !!data.academyDomain && localStorage.setItem(ACADEMY_DOMAIN, data.academyDomain);
588
594
  dispatch(setUser(_extends({}, data)));
589
- if (redirectUrl) {
590
- onNavigate(redirectUrl);
591
- }
595
+ if (redirectUrl) pushTo(history, redirectUrl);
592
596
  };
593
597
  return {
594
598
  handleLoginGoogle: handleLoginGoogle,
@@ -821,6 +825,8 @@ var LANGUAGES = [{
821
825
  }];
822
826
 
823
827
  var useLanguage = function useLanguage() {
828
+ var searchParams = new URLSearchParams(window.location.search);
829
+ var langParam = searchParams.get("lang");
824
830
  var defaultLanguage = !!localStorage.getItem("language") ? localStorage.getItem("language") : navigator.language || LANGUAGES[DEFAULT_LANGUAGE_INDEX].code;
825
831
  var dispatch = reactRedux.useDispatch();
826
832
  var _useTranslation = reactI18next.useTranslation(),
@@ -844,12 +850,23 @@ var useLanguage = function useLanguage() {
844
850
  i18n.changeLanguage(language.code);
845
851
  moment.locale(language.momentLangCode);
846
852
  localStorage.setItem("language", language.code);
847
- setItemLanguage(language.code);
848
853
  dispatch(setLanguage(language.code));
854
+ searchParams.set("lang", language.code);
849
855
  };
856
+ var handleChangeLangParam = React.useCallback(function () {
857
+ if (!langParam) return;
858
+ var languageItem = LANGUAGES.find(function (i) {
859
+ return i.code === langParam.toLowerCase();
860
+ });
861
+ if (!languageItem) languageItem = LANGUAGES[DEFAULT_LANGUAGE_INDEX];
862
+ setItemLanguage(languageItem.code);
863
+ }, [searchParams.toString(), language]);
850
864
  React.useEffect(function () {
851
865
  changeLanguageApp(language);
852
866
  }, [language]);
867
+ React.useEffect(function () {
868
+ handleChangeLangParam();
869
+ }, [langParam]);
853
870
  var currentLanguage = React.useMemo(function () {
854
871
  var currentLang = LANGUAGES.find(function (i) {
855
872
  return i.code === language;
@@ -873,7 +890,7 @@ var schema = yup.object({
873
890
  });
874
891
  var BlockLogin = function BlockLogin(_ref) {
875
892
  var defaultInfo = _ref.defaultInfo,
876
- onNavigate = _ref.onNavigate,
893
+ history = _ref.history,
877
894
  _ref$role = _ref.role,
878
895
  role = _ref$role === void 0 ? exports.Role.Student : _ref$role,
879
896
  homeAcademyUrl = _ref.homeAcademyUrl,
@@ -883,7 +900,7 @@ var BlockLogin = function BlockLogin(_ref) {
883
900
  currentLanguage = _useLanguage.currentLanguage;
884
901
  var _useTranslation = reactI18next.useTranslation(),
885
902
  t = _useTranslation.t;
886
- var _useLogin = useLogin(onNavigate, homeAcademyUrl, homeUrl, registerUrl),
903
+ var _useLogin = useLogin(history, homeAcademyUrl, homeUrl, registerUrl),
887
904
  handleLoginGoogle = _useLogin.handleLoginGoogle;
888
905
  var onSuccessGoogle = function onSuccessGoogle(res) {
889
906
  try {
@@ -911,7 +928,7 @@ var BlockLogin = function BlockLogin(_ref) {
911
928
  };
912
929
  var onFailureGoogle = function onFailureGoogle(err) {
913
930
  console.log("error: login google", err);
914
- onNavigate("/login");
931
+ pushTo(history, "/login");
915
932
  };
916
933
  return React__default.createElement(material.Paper, {
917
934
  elevation: 3,
@@ -971,7 +988,7 @@ var defaultInfo = {
971
988
  captcha: "",
972
989
  rememberMe: false
973
990
  };
974
- var useLogin$1 = function useLogin(onNavigate) {
991
+ var useLogin$1 = function useLogin(history) {
975
992
  var _useState = React.useState(false),
976
993
  openLogin = _useState[0],
977
994
  setOpenLogin = _useState[1];
@@ -988,14 +1005,14 @@ var useLogin$1 = function useLogin(onNavigate) {
988
1005
  var start = function start() {
989
1006
  gapiScript.gapi.client.init({
990
1007
  clientId: GOOGLE_CLIENT_ID,
991
- scope: 'email'
1008
+ scope: "email"
992
1009
  });
993
1010
  };
994
- !!gapiScript.gapi && gapiScript.gapi.load('client:auth2', start);
1011
+ !!gapiScript.gapi && gapiScript.gapi.load("client:auth2", start);
995
1012
  }, [gapiScript.gapi]);
996
1013
  React.useEffect(function () {
997
1014
  var token = getAccessToken$1();
998
- if (!!token) onNavigate("/");
1015
+ if (!!token) pushTo(history, "/");
999
1016
  }, []);
1000
1017
  return {
1001
1018
  defaultInfo: defaultInfo,
@@ -1008,11 +1025,11 @@ var useLogin$1 = function useLogin(onNavigate) {
1008
1025
  };
1009
1026
  };
1010
1027
 
1011
- var _excluded = ["onNavigate"];
1028
+ var _excluded = ["history"];
1012
1029
  var Login = function Login(_ref) {
1013
- var onNavigate = _ref.onNavigate,
1030
+ var history = _ref.history,
1014
1031
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
1015
- var _useLogin = useLogin$1(onNavigate),
1032
+ var _useLogin = useLogin$1(history),
1016
1033
  defaultInfo = _useLogin.defaultInfo;
1017
1034
  return React__default.createElement("div", {
1018
1035
  className: styles["login"] + " font-family-lato"
@@ -1026,7 +1043,7 @@ var Login = function Login(_ref) {
1026
1043
  className: "d-flex justify-content-center h-100 align-items-center"
1027
1044
  }, React__default.createElement(BlockLogin, Object.assign({
1028
1045
  defaultInfo: defaultInfo,
1029
- onNavigate: onNavigate
1046
+ history: history
1030
1047
  }, rest)))));
1031
1048
  };
1032
1049
 
@@ -1351,11 +1368,8 @@ var LayoutContext = function LayoutContext(_ref) {
1351
1368
  var children = _ref.children,
1352
1369
  role = _ref.role,
1353
1370
  _ref$pusherRegisterUr = _ref.pusherRegisterUrls,
1354
- pusherRegisterUrls = _ref$pusherRegisterUr === void 0 ? [] : _ref$pusherRegisterUr,
1355
- onNavigate = _ref.onNavigate;
1356
- var _useGoogleSignOut = useGoogleSignOut({
1357
- onNavigate: onNavigate
1358
- }),
1371
+ pusherRegisterUrls = _ref$pusherRegisterUr === void 0 ? [] : _ref$pusherRegisterUr;
1372
+ var _useGoogleSignOut = useGoogleSignOut({}),
1359
1373
  handleSignOut = _useGoogleSignOut.handleSignOut;
1360
1374
  var _useTranslation = reactI18next.useTranslation(),
1361
1375
  t = _useTranslation.t;
@@ -3625,12 +3639,12 @@ var TheLanguageDropdown = function TheLanguageDropdown() {
3625
3639
  })));
3626
3640
  };
3627
3641
 
3628
- var useSwitchAcademy = function useSwitchAcademy(role, navigate, homeAcademyUrl, homeUrl) {
3642
+ var useSwitchAcademy = function useSwitchAcademy(role, history, homeAcademyUrl, homeUrl) {
3629
3643
  if (role === void 0) {
3630
3644
  role = exports.Role.Student;
3631
3645
  }
3632
3646
  var dispatch = reactRedux.useDispatch();
3633
- var _useLogin = useLogin(navigate, homeAcademyUrl, homeUrl),
3647
+ var _useLogin = useLogin(history, homeAcademyUrl, homeUrl),
3634
3648
  handleLoginAccessToken = _useLogin.handleLoginAccessToken;
3635
3649
  var _useState = React.useState(false),
3636
3650
  dropdownOpen = _useState[0],
@@ -3752,11 +3766,11 @@ var MenuItemCustom = material.styled(MenuItem)(function () {
3752
3766
  var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
3753
3767
  var _user$roles, _selectedAcademy$name, _selectedAcademy$name2;
3754
3768
  var role = _ref.role,
3755
- navigate = _ref.navigate,
3769
+ history = _ref.history,
3756
3770
  homeAcademyUrl = _ref.homeAcademyUrl,
3757
3771
  homeUrl = _ref.homeUrl,
3758
3772
  hideAcademyName = _ref.hideAcademyName;
3759
- var _useSwitchAcademy = useSwitchAcademy(role, navigate, homeAcademyUrl, homeUrl),
3773
+ var _useSwitchAcademy = useSwitchAcademy(role, history, homeAcademyUrl, homeUrl),
3760
3774
  academyList = _useSwitchAcademy.academyList,
3761
3775
  handleSwitchAcademy = _useSwitchAcademy.handleSwitchAcademy,
3762
3776
  selectedAcademy = _useSwitchAcademy.selectedAcademy;
@@ -8570,18 +8584,28 @@ var useAutoAcademyDomain = function useAutoAcademyDomain(logout, history, superU
8570
8584
  var _state$common;
8571
8585
  return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
8572
8586
  });
8587
+ var language = reactRedux.useSelector(function (state) {
8588
+ var _state$common2;
8589
+ return state === null || state === void 0 ? void 0 : (_state$common2 = state.common) === null || _state$common2 === void 0 ? void 0 : _state$common2.language;
8590
+ });
8573
8591
  var initialAcademySearchParam = function initialAcademySearchParam() {
8574
8592
  var paramAcademyDomain = searchParams.get("domain");
8593
+ var paramLang = searchParams.get("lang");
8575
8594
  var domain = getAcademyDomain();
8576
8595
  var pathname = window.location.pathname.toLowerCase();
8596
+ var isUpdateSearchParam = false;
8597
+ if ((!paramLang || paramLang.toLowerCase() !== language) && language) {
8598
+ searchParams.set("lang", language);
8599
+ isUpdateSearchParam = true;
8600
+ }
8577
8601
  if (!!user !== isAuthPage) return;
8578
8602
  var academyDomain = user === null || user === void 0 ? void 0 : user.academyDomain;
8579
8603
  if (!academyDomain) {
8580
8604
  if (!superUrls.some(function (i) {
8581
8605
  return pathname.startsWith(i);
8582
8606
  })) {
8583
- !paramAcademyDomain && domain && searchParams.append("domain", domain);
8584
- pushTo({
8607
+ !paramAcademyDomain && domain && searchParams.set("domain", domain);
8608
+ pushTo(history, {
8585
8609
  pathname: homeUrl,
8586
8610
  search: searchParams.toString()
8587
8611
  });
@@ -8589,16 +8613,17 @@ var useAutoAcademyDomain = function useAutoAcademyDomain(logout, history, superU
8589
8613
  }
8590
8614
  if (paramAcademyDomain) {
8591
8615
  searchParams["delete"]("domain");
8592
- pushTo(_extends({}, window.location, {
8616
+ pushTo(history, _extends({}, window.location, {
8593
8617
  search: searchParams.toString()
8594
8618
  }));
8619
+ return;
8595
8620
  }
8596
8621
  } else {
8597
8622
  if (superUrls.some(function (i) {
8598
8623
  return pathname.startsWith(i);
8599
8624
  })) {
8600
8625
  searchParams["delete"]("domain");
8601
- pushTo({
8626
+ pushTo(history, {
8602
8627
  pathname: homeAcademyUrl,
8603
8628
  search: searchParams.toString()
8604
8629
  });
@@ -8609,19 +8634,20 @@ var useAutoAcademyDomain = function useAutoAcademyDomain(logout, history, superU
8609
8634
  return;
8610
8635
  }
8611
8636
  if (!paramAcademyDomain) {
8612
- !paramAcademyDomain && searchParams.append("domain", academyDomain);
8613
- pushTo(_extends({}, window.location, {
8637
+ !paramAcademyDomain && searchParams.set("domain", academyDomain);
8638
+ pushTo(history, _extends({}, window.location, {
8614
8639
  search: searchParams.toString()
8615
8640
  }));
8641
+ return;
8616
8642
  }
8617
8643
  }
8618
- };
8619
- var pushTo = function pushTo(data) {
8620
- if (history.push) history.push(data);else history(data);
8644
+ if (isUpdateSearchParam) pushTo(history, _extends({}, window.location, {
8645
+ search: searchParams.toString()
8646
+ }));
8621
8647
  };
8622
8648
  React.useEffect(function () {
8623
8649
  initialAcademySearchParam();
8624
- }, [window.location.pathname, user === null || user === void 0 ? void 0 : user.academyDomain, window.location.search]);
8650
+ }, [window.location.pathname, window.location.search, user === null || user === void 0 ? void 0 : user.academyDomain, language]);
8625
8651
  };
8626
8652
 
8627
8653
  var DEFAULT_PAGING_RESPONSE = {
@@ -9927,7 +9953,7 @@ var defaultSeries = function defaultSeries(t) {
9927
9953
  }];
9928
9954
  };
9929
9955
 
9930
- var useExamResult = function useExamResult(searchParam, navigate, examSessionId, studentId, code, handleChangeTab, selectedTab) {
9956
+ var useExamResult = function useExamResult(searchParam, history, examSessionId, studentId, code, handleChangeTab, selectedTab) {
9931
9957
  var _allSeries$dataChartI;
9932
9958
  if (examSessionId === void 0) {
9933
9959
  examSessionId = 0;
@@ -10082,7 +10108,7 @@ var useExamResult = function useExamResult(searchParam, navigate, examSessionId,
10082
10108
  }
10083
10109
  };
10084
10110
  var handleExit = function handleExit() {
10085
- navigate("/student/my-story/live-main");
10111
+ pushTo(history, "/student/my-story/live-main");
10086
10112
  };
10087
10113
  var totalTime = React.useMemo(function () {
10088
10114
  var _resultData$questions;
@@ -12863,14 +12889,14 @@ var useTab = function useTab() {
12863
12889
 
12864
12890
  var ExamResultV2 = function ExamResultV2(_ref) {
12865
12891
  var searchParams = _ref.searchParams,
12866
- onNavigate = _ref.onNavigate,
12892
+ history = _ref.history,
12867
12893
  examSessionId = _ref.examSessionId,
12868
12894
  studentId = _ref.studentId,
12869
12895
  code = _ref.code;
12870
12896
  var _useTab = useTab(),
12871
12897
  selected = _useTab.selected,
12872
12898
  handleChangeTab = _useTab.handleChangeTab;
12873
- var _useExamResult = useExamResult(searchParams, onNavigate, examSessionId, studentId, code, handleChangeTab, selected),
12899
+ var _useExamResult = useExamResult(searchParams, history, examSessionId, studentId, code, handleChangeTab, selected),
12874
12900
  examTime = _useExamResult.examTime,
12875
12901
  series = _useExamResult.series,
12876
12902
  allSeries = _useExamResult.allSeries,
@@ -13378,7 +13404,7 @@ var signInSuperAdminApi = function signInSuperAdminApi(_ref2) {
13378
13404
  };
13379
13405
 
13380
13406
  var useLogin$2 = function useLogin(_ref) {
13381
- var onNavigate = _ref.onNavigate,
13407
+ var history = _ref.history,
13382
13408
  _ref$role = _ref.role,
13383
13409
  role = _ref$role === void 0 ? exports.Role.Student : _ref$role,
13384
13410
  homeAcademyUrl = _ref.homeAcademyUrl,
@@ -13398,7 +13424,7 @@ var useLogin$2 = function useLogin(_ref) {
13398
13424
  var academyDomain = paramDomain || getAcademyDomain();
13399
13425
  var handleClearAcademyDomain = function handleClearAcademyDomain() {
13400
13426
  localStorage.removeItem(ACADEMY_DOMAIN);
13401
- onNavigate("/login-with-account");
13427
+ pushTo(history, "/login-with-account");
13402
13428
  };
13403
13429
  var handleValidateForm = function handleValidateForm(_ref2) {
13404
13430
  var email = _ref2.email,
@@ -13463,13 +13489,11 @@ var useLogin$2 = function useLogin(_ref) {
13463
13489
  !data.academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
13464
13490
  !!data.academyDomain && localStorage.setItem(ACADEMY_DOMAIN, data.academyDomain);
13465
13491
  dispatch(setUser(_extends({}, data)));
13466
- if (redirectUrl) {
13467
- onNavigate(redirectUrl);
13468
- }
13492
+ if (redirectUrl) pushTo(history, redirectUrl);
13469
13493
  };
13470
13494
  React.useEffect(function () {
13471
13495
  var token = getAccessToken$1();
13472
- if (!!token) onNavigate("/");
13496
+ if (!!token) pushTo(history, "/");
13473
13497
  }, []);
13474
13498
  return {
13475
13499
  handleSubmit: handleSubmit,
@@ -13481,7 +13505,7 @@ var useLogin$2 = function useLogin(_ref) {
13481
13505
  };
13482
13506
 
13483
13507
  function SignIn(_ref) {
13484
- var onNavigate = _ref.onNavigate,
13508
+ var history = _ref.history,
13485
13509
  role = _ref.role,
13486
13510
  homeAcademyUrl = _ref.homeAcademyUrl,
13487
13511
  homeUrl = _ref.homeUrl,
@@ -13490,7 +13514,7 @@ function SignIn(_ref) {
13490
13514
  var _useTranslation = reactI18next.useTranslation(),
13491
13515
  t = _useTranslation.t;
13492
13516
  var _useLoginWithPassword = useLogin$2({
13493
- onNavigate: onNavigate,
13517
+ history: history,
13494
13518
  role: role,
13495
13519
  homeAcademyUrl: homeAcademyUrl,
13496
13520
  homeUrl: homeUrl,
@@ -13595,7 +13619,7 @@ var studentFullLogoEn = function studentFullLogoEn(_ref) {
13595
13619
  fill: "none",
13596
13620
  xmlns: "http://www.w3.org/2000/svg"
13597
13621
  }, React__default.createElement("g", {
13598
- "clip-path": "url(#clip0_3233_11779)"
13622
+ clipPath: "url(#clip0_3233_11779)"
13599
13623
  }, React__default.createElement("path", {
13600
13624
  d: "M9.24216 15.5417C9.24216 16.4045 9.73435 16.87 11.5816 17.5104C16.6013 19.2835 16.972 20.9321 16.972 24.4278V26.0764C16.972 29.5721 13.9684 30.8263 10.4489 30.8263C6.92944 30.8263 4 29.5721 4 26.0764V23.1973H9.29256V25.2165C9.29256 25.9785 9.83516 26.3729 10.5468 26.3729C11.2584 26.3729 11.8039 25.9785 11.8039 25.2165V24.6028C11.8039 21.9698 11.4096 21.7237 7.51948 20.173C4.69085 19.0374 4.07413 17.1902 4.07413 15.7136V13.3505C4.07413 9.85772 6.97985 8.60352 10.4964 8.60352C14.0129 8.60352 16.9216 9.85772 16.9216 13.3535V15.3964H11.7535V14.1896C11.7535 13.4513 11.2376 13.057 10.523 13.057C9.76103 13.057 9.24216 13.3535 9.24216 14.1392V15.5417Z",
13601
13625
  fill: "#2BBA84"
@@ -13657,7 +13681,7 @@ var studentFullLogoKo = function studentFullLogoKo(_ref) {
13657
13681
  fill: "none",
13658
13682
  xmlns: "http://www.w3.org/2000/svg"
13659
13683
  }, React__default.createElement("g", {
13660
- "clip-path": "url(#clip0_3233_7642)"
13684
+ clipPath: "url(#clip0_3233_7642)"
13661
13685
  }, React__default.createElement("path", {
13662
13686
  d: "M0 24.4625H20.5166V30.0272H0V24.4625ZM0.282173 21.434L5.84688 6.177H12.0777L11.4116 7.97175H16.7729C18.8498 7.97175 19.8505 9.0217 19.8505 11.0494V21.4373H13.6952V13.2805H9.48888L6.53919 21.4373H0.282173V21.434Z",
13663
13687
  fill: "#2BBA84"
@@ -13710,7 +13734,7 @@ var teacherFullLogoKo = function teacherFullLogoKo(_ref) {
13710
13734
  fill: "none",
13711
13735
  xmlns: "http://www.w3.org/2000/svg"
13712
13736
  }, React__default.createElement("g", {
13713
- "clip-path": "url(#clip0_3233_7868)"
13737
+ clipPath: "url(#clip0_3233_7868)"
13714
13738
  }, React__default.createElement("path", {
13715
13739
  d: "M0 38.9726H20.5175V44.5391H0V38.9726ZM0.284008 35.9458L5.85056 20.6865H12.0825L11.4171 22.4798H16.7767C18.8541 22.4798 19.8521 23.5307 19.8521 25.5552V35.9418H13.6973V27.7867H9.48991L6.54029 35.9418H0.284008V35.9458Z",
13716
13740
  fill: "#2BBA84"
@@ -13875,32 +13899,32 @@ var singleLogo = function singleLogo(_ref) {
13875
13899
  }, React__default.createElement("defs", null, React__default.createElement("clipPath", {
13876
13900
  id: "1"
13877
13901
  }, React__default.createElement("path", {
13878
- "clip-rule": "evenodd",
13902
+ clipRule: "evenodd",
13879
13903
  d: "M0 0L207 0L207 418L0 418z"
13880
13904
  }))), React__default.createElement("g", {
13881
13905
  transform: "matrix(0.119617224 0 0 0.119617224 0.119617224 -0)"
13882
13906
  }, React__default.createElement("g", {
13883
- "clip-path": "url(#1)"
13907
+ clipPath: "url(#1)"
13884
13908
  }, React__default.createElement("path", {
13885
13909
  d: "M9.66724 418C 136.043 342.286 179.498 275.873 207.032 138.127L207.032 138.127L207.032 344.635C 207.032 385.143 171.107 418 126.791 418L126.791 418L9.66724 418z",
13886
13910
  stroke: "none",
13887
13911
  fill: "#2BBA84",
13888
- "fill-rule": "nonzero"
13912
+ fillRule: "nonzero"
13889
13913
  }), React__default.createElement("path", {
13890
13914
  d: "M101.171 163.206L19.845 83.1111L19.845 188.064L101.171 286.159C 148.167 225.175 177.424 148.413 182.497 80.5714L182.497 80.5714L101.171 163.175L101.171 163.206z",
13891
13915
  stroke: "none",
13892
13916
  fill: "#2BBA84",
13893
- "fill-rule": "nonzero"
13917
+ fillRule: "nonzero"
13894
13918
  }), React__default.createElement("path", {
13895
13919
  d: "M101.171 0L54.1428 68.0317L101.171 112.952L148.167 65.4921L101.171 0z",
13896
13920
  stroke: "none",
13897
13921
  fill: "#2BBA84",
13898
- "fill-rule": "nonzero"
13922
+ fillRule: "nonzero"
13899
13923
  }), React__default.createElement("path", {
13900
13924
  d: "M0 222.762L80.6879 319.587C 80.6879 319.587 65.2458 342.54 0 376.952L0 376.952L0 222.762z",
13901
13925
  stroke: "none",
13902
13926
  fill: "#2BBA84",
13903
- "fill-rule": "nonzero"
13927
+ fillRule: "nonzero"
13904
13928
  }))));
13905
13929
  };
13906
13930
 
@@ -13910,7 +13934,7 @@ var Header = function Header(_ref) {
13910
13934
  homeRoute = _ref.homeRoute,
13911
13935
  headerTabs = _ref.headerTabs,
13912
13936
  role = _ref.role,
13913
- navigate = _ref.navigate,
13937
+ history = _ref.history,
13914
13938
  onSignOut = _ref.onSignOut;
13915
13939
  var _useTranslation = reactI18next.useTranslation(),
13916
13940
  t = _useTranslation.t;
@@ -13996,7 +14020,7 @@ var Header = function Header(_ref) {
13996
14020
  homeAcademyUrl: academyListRoute.path,
13997
14021
  homeUrl: homeRoute.path,
13998
14022
  role: role,
13999
- navigate: navigate,
14023
+ history: history,
14000
14024
  hideAcademyName: !isLargerThanXL && headerTabs.length > 6
14001
14025
  })), React__default.createElement("div", {
14002
14026
  className: "me-2"
@@ -14014,6 +14038,156 @@ var Header = function Header(_ref) {
14014
14038
  }))));
14015
14039
  };
14016
14040
 
14041
+ var ACADEMY_URL$1 = BASE_URL + "/api/academy";
14042
+ var getAcademyList$1 = function getAcademyList() {
14043
+ return api.get("" + ACADEMY_URL$1);
14044
+ };
14045
+ var switchAcademy$1 = function switchAcademy(academyId) {
14046
+ return api.post(ACADEMY_URL$1 + "/switch-academy?academyId=" + academyId);
14047
+ };
14048
+
14049
+ var useAcademyList = function useAcademyList(history, role, homeAcademyUrl, homeUrl, registerUrl) {
14050
+ var dispatch = reactRedux.useDispatch();
14051
+ var _useLogin = useLogin(history, homeAcademyUrl, homeUrl, registerUrl),
14052
+ handleLoginAccessToken = _useLogin.handleLoginAccessToken;
14053
+ var _useState = React.useState([]),
14054
+ academyList = _useState[0],
14055
+ setAcademyList = _useState[1];
14056
+ var email = reactRedux.useSelector(function (state) {
14057
+ var _state$common, _state$common$user;
14058
+ 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;
14059
+ });
14060
+ var getAcademies = function getAcademies() {
14061
+ try {
14062
+ var _temp2 = function _temp2() {
14063
+ dispatch(setLoading(false));
14064
+ };
14065
+ dispatch(setLoading(true));
14066
+ var _temp = _catch(function () {
14067
+ return Promise.resolve(getAcademyList$1()).then(function (res) {
14068
+ setAcademyList(res.data.items || []);
14069
+ });
14070
+ }, function (error) {
14071
+ var _error$response, _error$response$data;
14072
+ reactToastify.toast.error((error === null || error === void 0 ? void 0 : (_error$response = error.response) === null || _error$response === void 0 ? void 0 : (_error$response$data = _error$response.data) === null || _error$response$data === void 0 ? void 0 : _error$response$data.tile) || "Get user academies failed");
14073
+ });
14074
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
14075
+ } catch (e) {
14076
+ return Promise.reject(e);
14077
+ }
14078
+ };
14079
+ var handleSwitchAcademy = function handleSwitchAcademy(id, domain) {
14080
+ try {
14081
+ var _temp4 = function _temp4() {
14082
+ dispatch(setLoading(false));
14083
+ };
14084
+ dispatch(setLoading(true));
14085
+ var _temp3 = _catch(function () {
14086
+ return Promise.resolve(switchAcademy$1(id)).then(function (res) {
14087
+ var data = res.data;
14088
+ var requestBody = {
14089
+ accessToken: data.accessToken,
14090
+ email: email,
14091
+ academyId: id,
14092
+ role: role
14093
+ };
14094
+ localStorage.setItem(ACADEMY_DOMAIN, domain);
14095
+ return Promise.resolve(handleLoginAccessToken(requestBody, false)).then(function () {});
14096
+ });
14097
+ }, function (error) {
14098
+ var _error$response2, _error$response2$data;
14099
+ reactToastify.toast.error((error === null || error === void 0 ? void 0 : (_error$response2 = error.response) === null || _error$response2 === void 0 ? void 0 : (_error$response2$data = _error$response2.data) === null || _error$response2$data === void 0 ? void 0 : _error$response2$data.tile) || "Failed");
14100
+ });
14101
+ return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
14102
+ } catch (e) {
14103
+ return Promise.reject(e);
14104
+ }
14105
+ };
14106
+ React.useEffect(function () {
14107
+ getAcademies();
14108
+ }, []);
14109
+ return {
14110
+ academyList: academyList,
14111
+ handleSwitchAcademy: handleSwitchAcademy
14112
+ };
14113
+ };
14114
+
14115
+ var AcademyCard = function AcademyCard(_ref) {
14116
+ var theme = _ref.theme,
14117
+ academy = _ref.academy,
14118
+ onSwitch = _ref.onSwitch;
14119
+ var _useTranslation = reactI18next.useTranslation(),
14120
+ t = _useTranslation.t;
14121
+ var handleSwitchAcademy = function handleSwitchAcademy() {
14122
+ onSwitch(academy.id, academy.domain);
14123
+ };
14124
+ return React.createElement(Card, null, React.createElement(CardMedia, {
14125
+ sx: {
14126
+ width: "100%",
14127
+ aspectRatio: 4 / 3
14128
+ },
14129
+ image: academy.image || "/images/default.jpg",
14130
+ title: academy.name
14131
+ }), React.createElement(CardContent, null, React.createElement(Typography, {
14132
+ variant: "h6",
14133
+ component: "div"
14134
+ }, academy.name)), React.createElement(CardActions, null, React.createElement(Button, {
14135
+ sx: {
14136
+ bgColor: theme.palette.main_theme.dark
14137
+ },
14138
+ size: "medium",
14139
+ variant: "contained",
14140
+ onClick: handleSwitchAcademy
14141
+ }, t("switch"))));
14142
+ };
14143
+
14144
+ var AcademyList = function AcademyList(_ref) {
14145
+ var theme = _ref.theme,
14146
+ history = _ref.history,
14147
+ role = _ref.role,
14148
+ homeAcademyUrl = _ref.homeAcademyUrl,
14149
+ homeUrl = _ref.homeUrl,
14150
+ registerUrl = _ref.registerUrl;
14151
+ var _useTranslation = reactI18next.useTranslation(),
14152
+ t = _useTranslation.t;
14153
+ useAutoAcademyDomain(function () {}, history, [], "", window.location.pathname, true);
14154
+ var _useAcademyList = useAcademyList(history, role, homeAcademyUrl, homeUrl, registerUrl),
14155
+ academyList = _useAcademyList.academyList,
14156
+ handleSwitchAcademy = _useAcademyList.handleSwitchAcademy;
14157
+ return React__default.createElement("div", {
14158
+ className: "py-3 px-4"
14159
+ }, React__default.createElement(Grid, {
14160
+ container: true,
14161
+ spacing: 3
14162
+ }, React__default.createElement(Grid, {
14163
+ item: true,
14164
+ xs: 12
14165
+ }, React__default.createElement(Typography, {
14166
+ fontSize: 24,
14167
+ fontWeight: 600
14168
+ }, t("academy_list"))), React__default.createElement(Grid, {
14169
+ item: true,
14170
+ xs: 12
14171
+ }, React__default.createElement(Grid, {
14172
+ container: true,
14173
+ spacing: 2
14174
+ }, academyList.map(function (i) {
14175
+ return React__default.createElement(Grid, {
14176
+ item: true,
14177
+ xs: 6,
14178
+ lg: 3,
14179
+ key: i.id
14180
+ }, React__default.createElement(AcademyCard, {
14181
+ theme: theme,
14182
+ academy: i,
14183
+ onSwitch: handleSwitchAcademy
14184
+ }));
14185
+ }), !academyList.length && React__default.createElement(Grid, {
14186
+ item: true,
14187
+ xs: 3
14188
+ }, React__default.createElement("span", null, t("no_academy_available"), "."))))));
14189
+ };
14190
+
14017
14191
  exports.moment = moment;
14018
14192
  Object.defineProperty(exports, 'I18nextProvider', {
14019
14193
  enumerable: true,
@@ -14042,6 +14216,7 @@ Object.defineProperty(exports, 'toast', {
14042
14216
  exports.ACADEMY_DOMAIN = ACADEMY_DOMAIN;
14043
14217
  exports.ACCESS_TOKEN = ACCESS_TOKEN;
14044
14218
  exports.AcademyHeaders = AcademyHeaders;
14219
+ exports.AcademyList = AcademyList;
14045
14220
  exports.AnswerCountSelector = AnswerCountSelector;
14046
14221
  exports.ArticleCategorySelector = ArticleCategorySelector;
14047
14222
  exports.ArticleGroupView = ArticleGroupView;