touchstudy-core 0.1.81 → 0.1.83

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
@@ -5,14 +5,17 @@ var moment = _interopDefault(require('moment'));
5
5
  var React = require('react');
6
6
  var React__default = _interopDefault(React);
7
7
  var formik = require('formik');
8
- var yup = require('yup');
8
+ var Yup = require('yup');
9
9
  var GoogleLogin = require('@leecheuk/react-google-login');
10
10
  var GoogleLogin__default = _interopDefault(GoogleLogin);
11
11
  var reactRedux = require('react-redux');
12
12
  var axios = _interopDefault(require('axios'));
13
13
  var reactI18next = require('react-i18next');
14
14
  var material = require('@mui/material');
15
+ var colors = require('@mui/material/colors');
16
+ var reactGoogleRecaptchaV3 = require('react-google-recaptcha-v3');
15
17
  var gapiScript = require('gapi-script');
18
+ var reactToastify = require('react-toastify');
16
19
  require('moment/locale/ko.js');
17
20
  require('moment/locale/en-au.js');
18
21
  var Pusher = _interopDefault(require('pusher-js'));
@@ -24,7 +27,6 @@ var Popover = _interopDefault(require('@mui/material/Popover'));
24
27
  var MenuItem = _interopDefault(require('@mui/material/MenuItem'));
25
28
  var IconButton = _interopDefault(require('@mui/material/IconButton'));
26
29
  var go = require('react-icons/go');
27
- var reactToastify = require('react-toastify');
28
30
  var Select = require('react-select');
29
31
  var Select__default = _interopDefault(Select);
30
32
  var fa = require('react-icons/fa');
@@ -472,14 +474,16 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl)
472
474
  return Promise.resolve(apiLogin()).then(function (loginResponse) {
473
475
  var isFirstLogin = loginResponse.isFirstLogin,
474
476
  token = loginResponse.token,
475
- user = loginResponse.user;
477
+ user = loginResponse.user,
478
+ isSuperAdmin = loginResponse.isSuperAdmin;
476
479
  var isAcademy = !!(user !== null && user !== void 0 && user.academyDomain);
477
480
  var needToRegister = isStudent && isFirstLogin && isAcademy;
478
481
  var redirectUrl = getRedirectUrl();
479
482
  if (isStudent && !registerUrl) throw new Error("an_unexpected_error_has_occurred");
480
483
  if (!redirectUrl) redirectUrl = needToRegister ? registerUrl : isAcademy ? homeAcademyUrl : homeUrl;
481
484
  redirectLoginUser(_extends({}, user, {
482
- isNotEnoughStatements: isFirstLogin
485
+ isNotEnoughStatements: isFirstLogin,
486
+ isSuperAdmin: isSuperAdmin
483
487
  }), token, redirectUrl);
484
488
  });
485
489
  }, function (error) {
@@ -712,20 +716,33 @@ var SloganFullLogoEn = function SloganFullLogoEn(_ref) {
712
716
  }))));
713
717
  };
714
718
 
715
- var schema = yup.object({
716
- email: yup.string().email("Email is invalid").required("Email is required"),
717
- password: yup.string().required("Password is required"),
718
- rememberMe: yup.boolean()
719
- });
720
- var BlockLogin = function BlockLogin(_ref) {
721
- var defaultInfo = _ref.defaultInfo,
722
- history = _ref.history,
723
- _ref$role = _ref.role,
724
- role = _ref$role === void 0 ? exports.Role.Student : _ref$role,
725
- homeAcademyUrl = _ref.homeAcademyUrl,
726
- homeUrl = _ref.homeUrl,
727
- registerUrl = _ref.registerUrl,
728
- clientId = _ref.clientId;
719
+ var schema = function schema(t, isOTP) {
720
+ return Yup.object({
721
+ email: Yup.string().when([], function (_ref, schema) {
722
+ return !isOTP ? schema.email(t("invalid_email_address")).required(t("email_is_required")) : schema;
723
+ }),
724
+ otp: Yup.number().typeError(t("must_be_number")).when([], function (_ref2, schema) {
725
+ return isOTP ? schema.required(t("otp_is_required")).positive().integer() : schema;
726
+ })
727
+ });
728
+ };
729
+ var BlockLogin = function BlockLogin(_ref3) {
730
+ var isOTP = _ref3.isOTP,
731
+ isEmail = _ref3.isEmail,
732
+ defaultInfo = _ref3.defaultInfo,
733
+ onVerify = _ref3.onVerify,
734
+ tokenReCaptcha = _ref3.tokenReCaptcha,
735
+ refreshReCaptcha = _ref3.refreshReCaptcha,
736
+ handleSwitchOTP = _ref3.handleSwitchOTP,
737
+ handleSwitchEmail = _ref3.handleSwitchEmail,
738
+ history = _ref3.history,
739
+ _ref3$role = _ref3.role,
740
+ role = _ref3$role === void 0 ? exports.Role.Student : _ref3$role,
741
+ homeAcademyUrl = _ref3.homeAcademyUrl,
742
+ homeUrl = _ref3.homeUrl,
743
+ registerUrl = _ref3.registerUrl,
744
+ clientId = _ref3.clientId,
745
+ onSubmit = _ref3.onSubmit;
729
746
  var language = reactRedux.useSelector(function (state) {
730
747
  var _state$common;
731
748
  return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.language;
@@ -770,19 +787,32 @@ var BlockLogin = function BlockLogin(_ref) {
770
787
  sx: {
771
788
  gap: 4,
772
789
  p: 6,
773
- display: 'flex',
774
- flexDirection: 'column',
775
- alignItems: 'center'
790
+ display: "flex",
791
+ flexDirection: "column",
792
+ alignItems: "center"
776
793
  }
777
794
  }, React__default.createElement(formik.Formik, {
778
795
  initialValues: defaultInfo,
779
- validationSchema: schema,
780
- onSubmit: function onSubmit() {}
781
- }, function (formikProps) {
782
- var handleSubmit = formikProps.handleSubmit;
783
- return React__default.createElement("form", {
784
- onSubmit: handleSubmit
785
- }, React__default.createElement("div", {
796
+ validationSchema: function validationSchema() {
797
+ return schema(t, isOTP);
798
+ },
799
+ onSubmit: onSubmit
800
+ }, function (_ref4) {
801
+ var errors = _ref4.errors,
802
+ values = _ref4.values,
803
+ setFieldValue = _ref4.setFieldValue;
804
+ console.log({
805
+ errors: errors,
806
+ values: values
807
+ });
808
+ React.useEffect(function () {
809
+ if (isOTP) {
810
+ setFieldValue("email", "");
811
+ } else {
812
+ setFieldValue("otp", "");
813
+ }
814
+ }, [isOTP, isEmail]);
815
+ return React__default.createElement(formik.Form, null, React__default.createElement("div", {
786
816
  className: "" + styles["block-form"]
787
817
  }, React__default.createElement(material.Stack, {
788
818
  py: 2,
@@ -792,7 +822,7 @@ var BlockLogin = function BlockLogin(_ref) {
792
822
  width: "300px"
793
823
  }) : React__default.createElement(SloganFullLogoEn, {
794
824
  width: "300px"
795
- })), React__default.createElement("div", {
825
+ })), !isOTP && !isEmail && React__default.createElement("div", {
796
826
  className: "p-0 mt-1 mb-4"
797
827
  }, React__default.createElement(GoogleLogin__default, {
798
828
  clientId: clientId,
@@ -802,18 +832,152 @@ var BlockLogin = function BlockLogin(_ref) {
802
832
  cookiePolicy: "single_host_origin",
803
833
  className: "" + styles["btn-login-google"],
804
834
  isSignedIn: true
805
- }))));
835
+ }), React__default.createElement(material.Box, {
836
+ onClick: function onClick() {
837
+ return handleSwitchEmail(true);
838
+ },
839
+ sx: {
840
+ cursor: "pointer",
841
+ my: 4
842
+ }
843
+ }, React__default.createElement(material.Typography, {
844
+ fontSize: "14px",
845
+ fontWeight: 700,
846
+ color: colors.blue[700]
847
+ }, t("sign_in_with_email"))))), (isEmail || isOTP) && React__default.createElement(material.Stack, null, !isOTP ? React__default.createElement(material.Stack, {
848
+ flexDirection: "column",
849
+ gap: 1
850
+ }, React__default.createElement(material.Typography, {
851
+ fontWeight: 700,
852
+ fontSize: "14px"
853
+ }, t("email")), React__default.createElement(formik.Field, {
854
+ name: "email",
855
+ render: function render(_ref5) {
856
+ var field = _ref5.field;
857
+ return React__default.createElement(material.TextField, Object.assign({}, field));
858
+ }
859
+ }), !!(errors !== null && errors !== void 0 && errors.email) && React__default.createElement(material.Typography, {
860
+ fontWeight: 500,
861
+ fontSize: "10px",
862
+ lineHeight: "11.93px",
863
+ color: !(errors !== null && errors !== void 0 && errors.email) ? "#97A1AF" : "#F34B4B"
864
+ }, errors === null || errors === void 0 ? void 0 : errors.email)) : React__default.createElement(material.Stack, {
865
+ flexDirection: "column",
866
+ gap: 1
867
+ }, React__default.createElement(material.Typography, {
868
+ fontWeight: 700,
869
+ fontSize: "14px"
870
+ }, t("OTP")), React__default.createElement(formik.Field, {
871
+ name: "otp",
872
+ render: function render(_ref6) {
873
+ var field = _ref6.field;
874
+ return React__default.createElement(material.TextField, Object.assign({}, field));
875
+ }
876
+ }), !!(errors !== null && errors !== void 0 && errors.otp) && React__default.createElement(material.Typography, {
877
+ fontWeight: 500,
878
+ fontSize: "10px",
879
+ lineHeight: "11.93px",
880
+ color: !(errors !== null && errors !== void 0 && errors.otp) ? "#97A1AF" : "#F34B4B"
881
+ }, errors === null || errors === void 0 ? void 0 : errors.otp)), React__default.createElement(material.Stack, {
882
+ flexDirection: "row",
883
+ alignItems: "center",
884
+ gap: 2,
885
+ my: 2
886
+ }, React__default.createElement(reactGoogleRecaptchaV3.GoogleReCaptcha, {
887
+ onVerify: onVerify,
888
+ refreshReCaptcha: refreshReCaptcha
889
+ })), React__default.createElement(material.Box, {
890
+ onClick: function onClick() {
891
+ handleSwitchEmail(false);
892
+ handleSwitchOTP(false);
893
+ },
894
+ sx: {
895
+ cursor: "pointer",
896
+ my: 2
897
+ }
898
+ }, React__default.createElement(material.Typography, {
899
+ fontSize: "14px",
900
+ fontWeight: 700,
901
+ color: colors.blue[700]
902
+ }, t("sign_in_with_google_account"))), React__default.createElement(material.Stack, {
903
+ flexDirection: "row",
904
+ justifyContent: "end",
905
+ gap: 1,
906
+ mt: 2
907
+ }, React__default.createElement(material.Button, {
908
+ variant: "contained",
909
+ color: "primary",
910
+ type: "submit",
911
+ disabled: !tokenReCaptcha
912
+ }, t("submit")))));
806
913
  })));
807
914
  };
808
915
 
916
+ var SIGN_IN_SUPER_ADMIN_URL = SUPER_ADMIN_BASE_URL + "/api/auth/login";
917
+ var SIGN_IN_URL = BASE_URL + "/api/auth/login";
918
+ var signInApi = function signInApi(_ref) {
919
+ var email = _ref.email,
920
+ password = _ref.password,
921
+ role = _ref.role;
922
+ return api.post(SIGN_IN_URL + "/demo", {
923
+ email: email,
924
+ password: password,
925
+ role: role
926
+ });
927
+ };
928
+ var signInWithEmailApi = function signInWithEmailApi(_ref2) {
929
+ var academyDomain = _ref2.academyDomain,
930
+ email = _ref2.email,
931
+ reCaptcha = _ref2.reCaptcha;
932
+ return api.post((academyDomain ? SIGN_IN_URL : SIGN_IN_SUPER_ADMIN_URL) + "/email", {
933
+ email: email,
934
+ reCaptcha: reCaptcha
935
+ }, {
936
+ headers: {
937
+ Domain: window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : '')
938
+ }
939
+ });
940
+ };
941
+ var signInWithOTPApi = function signInWithOTPApi(_ref3) {
942
+ var academyDomain = _ref3.academyDomain,
943
+ otp = _ref3.otp,
944
+ role = _ref3.role;
945
+ return api.post((academyDomain ? SIGN_IN_URL : SIGN_IN_SUPER_ADMIN_URL) + "/otp", {
946
+ otp: otp,
947
+ role: role
948
+ });
949
+ };
950
+ var signInWithKeyApi = function signInWithKeyApi(_ref4) {
951
+ var academyDomain = _ref4.academyDomain,
952
+ key = _ref4.key,
953
+ role = _ref4.role;
954
+ return api.post((academyDomain ? SIGN_IN_URL : SIGN_IN_SUPER_ADMIN_URL) + "/email/key", {
955
+ key: key,
956
+ role: role
957
+ });
958
+ };
959
+ var signInSuperAdminApi = function signInSuperAdminApi(_ref5) {
960
+ var email = _ref5.email,
961
+ password = _ref5.password,
962
+ role = _ref5.role;
963
+ return api.post(SIGN_IN_SUPER_ADMIN_URL + "/demo", {
964
+ email: email,
965
+ password: password,
966
+ role: role
967
+ });
968
+ };
969
+
809
970
  var defaultInfo = {
810
971
  email: "",
811
- password: "",
812
- captcha: "",
813
- rememberMe: false
972
+ otp: ""
814
973
  };
815
974
  var PAGE_TITLE = "sign_in";
816
- var useLogin$1 = function useLogin(homeAcademyUrl, homeUrl) {
975
+ var useLogin$1 = function useLogin(_ref) {
976
+ var history = _ref.history,
977
+ homeAcademyUrl = _ref.homeAcademyUrl,
978
+ homeUrl = _ref.homeUrl,
979
+ registerUrl = _ref.registerUrl,
980
+ role = _ref.role;
817
981
  var _useState = React.useState(false),
818
982
  openLogin = _useState[0],
819
983
  setOpenLogin = _useState[1];
@@ -823,6 +987,7 @@ var useLogin$1 = function useLogin(homeAcademyUrl, homeUrl) {
823
987
  var _useState3 = React.useState(),
824
988
  clientId = _useState3[0],
825
989
  setClientId = _useState3[1];
990
+ var dispatch = reactRedux.useDispatch();
826
991
  var _useTranslation = reactI18next.useTranslation(),
827
992
  t = _useTranslation.t;
828
993
  var toggle = React.useCallback(function () {
@@ -831,6 +996,96 @@ var useLogin$1 = function useLogin(homeAcademyUrl, homeUrl) {
831
996
  var _useState4 = React.useState(false),
832
997
  isShowPassword = _useState4[0],
833
998
  setIsShowPassword = _useState4[1];
999
+ var _useState5 = React.useState(false),
1000
+ isOTP = _useState5[0],
1001
+ setIsOTP = _useState5[1];
1002
+ var _useState6 = React.useState(false),
1003
+ isEmail = _useState6[0],
1004
+ setIsEmail = _useState6[1];
1005
+ var searchParams = new URLSearchParams(window.location.search);
1006
+ var paramDomain = searchParams.get("domain");
1007
+ var academyDomainStorage = getAcademyDomain();
1008
+ var academyDomain = paramDomain || academyDomainStorage || "";
1009
+ var _useState7 = React.useState(""),
1010
+ tokenReCaptcha = _useState7[0],
1011
+ setTokenReCaptcha = _useState7[1];
1012
+ var _useState8 = React.useState(false),
1013
+ refreshReCaptcha = _useState8[0],
1014
+ setRefreshReCaptcha = _useState8[1];
1015
+ var handleSwitchOTP = function handleSwitchOTP(bool) {
1016
+ setIsOTP(bool);
1017
+ };
1018
+ var handleSwitchEmail = function handleSwitchEmail(bool) {
1019
+ setIsEmail(bool);
1020
+ };
1021
+ var onVerify = React.useCallback(function (token) {
1022
+ setTokenReCaptcha(token);
1023
+ }, []);
1024
+ var redirectLoginUser = function redirectLoginUser(data, token, redirectUrl) {
1025
+ localStorage.setItem(ACCESS_TOKEN, token);
1026
+ !data.academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
1027
+ !!data.academyDomain && localStorage.setItem(ACADEMY_DOMAIN, data.academyDomain);
1028
+ dispatch(setUser(_extends({}, data)));
1029
+ if (redirectUrl) pushTo(history, redirectUrl);
1030
+ };
1031
+ var handleSubmit = function handleSubmit(values) {
1032
+ try {
1033
+ var _temp5 = function _temp5() {
1034
+ dispatch(setLoading(false));
1035
+ };
1036
+ if (!tokenReCaptcha) return Promise.resolve();
1037
+ dispatch(setLoading(true));
1038
+ var email = values.email,
1039
+ otp = values.otp;
1040
+ var _temp4 = _catch(function () {
1041
+ function _temp3() {
1042
+ var _temp = function () {
1043
+ if (otp) {
1044
+ return Promise.resolve(signInWithOTPApi({
1045
+ academyDomain: academyDomain,
1046
+ otp: otp,
1047
+ role: role
1048
+ })).then(function (res) {
1049
+ var loginResponse = res === null || res === void 0 ? void 0 : res.data;
1050
+ var isFirstLogin = loginResponse.isFirstLogin,
1051
+ token = loginResponse.token,
1052
+ user = loginResponse.user;
1053
+ var isAcademy = !!(user !== null && user !== void 0 && user.academyDomain);
1054
+ var needToRegister = isFirstLogin && isAcademy;
1055
+ var redirectUrl = needToRegister ? registerUrl : isAcademy ? homeAcademyUrl : homeUrl;
1056
+ handleSwitchOTP(false);
1057
+ redirectLoginUser(user, token, redirectUrl);
1058
+ });
1059
+ }
1060
+ }();
1061
+ if (_temp && _temp.then) return _temp.then(function () {});
1062
+ }
1063
+ var _temp2 = function () {
1064
+ if (email) {
1065
+ return Promise.resolve(signInWithEmailApi({
1066
+ academyDomain: academyDomain,
1067
+ email: email,
1068
+ reCaptcha: tokenReCaptcha
1069
+ })).then(function () {
1070
+ reactToastify.toast.success(t("please_check_your_mailbox"));
1071
+ handleSwitchOTP(true);
1072
+ handleSwitchEmail(false);
1073
+ setRefreshReCaptcha(function (b) {
1074
+ return !b;
1075
+ });
1076
+ });
1077
+ }
1078
+ }();
1079
+ return _temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2);
1080
+ }, function (error) {
1081
+ console.log(error);
1082
+ reactToastify.toast.error(getErrorMessage(t, error, t("request_login_fail")));
1083
+ });
1084
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
1085
+ } catch (e) {
1086
+ return Promise.reject(e);
1087
+ }
1088
+ };
834
1089
  React.useEffect(function () {
835
1090
  setClientId(GOOGLE_CLIENT_ID);
836
1091
  }, []);
@@ -853,6 +1108,13 @@ var useLogin$1 = function useLogin(homeAcademyUrl, homeUrl) {
853
1108
  document.title = t("study_peak") + " | " + t(PAGE_TITLE);
854
1109
  }, [t]);
855
1110
  return {
1111
+ isOTP: isOTP,
1112
+ isEmail: isEmail,
1113
+ onVerify: onVerify,
1114
+ tokenReCaptcha: tokenReCaptcha,
1115
+ refreshReCaptcha: refreshReCaptcha,
1116
+ handleSwitchOTP: handleSwitchOTP,
1117
+ handleSwitchEmail: handleSwitchEmail,
856
1118
  clientId: clientId,
857
1119
  defaultInfo: defaultInfo,
858
1120
  openLogin: openLogin,
@@ -860,6 +1122,7 @@ var useLogin$1 = function useLogin(homeAcademyUrl, homeUrl) {
860
1122
  isShowPassword: isShowPassword,
861
1123
  setIsShowPassword: setIsShowPassword,
862
1124
  infoUser: infoUser,
1125
+ handleSubmit: handleSubmit,
863
1126
  setInfoUser: setInfoUser
864
1127
  };
865
1128
  };
@@ -962,9 +1225,23 @@ var _excluded = ["history"];
962
1225
  var Login = function Login(_ref) {
963
1226
  var history = _ref.history,
964
1227
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
965
- var _useLogin = useLogin$1(rest.homeAcademyUrl, rest.homeUrl),
1228
+ var _useLogin = useLogin$1({
1229
+ homeAcademyUrl: rest.homeAcademyUrl,
1230
+ homeUrl: rest.homeUrl,
1231
+ role: rest.role,
1232
+ registerUrl: rest.registerUrl,
1233
+ history: history
1234
+ }),
1235
+ isOTP = _useLogin.isOTP,
1236
+ isEmail = _useLogin.isEmail,
1237
+ onVerify = _useLogin.onVerify,
966
1238
  defaultInfo = _useLogin.defaultInfo,
967
- clientId = _useLogin.clientId;
1239
+ clientId = _useLogin.clientId,
1240
+ tokenReCaptcha = _useLogin.tokenReCaptcha,
1241
+ handleSubmit = _useLogin.handleSubmit,
1242
+ handleSwitchOTP = _useLogin.handleSwitchOTP,
1243
+ refreshReCaptcha = _useLogin.refreshReCaptcha,
1244
+ handleSwitchEmail = _useLogin.handleSwitchEmail;
968
1245
  useLanguage(history);
969
1246
  return React__default.createElement("div", {
970
1247
  className: styles["login"] + " font-family-lato"
@@ -976,11 +1253,21 @@ var Login = function Login(_ref) {
976
1253
  item: true,
977
1254
  xs: 12,
978
1255
  className: "d-flex justify-content-center h-100 align-items-center"
979
- }, clientId && React__default.createElement(BlockLogin, Object.assign({
1256
+ }, clientId && React__default.createElement(reactGoogleRecaptchaV3.GoogleReCaptchaProvider, {
1257
+ reCaptchaKey: GOOGLE_RECAPTCHA_KEY
1258
+ }, React__default.createElement(BlockLogin, Object.assign({
1259
+ isOTP: isOTP,
1260
+ onVerify: onVerify,
1261
+ isEmail: isEmail,
1262
+ tokenReCaptcha: tokenReCaptcha,
1263
+ refreshReCaptcha: refreshReCaptcha,
1264
+ handleSwitchOTP: handleSwitchOTP,
1265
+ handleSwitchEmail: handleSwitchEmail,
980
1266
  defaultInfo: defaultInfo,
981
1267
  history: history,
982
- clientId: clientId
983
- }, rest)))));
1268
+ clientId: clientId,
1269
+ onSubmit: handleSubmit
1270
+ }, rest))))));
984
1271
  };
985
1272
 
986
1273
  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
@@ -1379,7 +1666,9 @@ var useLayoutContext = function useLayoutContext(role, pusherRegisterUrls, showL
1379
1666
  };
1380
1667
  var checkRoleUser = React.useCallback(function () {
1381
1668
  if (!(user !== null && user !== void 0 && user.email)) return;
1382
- if (!roles.includes(role) && !!academyDomain) {
1669
+ var isAdmin = roles.includes(exports.Role.Admin);
1670
+ if (isAdmin && role === exports.Role.Teacher) return;
1671
+ if (!roles.includes(role) && !!academyDomain && (role !== exports.Role.Teacher || !roles.includes(exports.Role.Admin))) {
1383
1672
  alert(t("user_not_allow_to_register_role", {
1384
1673
  user: user.email,
1385
1674
  role: role
@@ -1838,6 +2127,7 @@ var there_are_no_recent_exams = "최근 시험이 없습니다";
1838
2127
  var you_have_started_an_exam_with_code_code_do_you_want_to_continue = "{{code}} 코드로 시험을 시작했습니다. 계속하시겠습니까?";
1839
2128
  var here = "여기";
1840
2129
  var do_you_want_to_complete_the_exam = "시험을 완료처리 하시겠습니까?";
2130
+ var do_you_want_to_cancel_the_exam = "시험을 취소하시겠습니까? (학생의 결과는 모두 삭제됩니다)";
1841
2131
  var are_you_sure_you_want_to_delete_the_exam = "시험을 삭제하시겠습니까?";
1842
2132
  var are_you_sure_you_want_to_delete_the_textbook = "교과서를 삭제하시겠습니까?";
1843
2133
  var are_you_sure_you_want_to_delete_the_user = "사용자 {{user}}을(를) 삭제하시겠습니까?";
@@ -2081,6 +2371,7 @@ var parent_name = "부모님 성함";
2081
2371
  var users = "사용자";
2082
2372
  var new_user = "새로운 사용자";
2083
2373
  var academy_admin = "아카데미 관리자";
2374
+ var super_admin = "최고 관리자";
2084
2375
  var switch_academy_admin = "스위치 아카데미 관리자";
2085
2376
  var switch_academy = "스위치 아카데미";
2086
2377
  var there_are_no_lessons_this_week = "이번주는 수업이 없습니다";
@@ -2371,6 +2662,7 @@ var textbook_subject_is_required = "교과서 과목은 필수입니다";
2371
2662
  var update_the_textbook_successfully = "교과서를 성공적으로 업데이트했습니다.";
2372
2663
  var create_the_textbook_successfully = "교과서를 성공적으로 만들었습니다.";
2373
2664
  var finish_exam_successful = "시험을 성공적으로 마쳤습니다";
2665
+ var cancel_exam_successful = "시험을 성공적으로 취소했습니다";
2374
2666
  var you_has_been_kicked_out = "당신은 쫓겨났습니다";
2375
2667
  var the_teacher_has_closed_or_deleted_the_exam = "선생님이 시험을 종료했거나 삭제했습니다. 나중에 다시 시도해 주세요.";
2376
2668
  var check_in_lesson_successfully = "수업 체크인 성공";
@@ -2465,6 +2757,7 @@ var added_date = "추가된 날짜";
2465
2757
  var sync_exam_results = "시험 결과 동기화";
2466
2758
  var update_data_fail = "데이터 업데이트 실패";
2467
2759
  var add_students_to_class = "수업에 학생 추가";
2760
+ var add_teachers_to_class = "수업에 교사 추가";
2468
2761
  var click_to_choose_file = "파일을 선택하려면 클릭하세요.";
2469
2762
  var exam_data = "시험 데이터";
2470
2763
  var questions_correct_rate = "질문 정답률";
@@ -2580,6 +2873,16 @@ var your_browser_must = "귀하의 브라우저는 다음을 충족해야 합니
2580
2873
  var allowed_to_send_pop_ups_and_use_redirects = "팝업 보내기 및 리디렉션 사용이 허용됨";
2581
2874
  var disable_ask_where_to_save_each_file_before_downloading = "다운로드하기 전에 각 파일을 저장할 위치 묻기 비활성화";
2582
2875
  var total_number_of_selected_results = "선택된 결과의 총 개수";
2876
+ var choose_to_print = "인쇄를 선택하세요";
2877
+ var exam_has_been_cancelled = "시험이 취소되었습니다";
2878
+ var or = "또는";
2879
+ var sign_in_with_email = "이메일로 로그인";
2880
+ var please_check_your_mailbox = "우편함을 확인해 주세요";
2881
+ var otp_is_required = "OTP가 필요합니다";
2882
+ var min_is_1 = "최소값은 1입니다.";
2883
+ var max_is_6 = "최대는 6입니다";
2884
+ var must_be_number = "숫자여야 합니다.";
2885
+ var sign_in_with_google_account = "구글 계정으로 로그인";
2583
2886
  var lang_ko = {
2584
2887
  problem_solving: problem_solving,
2585
2888
  my_story: my_story,
@@ -2620,6 +2923,7 @@ var lang_ko = {
2620
2923
  you_have_started_an_exam_with_code_code_do_you_want_to_continue: you_have_started_an_exam_with_code_code_do_you_want_to_continue,
2621
2924
  here: here,
2622
2925
  do_you_want_to_complete_the_exam: do_you_want_to_complete_the_exam,
2926
+ do_you_want_to_cancel_the_exam: do_you_want_to_cancel_the_exam,
2623
2927
  are_you_sure_you_want_to_delete_the_exam: are_you_sure_you_want_to_delete_the_exam,
2624
2928
  are_you_sure_you_want_to_delete_the_textbook: are_you_sure_you_want_to_delete_the_textbook,
2625
2929
  are_you_sure_you_want_to_delete_the_user: are_you_sure_you_want_to_delete_the_user,
@@ -2860,6 +3164,7 @@ var lang_ko = {
2860
3164
  users: users,
2861
3165
  new_user: new_user,
2862
3166
  academy_admin: academy_admin,
3167
+ super_admin: super_admin,
2863
3168
  switch_academy_admin: switch_academy_admin,
2864
3169
  switch_academy: switch_academy,
2865
3170
  there_are_no_lessons_this_week: there_are_no_lessons_this_week,
@@ -3145,6 +3450,7 @@ var lang_ko = {
3145
3450
  update_the_textbook_successfully: update_the_textbook_successfully,
3146
3451
  create_the_textbook_successfully: create_the_textbook_successfully,
3147
3452
  finish_exam_successful: finish_exam_successful,
3453
+ cancel_exam_successful: cancel_exam_successful,
3148
3454
  you_has_been_kicked_out: you_has_been_kicked_out,
3149
3455
  the_teacher_has_closed_or_deleted_the_exam: the_teacher_has_closed_or_deleted_the_exam,
3150
3456
  check_in_lesson_successfully: check_in_lesson_successfully,
@@ -3240,6 +3546,7 @@ var lang_ko = {
3240
3546
  sync_exam_results: sync_exam_results,
3241
3547
  update_data_fail: update_data_fail,
3242
3548
  add_students_to_class: add_students_to_class,
3549
+ add_teachers_to_class: add_teachers_to_class,
3243
3550
  click_to_choose_file: click_to_choose_file,
3244
3551
  exam_data: exam_data,
3245
3552
  questions_correct_rate: questions_correct_rate,
@@ -3352,7 +3659,17 @@ var lang_ko = {
3352
3659
  your_browser_must: your_browser_must,
3353
3660
  allowed_to_send_pop_ups_and_use_redirects: allowed_to_send_pop_ups_and_use_redirects,
3354
3661
  disable_ask_where_to_save_each_file_before_downloading: disable_ask_where_to_save_each_file_before_downloading,
3355
- total_number_of_selected_results: total_number_of_selected_results
3662
+ total_number_of_selected_results: total_number_of_selected_results,
3663
+ choose_to_print: choose_to_print,
3664
+ exam_has_been_cancelled: exam_has_been_cancelled,
3665
+ or: or,
3666
+ sign_in_with_email: sign_in_with_email,
3667
+ please_check_your_mailbox: please_check_your_mailbox,
3668
+ otp_is_required: otp_is_required,
3669
+ min_is_1: min_is_1,
3670
+ max_is_6: max_is_6,
3671
+ must_be_number: must_be_number,
3672
+ sign_in_with_google_account: sign_in_with_google_account
3356
3673
  };
3357
3674
 
3358
3675
  var problem_solving$1 = "Problem Solving";
@@ -3392,6 +3709,7 @@ var there_are_no_recent_exams$1 = "There are no recent exams";
3392
3709
  var you_have_started_an_exam_with_code_code_do_you_want_to_continue$1 = "You have started an exam with code {{code}}, do you want to continue?";
3393
3710
  var here$1 = "here";
3394
3711
  var do_you_want_to_complete_the_exam$1 = "Do you want to complete the exam?";
3712
+ var do_you_want_to_cancel_the_exam$1 = "Do you want to cancel the exam? (All student results will be deleted)";
3395
3713
  var are_you_sure_you_want_to_delete_the_exam$1 = "Are you sure you want to delete the exam?";
3396
3714
  var are_you_sure_you_want_to_delete_the_textbook$1 = "Are you sure you want to delete the textbook?";
3397
3715
  var are_you_sure_you_want_to_delete_the_user$1 = "Are you sure you want to delete the user: {{user}}?";
@@ -3660,6 +3978,7 @@ var parent_name$1 = "Parent name";
3660
3978
  var users$1 = "Users";
3661
3979
  var new_user$1 = "New user";
3662
3980
  var academy_admin$1 = "Academy Admin";
3981
+ var super_admin$1 = "Super Admin";
3663
3982
  var switch_academy_admin$1 = "Switch Academy Admin";
3664
3983
  var switch_academy$1 = "Switch Academy";
3665
3984
  var there_are_no_lessons_this_week$1 = "There are no lessons this week";
@@ -3939,7 +4258,8 @@ var textbook_name_is_required$1 = "Textbook name is required";
3939
4258
  var textbook_subject_is_required$1 = "Textbook subject is required";
3940
4259
  var update_the_textbook_successfully$1 = "Update the textbook successfully";
3941
4260
  var create_the_textbook_successfully$1 = "Create the textbook successfully";
3942
- var finish_exam_successful$1 = "Finish exam successful";
4261
+ var finish_exam_successful$1 = "Finish exam successfully";
4262
+ var cancel_exam_successful$1 = "Cancel exam successfully";
3943
4263
  var you_has_been_kicked_out$1 = "You has been kicked out";
3944
4264
  var the_teacher_has_closed_or_deleted_the_exam$1 = "The teacher has closed or deleted the exam, please try again later";
3945
4265
  var check_in_lesson_successfully$1 = "Check in lesson successfully";
@@ -4020,6 +4340,7 @@ var added_date$1 = "Added date";
4020
4340
  var sync_exam_results$1 = "Sync exam results";
4021
4341
  var update_data_fail$1 = "Update data fail";
4022
4342
  var add_students_to_class$1 = "Add students to class";
4343
+ var add_teachers_to_class$1 = "Add teachers to class";
4023
4344
  var click_to_choose_file$1 = "Click to choose file";
4024
4345
  var exam_data$1 = "Exam Data";
4025
4346
  var questions_correct_rate$1 = "Questions Correct Rate";
@@ -4135,6 +4456,16 @@ var your_browser_must$1 = "Your browser must";
4135
4456
  var allowed_to_send_pop_ups_and_use_redirects$1 = "Allowed to send pop-ups and use redirects";
4136
4457
  var disable_ask_where_to_save_each_file_before_downloading$1 = "Disable ask where to save each file before downloading";
4137
4458
  var total_number_of_selected_results$1 = "Total number of selected results";
4459
+ var choose_to_print$1 = "Choose to print";
4460
+ var exam_has_been_cancelled$1 = "The exam has been cancelled";
4461
+ var or$1 = "Or";
4462
+ var sign_in_with_email$1 = "Sign in with email";
4463
+ var please_check_your_mailbox$1 = "Please check your mailbox";
4464
+ var otp_is_required$1 = "OTP is required";
4465
+ var min_is_1$1 = "Min is 1";
4466
+ var max_is_6$1 = "Max is 6";
4467
+ var must_be_number$1 = "Must be number";
4468
+ var sign_in_with_google_account$1 = "Sign in with google account";
4138
4469
  var lang_en = {
4139
4470
  problem_solving: problem_solving$1,
4140
4471
  my_story: my_story$1,
@@ -4175,6 +4506,7 @@ var lang_en = {
4175
4506
  you_have_started_an_exam_with_code_code_do_you_want_to_continue: you_have_started_an_exam_with_code_code_do_you_want_to_continue$1,
4176
4507
  here: here$1,
4177
4508
  do_you_want_to_complete_the_exam: do_you_want_to_complete_the_exam$1,
4509
+ do_you_want_to_cancel_the_exam: do_you_want_to_cancel_the_exam$1,
4178
4510
  are_you_sure_you_want_to_delete_the_exam: are_you_sure_you_want_to_delete_the_exam$1,
4179
4511
  are_you_sure_you_want_to_delete_the_textbook: are_you_sure_you_want_to_delete_the_textbook$1,
4180
4512
  are_you_sure_you_want_to_delete_the_user: are_you_sure_you_want_to_delete_the_user$1,
@@ -4440,6 +4772,7 @@ var lang_en = {
4440
4772
  users: users$1,
4441
4773
  new_user: new_user$1,
4442
4774
  academy_admin: academy_admin$1,
4775
+ super_admin: super_admin$1,
4443
4776
  switch_academy_admin: switch_academy_admin$1,
4444
4777
  switch_academy: switch_academy$1,
4445
4778
  there_are_no_lessons_this_week: there_are_no_lessons_this_week$1,
@@ -4715,6 +5048,7 @@ var lang_en = {
4715
5048
  update_the_textbook_successfully: update_the_textbook_successfully$1,
4716
5049
  create_the_textbook_successfully: create_the_textbook_successfully$1,
4717
5050
  finish_exam_successful: finish_exam_successful$1,
5051
+ cancel_exam_successful: cancel_exam_successful$1,
4718
5052
  you_has_been_kicked_out: you_has_been_kicked_out$1,
4719
5053
  the_teacher_has_closed_or_deleted_the_exam: the_teacher_has_closed_or_deleted_the_exam$1,
4720
5054
  check_in_lesson_successfully: check_in_lesson_successfully$1,
@@ -4796,6 +5130,7 @@ var lang_en = {
4796
5130
  sync_exam_results: sync_exam_results$1,
4797
5131
  update_data_fail: update_data_fail$1,
4798
5132
  add_students_to_class: add_students_to_class$1,
5133
+ add_teachers_to_class: add_teachers_to_class$1,
4799
5134
  click_to_choose_file: click_to_choose_file$1,
4800
5135
  exam_data: exam_data$1,
4801
5136
  questions_correct_rate: questions_correct_rate$1,
@@ -4908,7 +5243,17 @@ var lang_en = {
4908
5243
  your_browser_must: your_browser_must$1,
4909
5244
  allowed_to_send_pop_ups_and_use_redirects: allowed_to_send_pop_ups_and_use_redirects$1,
4910
5245
  disable_ask_where_to_save_each_file_before_downloading: disable_ask_where_to_save_each_file_before_downloading$1,
4911
- total_number_of_selected_results: total_number_of_selected_results$1
5246
+ total_number_of_selected_results: total_number_of_selected_results$1,
5247
+ choose_to_print: choose_to_print$1,
5248
+ exam_has_been_cancelled: exam_has_been_cancelled$1,
5249
+ or: or$1,
5250
+ sign_in_with_email: sign_in_with_email$1,
5251
+ please_check_your_mailbox: please_check_your_mailbox$1,
5252
+ otp_is_required: otp_is_required$1,
5253
+ min_is_1: min_is_1$1,
5254
+ max_is_6: max_is_6$1,
5255
+ must_be_number: must_be_number$1,
5256
+ sign_in_with_google_account: sign_in_with_google_account$1
4912
5257
  };
4913
5258
 
4914
5259
  i18n__default.use(reactI18next.initReactI18next).init({
@@ -5182,7 +5527,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
5182
5527
  return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
5183
5528
  });
5184
5529
  var isAdmin = role === exports.Role.Admin;
5185
- var isSuperAdmin = user && !user.academyDomain && ((_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.includes(exports.Role.Admin));
5530
+ var isSuperAdmin = user && (!user.academyDomain && ((_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.includes(exports.Role.Admin)) || user.isSuperAdmin);
5186
5531
  var _useTranslation = reactI18next.useTranslation(),
5187
5532
  t = _useTranslation.t;
5188
5533
  var _useState = React.useState(null),
@@ -6927,7 +7272,7 @@ var useMessageList = function useMessageList(_ref) {
6927
7272
  userId: (student === null || student === void 0 ? void 0 : student.id) || 0,
6928
7273
  action: RecentUserAction$1.ViewedQNA,
6929
7274
  data: "" + conversationId,
6930
- roles: [exports.Role.Teacher]
7275
+ isAdmin: !isTeacher
6931
7276
  })).then(function () {
6932
7277
  isFirst = false;
6933
7278
  });
@@ -7095,6 +7440,7 @@ var useChatContainer = function useChatContainer(props) {
7095
7440
  var _useState4 = React.useState(true),
7096
7441
  isScrollToEnd = _useState4[0],
7097
7442
  setScrollToEnd = _useState4[1];
7443
+ var isAdmin = roles === null || roles === void 0 ? void 0 : roles.includes(exports.Role.Admin);
7098
7444
  var _useMessageList = useMessageList({
7099
7445
  student: student
7100
7446
  }),
@@ -7220,9 +7566,6 @@ var useChatContainer = function useChatContainer(props) {
7220
7566
  if (!data) return;
7221
7567
  var parsedData = JSON.parse(data);
7222
7568
  if (parsedData.id) setSelectedConversation(JSON.parse(data));
7223
- console.log({
7224
- data: JSON.parse(data)
7225
- });
7226
7569
  };
7227
7570
  var handleLoadMoreMessages = function handleLoadMoreMessages() {
7228
7571
  try {
@@ -7289,11 +7632,11 @@ var useChatContainer = function useChatContainer(props) {
7289
7632
  var results = messages.map(function (i) {
7290
7633
  var _i$sender;
7291
7634
  return _extends({}, i, {
7292
- isMe: (infoUser === null || infoUser === void 0 ? void 0 : infoUser.id) === ((_i$sender = i.sender) === null || _i$sender === void 0 ? void 0 : _i$sender.id)
7635
+ isMe: isAdmin && !i.isStudent || (infoUser === null || infoUser === void 0 ? void 0 : infoUser.id) === ((_i$sender = i.sender) === null || _i$sender === void 0 ? void 0 : _i$sender.id)
7293
7636
  });
7294
7637
  });
7295
7638
  return results;
7296
- }, [JSON.stringify(messages), infoUser === null || infoUser === void 0 ? void 0 : infoUser.id]);
7639
+ }, [JSON.stringify(messages), infoUser === null || infoUser === void 0 ? void 0 : infoUser.id, isAdmin]);
7297
7640
  React.useEffect(function () {
7298
7641
  getMessageConversation();
7299
7642
  }, [JSON.stringify(selectedConversation)]);
@@ -10868,6 +11211,7 @@ var EXAM_RESULT = {
10868
11211
  topDuration: 180.939,
10869
11212
  answerResponseSignal: 0,
10870
11213
  isCorrect: false,
11214
+ score: 2,
10871
11215
  answerTime: "2024-03-13T04:29:00.685+00:00",
10872
11216
  article: 1,
10873
11217
  category: {
@@ -10889,6 +11233,7 @@ var EXAM_RESULT = {
10889
11233
  classAverageTime: 2.014,
10890
11234
  topDuration: 2.014,
10891
11235
  answerResponseSignal: 1,
11236
+ score: 2,
10892
11237
  isCorrect: false,
10893
11238
  answerTime: "2024-03-13T04:29:02.7+00:00",
10894
11239
  article: 1,
@@ -10911,6 +11256,7 @@ var EXAM_RESULT = {
10911
11256
  classAverageTime: 52.244,
10912
11257
  topDuration: 24.244,
10913
11258
  answerResponseSignal: 1,
11259
+ score: 2,
10914
11260
  isCorrect: false,
10915
11261
  answerTime: "2024-03-13T04:29:04.944+00:00",
10916
11262
  article: 1,
@@ -10933,6 +11279,7 @@ var EXAM_RESULT = {
10933
11279
  classAverageTime: 1.373,
10934
11280
  topDuration: 1.373,
10935
11281
  answerResponseSignal: 4,
11282
+ score: 2,
10936
11283
  isCorrect: true,
10937
11284
  answerTime: "2024-03-13T04:29:06.317+00:00",
10938
11285
  article: 1,
@@ -10955,6 +11302,7 @@ var EXAM_RESULT = {
10955
11302
  classAverageTime: 132.683,
10956
11303
  topDuration: 110.683,
10957
11304
  answerResponseSignal: 2,
11305
+ score: 2,
10958
11306
  isCorrect: false,
10959
11307
  answerTime: "2024-03-13T04:29:07+00:00",
10960
11308
  article: 1,
@@ -10977,6 +11325,7 @@ var EXAM_RESULT = {
10977
11325
  classAverageTime: 1.052,
10978
11326
  topDuration: 1.052,
10979
11327
  answerResponseSignal: 1,
11328
+ score: 2,
10980
11329
  isCorrect: true,
10981
11330
  answerTime: "2024-03-13T04:29:08.052+00:00",
10982
11331
  article: 2,
@@ -10999,6 +11348,7 @@ var EXAM_RESULT = {
10999
11348
  classAverageTime: 0,
11000
11349
  topDuration: null,
11001
11350
  answerResponseSignal: null,
11351
+ score: 2,
11002
11352
  isCorrect: false,
11003
11353
  answerTime: "0001-01-01T00:00:00+00:00",
11004
11354
  article: 2,
@@ -11021,6 +11371,7 @@ var EXAM_RESULT = {
11021
11371
  classAverageTime: 2.596,
11022
11372
  topDuration: 2.596,
11023
11373
  answerResponseSignal: 1,
11374
+ score: 2,
11024
11375
  isCorrect: false,
11025
11376
  answerTime: "2024-03-13T04:29:10.648+00:00",
11026
11377
  article: 2,
@@ -11043,6 +11394,7 @@ var EXAM_RESULT = {
11043
11394
  classAverageTime: 0.899,
11044
11395
  topDuration: 0.899,
11045
11396
  answerResponseSignal: 1,
11397
+ score: 2,
11046
11398
  isCorrect: false,
11047
11399
  answerTime: "2024-03-13T04:29:12.864+00:00",
11048
11400
  article: 2,
@@ -11066,6 +11418,7 @@ var EXAM_RESULT = {
11066
11418
  topDuration: 20.496,
11067
11419
  answerResponseSignal: 0,
11068
11420
  isCorrect: true,
11421
+ score: 2,
11069
11422
  answerTime: "2024-03-13T04:29:14.36+00:00",
11070
11423
  article: 2,
11071
11424
  category: {
@@ -11087,6 +11440,7 @@ var EXAM_RESULT = {
11087
11440
  classAverageTime: 0,
11088
11441
  topDuration: null,
11089
11442
  answerResponseSignal: null,
11443
+ score: 2,
11090
11444
  isCorrect: false,
11091
11445
  answerTime: "0001-01-01T00:00:00+00:00",
11092
11446
  article: 2,
@@ -11110,6 +11464,7 @@ var EXAM_RESULT = {
11110
11464
  topDuration: 1.317,
11111
11465
  answerResponseSignal: 1,
11112
11466
  isCorrect: true,
11467
+ score: 2,
11113
11468
  answerTime: "2024-03-13T04:29:11.965+00:00",
11114
11469
  article: 3,
11115
11470
  category: {
@@ -11131,6 +11486,7 @@ var EXAM_RESULT = {
11131
11486
  classAverageTime: 1.593,
11132
11487
  topDuration: 1.593,
11133
11488
  answerResponseSignal: 1,
11489
+ score: 2,
11134
11490
  isCorrect: false,
11135
11491
  answerTime: "2024-03-13T04:29:20.734+00:00",
11136
11492
  article: 3,
@@ -11153,6 +11509,7 @@ var EXAM_RESULT = {
11153
11509
  classAverageTime: 1.204,
11154
11510
  topDuration: 1.204,
11155
11511
  answerResponseSignal: 1,
11512
+ score: 2,
11156
11513
  isCorrect: false,
11157
11514
  answerTime: "2024-03-13T04:29:18.164+00:00",
11158
11515
  article: 3,
@@ -11175,6 +11532,7 @@ var EXAM_RESULT = {
11175
11532
  classAverageTime: 2.6,
11176
11533
  topDuration: 2.6,
11177
11534
  answerResponseSignal: 1,
11535
+ score: 2,
11178
11536
  isCorrect: false,
11179
11537
  answerTime: "2024-03-13T04:29:16.96+00:00",
11180
11538
  article: 3,
@@ -11197,6 +11555,7 @@ var EXAM_RESULT = {
11197
11555
  classAverageTime: 0.977,
11198
11556
  topDuration: 0.977,
11199
11557
  answerResponseSignal: 1,
11558
+ score: 2,
11200
11559
  isCorrect: true,
11201
11560
  answerTime: "2024-03-13T04:29:19.141+00:00",
11202
11561
  article: 3,
@@ -11605,23 +11964,11 @@ var getRecentUserActionListApi = function getRecentUserActionListApi(query) {
11605
11964
  params: _extends({}, query)
11606
11965
  });
11607
11966
  };
11608
- var createRecentUserActionListApi = function createRecentUserActionListApi(_ref) {
11609
- var userId = _ref.userId,
11610
- action = _ref.action,
11611
- data = _ref.data,
11612
- roles = _ref.roles;
11613
- return api.post("" + RECENT_USER_URL, {
11614
- userId: userId,
11615
- action: action,
11616
- data: data
11617
- }, {
11618
- params: {
11619
- roles: roles
11620
- }
11621
- });
11967
+ var createRecentUserActionListApi = function createRecentUserActionListApi(recentData) {
11968
+ return api.post("" + RECENT_USER_URL, recentData);
11622
11969
  };
11623
11970
 
11624
- var styles$4 = {"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","red_900":"#DB4D4D","green_support_900":"#3ACB46","yellow_900":"#FEAF06","purple_900":"#C3099A","titleBox":"_1dveO","title":"_mxRxf","point":"_2fD-F","buttonGroup":"_2DGl3","btnFeedback":"_xGW1x","btnTerminate":"_3mLu2","myanswer":"_eDBpS","titleMyAnswer1":"_2fMq3","titleMyAnswer2":"_3gEYh","contentMyAnswer":"_2K_sx","myAnswerItem":"_2qiLh","time":"_6TCOK","timeCol":"_hmseC","answer-response":"_3GfJt","answer-response-0":"_3ut64","answer-response-1":"_2VtpD","answer-response-2":"_58lQU","answer-response-3":"_1ucMY","answer-response-4":"_1qkxy","answerCorrect":"_2jIeT","answerIncorrect":"_to2v0","answerNograss":"_1JSte","answerEasy":"_2_uTU","answerDiscrimination":"_1DBoA","answerTrap":"_1q3tD","answerNoTime":"_3iItu","questionOrder":"_1fNkS","myTimeLabel":"_1Z_F3","myPoolTime":"_4KwG0","topTimeLabel":"_245H-","topTime":"_3tZqw","meanTimeLabel":"_PlPLY","meanTime":"_12a7R","compareChart":"_3MW16","prevChart":"_1fNkb","chart":"_3K4oY","nextChart":"_3YKBp","titleChart":"_13BVP","titleCompareGrass":"_o1txm","tableCompareGrass":"_bT5nf","thcolumn1":"_3Umg0","tdcolumn1":"_3dRMF","tdcolumn3":"_2tcBP","classification":"_1AFeb","wrapperProblem":"_oTqG7","titleProblem":"_35eIx","titleProblemClose":"_3t4HO","titleTrickyProblem":"_1-oxK","wrongQuestions":"_2dpMR","question":"_1lSOX","assignedQuestions":"_1ONUt","wrapperContent":"_nPoR0","content":"_2zmZn","contentColumn1":"_334SY","span1":"_3Lf-U","span2":"_ZpMot","contentColumn2":"_16P3l","duration":"_1kT28","topDuration":"_1fVRi","overallCorrectRate":"_3jLGe","answer":"_VsZ0K","contentVulnerable":"_QxKMy","wrappContentProblem":"_nnqpW","contentProblem":"_3Z1nV","labelProblem":"_36Xpx","name":"_3ZJQW","percent":"_2J3MK","slider":"_1MPdO","track":"_3CV_y","noData":"__g-ff","loading":"_3j485","table-responsive":"_2O6RX","form-label":"_1RYOQ","form-control":"_3VRVT","form-label-dialog":"_3oCSh","btn-cancel":"_3USKq","btn-register":"_3y_iD","pdfBtnBox":"_3xZHo","pdfBtn":"_1DtWq","form-select":"_1a_vw","loader":"_2uC7T","dot":"_Xz-Mr","bounce":"_3THgz"};
11971
+ var styles$4 = {"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","red_900":"#DB4D4D","green_support_900":"#3ACB46","yellow_900":"#FEAF06","purple_900":"#C3099A","titleBox":"_1dveO","title":"_mxRxf","point":"_2fD-F","buttonGroup":"_2DGl3","btnFeedback":"_xGW1x","btnTerminate":"_3mLu2","myanswer":"_eDBpS","titleMyAnswer1":"_2fMq3","titleMyAnswer2":"_3gEYh","contentMyAnswer":"_2K_sx","myAnswerItem":"_2qiLh","time":"_6TCOK","timeCol":"_hmseC","answer-response":"_3GfJt","answer-response-0":"_3ut64","answer-response-1":"_2VtpD","answer-response-2":"_58lQU","answer-response-3":"_1ucMY","answer-response-4":"_1qkxy","overall-response-1":"_1AeGu","overall-response-2":"_1xTB0","overall-response-3":"_3Yu_5","answerCorrect":"_2jIeT","answerIncorrect":"_to2v0","answerNograss":"_1JSte","answerEasy":"_2_uTU","answerDiscrimination":"_1DBoA","answerTrap":"_1q3tD","answerNoTime":"_3iItu","questionOrder":"_1fNkS","myTimeLabel":"_1Z_F3","myPoolTime":"_4KwG0","topTimeLabel":"_245H-","topTime":"_3tZqw","meanTimeLabel":"_PlPLY","meanTime":"_12a7R","compareChart":"_3MW16","prevChart":"_1fNkb","chart":"_3K4oY","nextChart":"_3YKBp","titleChart":"_13BVP","titleCompareGrass":"_o1txm","tableCompareGrass":"_bT5nf","thcolumn1":"_3Umg0","tdcolumn1":"_3dRMF","tdcolumn3":"_2tcBP","classification":"_1AFeb","wrapperProblem":"_oTqG7","titleProblem":"_35eIx","titleProblemClose":"_3t4HO","titleTrickyProblem":"_1-oxK","wrongQuestions":"_2dpMR","question":"_1lSOX","assignedQuestions":"_1ONUt","wrapperContent":"_nPoR0","content":"_2zmZn","contentColumn1":"_334SY","span1":"_3Lf-U","span2":"_ZpMot","contentColumn2":"_16P3l","duration":"_1kT28","topDuration":"_1fVRi","overallCorrectRate":"_3jLGe","answer":"_VsZ0K","contentVulnerable":"_QxKMy","wrappContentProblem":"_nnqpW","contentProblem":"_3Z1nV","labelProblem":"_36Xpx","name":"_3ZJQW","percent":"_2J3MK","slider":"_1MPdO","track":"_3CV_y","noData":"__g-ff","loading":"_3j485","table-responsive":"_2O6RX","form-label":"_1RYOQ","form-control":"_3VRVT","form-label-dialog":"_3oCSh","btn-cancel":"_3USKq","btn-register":"_3y_iD","pdfBtnBox":"_3xZHo","pdfBtn":"_1DtWq","form-select":"_1a_vw","loader":"_2uC7T","dot":"_Xz-Mr","bounce":"_3THgz"};
11625
11972
 
11626
11973
  var useExamResult = function useExamResult(props) {
11627
11974
  var _allSeries$dataChartI;
@@ -11641,6 +11988,7 @@ var useExamResult = function useExamResult(props) {
11641
11988
  });
11642
11989
  var roles = (user === null || user === void 0 ? void 0 : user.roles) || [];
11643
11990
  var isStudent = roles === null || roles === void 0 ? void 0 : roles.includes(exports.Role.Student);
11991
+ var isAdmin = roles === null || roles === void 0 ? void 0 : roles.includes(exports.Role.Admin);
11644
11992
  var examCode = query.get("examCode") || code;
11645
11993
  var language = reactRedux.useSelector(function (state) {
11646
11994
  var _state$common2;
@@ -11725,14 +12073,14 @@ var useExamResult = function useExamResult(props) {
11725
12073
  setCategoryResponses(((_result$4$data2 = result[4].data) === null || _result$4$data2 === void 0 ? void 0 : _result$4$data2.data) || []);
11726
12074
  return isStudent ? _temp3(!isStudent && createRecentUserActionListApi({
11727
12075
  userId: studentId,
11728
- action: RecentUserAction$1.ViewedExamResult,
12076
+ action: isPrint ? RecentUserAction$1.PrintedExamResult : RecentUserAction$1.ViewedExamResult,
11729
12077
  data: "" + examSessionId,
11730
- roles: [exports.Role.Teacher]
12078
+ isAdmin: isAdmin
11731
12079
  })) : Promise.resolve(!isStudent && createRecentUserActionListApi({
11732
12080
  userId: studentId,
11733
- action: RecentUserAction$1.ViewedExamResult,
12081
+ action: isPrint ? RecentUserAction$1.PrintedExamResult : RecentUserAction$1.ViewedExamResult,
11734
12082
  data: "" + examSessionId,
11735
- roles: [exports.Role.Teacher]
12083
+ isAdmin: isAdmin
11736
12084
  })).then(_temp3);
11737
12085
  });
11738
12086
  }, function (error) {
@@ -13314,8 +13662,8 @@ var iconWarning = function iconWarning(_ref) {
13314
13662
  }));
13315
13663
  };
13316
13664
 
13317
- var schema$1 = yup.object().shape({
13318
- content: yup.string().required()
13665
+ var schema$1 = Yup.object().shape({
13666
+ content: Yup.string().required()
13319
13667
  });
13320
13668
  function CreateNewQuestionDialog(_ref) {
13321
13669
  var handleCreateQuestion = _ref.handleCreateQuestion,
@@ -13490,6 +13838,9 @@ function MyAnswer(_ref) {
13490
13838
  if (diff > 0) prefix = "+";
13491
13839
  return "" + prefix + formatTimeSecond(Math.abs(diff), t);
13492
13840
  };
13841
+ var getOverallColorClassName = function getOverallColorClassName(correctRate) {
13842
+ return styles$4["overall-response-" + (correctRate < 40 ? 1 : correctRate <= 70 ? 2 : 3)];
13843
+ };
13493
13844
  var renderQuestions = function renderQuestions(questions) {
13494
13845
  return questions.map(function (question, index) {
13495
13846
  var _questions;
@@ -13572,7 +13923,7 @@ function MyAnswer(_ref) {
13572
13923
  style: {
13573
13924
  margin: 0
13574
13925
  },
13575
- className: styles$4["answer-response"] + " " + styles$4["answer-response-" + question.answerResponseSignal]
13926
+ className: styles$4["answer-response"] + " " + getOverallColorClassName(question.overallCorrectRate)
13576
13927
  }, question.overallCorrectRate.toFixed(2) + "%") : React__default.createElement("p", {
13577
13928
  style: {
13578
13929
  margin: 0
@@ -14509,8 +14860,8 @@ var useCreateQuestionDialog$1 = function useCreateQuestionDialog() {
14509
14860
  };
14510
14861
  };
14511
14862
 
14512
- var schema$2 = yup.object().shape({
14513
- content: yup.string().required()
14863
+ var schema$2 = Yup.object().shape({
14864
+ content: Yup.string().required()
14514
14865
  });
14515
14866
  function CreateNewQuestionDialog$1(_ref) {
14516
14867
  var handleCreateQuestion = _ref.handleCreateQuestion,
@@ -14694,7 +15045,7 @@ var usePrintExamResult = function usePrintExamResult(isDataFetching, fileName, t
14694
15045
  var autoPrintPdf = function autoPrintPdf() {
14695
15046
  if (printState === PrintState.Printing) return;
14696
15047
  if (autoPrint && printState !== PrintState.Default) return;
14697
- if (totalChart !== renderedCharts.length) {
15048
+ if (totalChart !== 0 && totalChart !== renderedCharts.length) {
14698
15049
  !autoPrint && setPrintState(PrintState.Pending);
14699
15050
  return;
14700
15051
  }
@@ -14823,6 +15174,8 @@ var studentNameStyle = {
14823
15174
  var PrintExamResult = function PrintExamResult(_ref) {
14824
15175
  var resultData = _ref.resultData,
14825
15176
  examTime = _ref.examTime,
15177
+ status = _ref.status,
15178
+ isShow = _ref.isShow,
14826
15179
  isStudent = _ref.isStudent,
14827
15180
  categoryResponses = _ref.categoryResponses,
14828
15181
  timelyOrderQuestions = _ref.timelyOrderQuestions,
@@ -14950,7 +15303,7 @@ var PrintExamResult = function PrintExamResult(_ref) {
14950
15303
  fontWeight: 600,
14951
15304
  color: styles.gray_700
14952
15305
  }
14953
- }, resultData === null || resultData === void 0 ? void 0 : resultData.teacherName)))))), React__default.createElement(material.Stack, {
15306
+ }, resultData === null || resultData === void 0 ? void 0 : resultData.teacherName)))))), (!status || (isShow === null || isShow === void 0 ? void 0 : isShow(TabList[0].value))) && React__default.createElement(material.Stack, {
14954
15307
  display: "flex",
14955
15308
  flexDirection: "column",
14956
15309
  gap: "12px"
@@ -14960,7 +15313,7 @@ var PrintExamResult = function PrintExamResult(_ref) {
14960
15313
  data: resultData,
14961
15314
  categories: categoryResponses,
14962
15315
  isStudent: isStudent
14963
- })), React__default.createElement(material.Stack, {
15316
+ })), (!status || (isShow === null || isShow === void 0 ? void 0 : isShow(TabList[1].value))) && React__default.createElement(material.Stack, {
14964
15317
  display: "flex",
14965
15318
  flexDirection: "column",
14966
15319
  gap: "12px",
@@ -14987,7 +15340,7 @@ var PrintExamResult = function PrintExamResult(_ref) {
14987
15340
  series: allSeries[index],
14988
15341
  setIsRendered: setRenderedChart
14989
15342
  });
14990
- })), React__default.createElement(material.Stack, {
15343
+ })), (!status || (isShow === null || isShow === void 0 ? void 0 : isShow(TabList[2].value))) && React__default.createElement(material.Stack, {
14991
15344
  display: "flex",
14992
15345
  flexDirection: "column",
14993
15346
  gap: "12px",
@@ -14996,7 +15349,7 @@ var PrintExamResult = function PrintExamResult(_ref) {
14996
15349
  sx: textStyle
14997
15350
  }, i18n.t(TabList[2].label)), React__default.createElement(CompareGrass, {
14998
15351
  effectSize: effectSize
14999
- })), React__default.createElement(material.Stack, {
15352
+ })), (!status || (isShow === null || isShow === void 0 ? void 0 : isShow(TabList[3].value))) && React__default.createElement(material.Stack, {
15000
15353
  display: "flex",
15001
15354
  flexDirection: "column",
15002
15355
  gap: "12px",
@@ -15385,29 +15738,6 @@ var times = {
15385
15738
  getRemainTime: getRemainTime
15386
15739
  };
15387
15740
 
15388
- var SIGN_IN_SUPER_ADMIN_URL = SUPER_ADMIN_BASE_URL + "/api/auth/login";
15389
- var SIGN_IN_URL = BASE_URL + "/api/auth/login";
15390
- var signInApi = function signInApi(_ref) {
15391
- var email = _ref.email,
15392
- password = _ref.password,
15393
- role = _ref.role;
15394
- return api.post(SIGN_IN_URL + "/demo", {
15395
- email: email,
15396
- password: password,
15397
- role: role
15398
- });
15399
- };
15400
- var signInSuperAdminApi = function signInSuperAdminApi(_ref2) {
15401
- var email = _ref2.email,
15402
- password = _ref2.password,
15403
- role = _ref2.role;
15404
- return api.post(SIGN_IN_SUPER_ADMIN_URL + "/demo", {
15405
- email: email,
15406
- password: password,
15407
- role: role
15408
- });
15409
- };
15410
-
15411
15741
  var PAGE_TITLE$2 = "sign_in";
15412
15742
  var useLogin$2 = function useLogin(_ref) {
15413
15743
  var history = _ref.history,
@@ -16615,6 +16945,15 @@ var usePrintView = function usePrintView(_ref) {
16615
16945
  var _useState = React.useState(false),
16616
16946
  isDone = _useState[0],
16617
16947
  setDone = _useState[1];
16948
+ var _useLocation = reactRouterDom.useLocation(),
16949
+ search = _useLocation.search;
16950
+ var query = new URLSearchParams(search);
16951
+ var status = query.get('status') || '';
16952
+ var isShow = function isShow(value) {
16953
+ return (status === null || status === void 0 ? void 0 : status.split(',').some(function (i) {
16954
+ return i === value.toString();
16955
+ })) || false;
16956
+ };
16618
16957
  var handelPrintSuccess = function handelPrintSuccess() {
16619
16958
  var _window$opener$postMe, _window$opener;
16620
16959
  var data;
@@ -16661,6 +17000,8 @@ var usePrintView = function usePrintView(_ref) {
16661
17000
  return {
16662
17001
  fileName: fileName,
16663
17002
  isDone: isDone,
17003
+ status: status,
17004
+ isShow: isShow,
16664
17005
  handelPrintSuccess: handelPrintSuccess,
16665
17006
  handelPrintError: handelPrintError
16666
17007
  };
@@ -16729,9 +17070,11 @@ var PrintExamResultView = function PrintExamResultView(_ref) {
16729
17070
  }),
16730
17071
  fileName = _usePrintView.fileName,
16731
17072
  isDone = _usePrintView.isDone,
17073
+ status = _usePrintView.status,
17074
+ isShow = _usePrintView.isShow,
16732
17075
  handelPrintSuccess = _usePrintView.handelPrintSuccess,
16733
17076
  handelPrintError = _usePrintView.handelPrintError;
16734
- var _usePrintExamResult = usePrintExamResult(isLoading, fileName, timelyOrderQuestions.length, handelPrintSuccess, handelPrintError, true),
17077
+ var _usePrintExamResult = usePrintExamResult(isLoading, fileName, !status || isShow !== null && isShow !== void 0 && isShow(TabList[1].value) ? timelyOrderQuestions.length : 0, handelPrintSuccess, handelPrintError, true),
16735
17078
  contentRef = _usePrintExamResult.contentRef,
16736
17079
  setRenderedChart = _usePrintExamResult.setRenderedChart;
16737
17080
  var isTabletUp = material.useMediaQuery("(min-width:900px)");
@@ -16754,6 +17097,8 @@ var PrintExamResultView = function PrintExamResultView(_ref) {
16754
17097
  timelyOrderQuestions: timelyOrderQuestions,
16755
17098
  isMyStoryStudent: isMyStoryStudent,
16756
17099
  fileName: fileName,
17100
+ isShow: isShow,
17101
+ status: status,
16757
17102
  setRenderedChart: setRenderedChart
16758
17103
  }) : isLoading === undefined || isLoading === true ? React__default.createElement(LoadingComponent, {
16759
17104
  isLoading: !!isLoading,
@@ -16776,6 +17121,20 @@ var PrintState$1;
16776
17121
  PrintState[PrintState["Paused"] = 3] = "Paused";
16777
17122
  })(PrintState$1 || (PrintState$1 = {}));
16778
17123
 
17124
+ var TabList$1 = [{
17125
+ label: "comprehensive_analysis",
17126
+ value: 0
17127
+ }, {
17128
+ label: "solution_order",
17129
+ value: 1
17130
+ }, {
17131
+ label: "compare_solution",
17132
+ value: 2
17133
+ }, {
17134
+ label: "problem_analysis",
17135
+ value: 3
17136
+ }];
17137
+
16779
17138
  var TOTAL = 3;
16780
17139
  var PrintExamView2 = function PrintExamView2(_ref) {
16781
17140
  var history = _ref.history,
@@ -16810,7 +17169,23 @@ var PrintExamView2 = function PrintExamView2(_ref) {
16810
17169
  var _useState5 = React.useState([]),
16811
17170
  errorLinks = _useState5[0],
16812
17171
  setErrorLinks = _useState5[1];
17172
+ var _useState6 = React.useState([]),
17173
+ status = _useState6[0],
17174
+ setStatus = _useState6[1];
16813
17175
  var theme = material.useTheme();
17176
+ var handleChangeStatus = function handleChangeStatus(event) {
17177
+ if (event.target.checked) {
17178
+ setStatus(function (prev) {
17179
+ var _event$target;
17180
+ return [].concat(prev, [(_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.value]);
17181
+ });
17182
+ } else setStatus(function (prev) {
17183
+ return prev === null || prev === void 0 ? void 0 : prev.filter(function (i) {
17184
+ var _event$target2;
17185
+ return i !== ((_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.value);
17186
+ });
17187
+ });
17188
+ };
16814
17189
  var handleProgressPrint = function handleProgressPrint() {
16815
17190
  setData(dataProps);
16816
17191
  setCompleted([]);
@@ -16818,6 +17193,9 @@ var PrintExamView2 = function PrintExamView2(_ref) {
16818
17193
  setErrorLinks([]);
16819
17194
  setState(PrintState$1.Printing);
16820
17195
  };
17196
+ console.log({
17197
+ status: status
17198
+ });
16821
17199
  var print = function print(_ref2) {
16822
17200
  var examSessionId = _ref2.examSessionId,
16823
17201
  studentId = _ref2.studentId,
@@ -16826,7 +17204,7 @@ var PrintExamView2 = function PrintExamView2(_ref) {
16826
17204
  var height = 200;
16827
17205
  var left = window.screenX + window.outerWidth / 2 - width / 2;
16828
17206
  var top = window.screenY + window.outerHeight / 2 - height / 2;
16829
- var url = isTeacher ? window.location.origin + "/teacher/exam-results/" + examSessionId + "/students/" + studentId + "/print" : window.location.origin + "/student/exam-results/" + code + "/print";
17207
+ var url = isTeacher ? window.location.origin + "/teacher/exam-results/" + examSessionId + "/students/" + studentId + "/print?status=" + status.join(",") : window.location.origin + "/student/exam-results/" + code + "/print";
16830
17208
  var windowName = isTeacher ? "popup-" + examSessionId + "-" + studentId : "popup-" + code;
16831
17209
  var windowSpecs = "left=" + left + ",top=" + top + ",width=" + width + ",height=" + height + ",location=yes,resizable=yes,scrollbars=yes,status=yes";
16832
17210
  var childWindow = window.open(url, windowName, windowSpecs);
@@ -16988,13 +17366,115 @@ var PrintExamView2 = function PrintExamView2(_ref) {
16988
17366
  disablePadding: true
16989
17367
  }, t("allowed_to_send_pop_ups_and_use_redirects")), React__default.createElement(material.ListItem, {
16990
17368
  disablePadding: true
16991
- }, t("disable_ask_where_to_save_each_file_before_downloading")))), React__default.createElement(material.Button, {
17369
+ }, t("disable_ask_where_to_save_each_file_before_downloading")))), isTeacher && React__default.createElement(material.Stack, null, React__default.createElement(material.Typography, {
17370
+ fontWeight: 700
17371
+ }, t("choose_to_print"), ":"), React__default.createElement(material.FormGroup, {
17372
+ sx: {
17373
+ display: "flex",
17374
+ flexDirection: "row",
17375
+ gap: 1,
17376
+ flexWrap: "wrap"
17377
+ }
17378
+ }, TabList$1.map(function (_ref3) {
17379
+ var label = _ref3.label,
17380
+ value = _ref3.value;
17381
+ return React__default.createElement(material.FormControlLabel, {
17382
+ control: React__default.createElement(material.Checkbox, {
17383
+ onChange: handleChangeStatus,
17384
+ value: value,
17385
+ checked: status.some(function (i) {
17386
+ return i === value.toString();
17387
+ })
17388
+ }),
17389
+ label: t(label)
17390
+ });
17391
+ }))), React__default.createElement(material.Button, {
16992
17392
  className: "mt-3",
16993
17393
  variant: "contained",
16994
17394
  onClick: handleProgressPrint
16995
17395
  }, t("print_pdf"))));
16996
17396
  };
16997
17397
 
17398
+ var urlSafeFormat = function urlSafeFormat(text) {
17399
+ return text.replaceAll(' ', "+");
17400
+ };
17401
+
17402
+ var useLoginWithEmail = function useLoginWithEmail(_ref) {
17403
+ var history = _ref.history,
17404
+ homeAcademyUrl = _ref.homeAcademyUrl,
17405
+ homeUrl = _ref.homeUrl,
17406
+ registerUrl = _ref.registerUrl,
17407
+ role = _ref.role;
17408
+ var _useLocation = reactRouterDom.useLocation(),
17409
+ searchLocation = _useLocation.search;
17410
+ var _useTranslation = reactI18next.useTranslation(),
17411
+ t = _useTranslation.t;
17412
+ var searchParams = new URLSearchParams(searchLocation);
17413
+ var key = urlSafeFormat(searchParams.get("key") || "");
17414
+ var dispatch = reactRedux.useDispatch();
17415
+ var paramDomain = searchParams.get("domain");
17416
+ var academyDomainStorage = getAcademyDomain();
17417
+ var academyDomain = paramDomain || academyDomainStorage || "";
17418
+ var handleSignIn = function handleSignIn() {
17419
+ try {
17420
+ var _temp2 = function _temp2() {
17421
+ dispatch(setLoading(false));
17422
+ };
17423
+ dispatch(setLoading(true));
17424
+ var _temp = _catch(function () {
17425
+ return Promise.resolve(signInWithKeyApi({
17426
+ academyDomain: academyDomain,
17427
+ key: key,
17428
+ role: role
17429
+ })).then(function (res) {
17430
+ var loginResponse = res === null || res === void 0 ? void 0 : res.data;
17431
+ var isFirstLogin = loginResponse.isFirstLogin,
17432
+ token = loginResponse.token,
17433
+ user = loginResponse.user;
17434
+ var isAcademy = !!(user !== null && user !== void 0 && user.academyDomain);
17435
+ var needToRegister = isFirstLogin && isAcademy;
17436
+ var redirectUrl = needToRegister ? registerUrl : isAcademy ? homeAcademyUrl : homeUrl;
17437
+ redirectLoginUser(user, token, redirectUrl);
17438
+ });
17439
+ }, function (error) {
17440
+ console.log(error);
17441
+ reactToastify.toast.error(getErrorMessage(t, error, t("request_login_fail")));
17442
+ });
17443
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
17444
+ } catch (e) {
17445
+ return Promise.reject(e);
17446
+ }
17447
+ };
17448
+ var redirectLoginUser = function redirectLoginUser(data, token, redirectUrl) {
17449
+ localStorage.setItem(ACCESS_TOKEN, token);
17450
+ !data.academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
17451
+ !!data.academyDomain && localStorage.setItem(ACADEMY_DOMAIN, data.academyDomain);
17452
+ dispatch(setUser(_extends({}, data)));
17453
+ if (redirectUrl) pushTo(history, redirectUrl);
17454
+ };
17455
+ React.useEffect(function () {
17456
+ if (!key) return;
17457
+ handleSignIn();
17458
+ });
17459
+ return {};
17460
+ };
17461
+
17462
+ var LoginWithEmail = function LoginWithEmail(_ref) {
17463
+ var history = _ref.history,
17464
+ homeAcademyUrl = _ref.homeAcademyUrl,
17465
+ homeUrl = _ref.homeUrl,
17466
+ registerUrl = _ref.registerUrl,
17467
+ role = _ref.role;
17468
+ useLoginWithEmail({
17469
+ history: history,
17470
+ homeAcademyUrl: homeAcademyUrl,
17471
+ homeUrl: homeUrl,
17472
+ registerUrl: registerUrl,
17473
+ role: role
17474
+ });
17475
+ return React__default.createElement(Loading, null);
17476
+ };
17477
+
16998
17478
  exports.moment = moment;
16999
17479
  Object.defineProperty(exports, 'I18nextProvider', {
17000
17480
  enumerable: true,
@@ -17054,6 +17534,7 @@ exports.LayoutContext = LayoutContext;
17054
17534
  exports.Loading = Loading;
17055
17535
  exports.LoadingComponent = LoadingComponent;
17056
17536
  exports.Login = Login;
17537
+ exports.LoginWithEmail = LoginWithEmail;
17057
17538
  exports.LoginWithPassword = SignIn;
17058
17539
  exports.NotFound = NotFound;
17059
17540
  exports.PUSHER_CONFIG = PUSHER_CONFIG;