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.
@@ -1,16 +1,20 @@
1
1
  import { createAction, createReducer, configureStore } from '@reduxjs/toolkit';
2
2
  import moment from 'moment';
3
3
  export { default as moment } from 'moment';
4
- import React__default, { useState, useCallback, useEffect, Fragment as Fragment$1, useMemo, useRef, createElement } from 'react';
4
+ import React__default, { useEffect, useState, useCallback, Fragment as Fragment$1, useMemo, useRef, createElement } from 'react';
5
5
  import { Formik, Form, Field } from 'formik';
6
- import { object, string, boolean } from 'yup';
6
+ import { object, string, number } from 'yup';
7
7
  import GoogleLogin, { useGoogleLogout } from '@leecheuk/react-google-login';
8
8
  import { useDispatch, useSelector } from 'react-redux';
9
9
  import axios from 'axios';
10
10
  import { useTranslation, initReactI18next } from 'react-i18next';
11
11
  export { I18nextProvider, useTranslation } from 'react-i18next';
12
- import { Paper, Card, Stack, Grid, Dialog, DialogTitle, IconButton, DialogContent, TextField, DialogActions, Button, Box, Typography, Pagination, styled, useTheme, useMediaQuery, MenuList, Tooltip, tooltipClasses, ClickAwayListener, CircularProgress, FormControl, RadioGroup, FormControlLabel, Radio, FormGroup, FormLabel, Checkbox, InputLabel, Container, Table, TableBody, TableRow, TableCell, TableHead, InputBase, List, ListItem } from '@mui/material';
12
+ import { Paper, Card, Stack, Box, Typography, TextField, Button, Grid, Dialog, DialogTitle, IconButton, DialogContent, DialogActions, Pagination, styled, useTheme, useMediaQuery, MenuList, Tooltip, tooltipClasses, ClickAwayListener, CircularProgress, FormControl, RadioGroup, FormControlLabel, Radio, FormGroup, FormLabel, Checkbox, InputLabel, Container, Table, TableBody, TableRow, TableCell, TableHead, InputBase, List, ListItem } from '@mui/material';
13
+ import { blue } from '@mui/material/colors';
14
+ import { GoogleReCaptcha, GoogleReCaptchaProvider } from 'react-google-recaptcha-v3';
13
15
  import { gapi } from 'gapi-script';
16
+ import { toast } from 'react-toastify';
17
+ export { ToastContainer, toast } from 'react-toastify';
14
18
  import 'moment/locale/ko.js';
15
19
  import 'moment/locale/en-au.js';
16
20
  import Pusher from 'pusher-js';
@@ -21,8 +25,6 @@ import Popover from '@mui/material/Popover';
21
25
  import MenuItem from '@mui/material/MenuItem';
22
26
  import IconButton$1 from '@mui/material/IconButton';
23
27
  import { GoArrowSwitch } from 'react-icons/go';
24
- import { toast } from 'react-toastify';
25
- export { ToastContainer, toast } from 'react-toastify';
26
28
  import Select, { components } from 'react-select';
27
29
  import { FaCaretDown, FaTrash, FaPlus, FaSave, FaPencilAlt, FaPlusCircle, FaTimes, FaSortUp, FaSortDown, FaEye } from 'react-icons/fa';
28
30
  import { PiDotsNineLight } from 'react-icons/pi';
@@ -471,14 +473,16 @@ var useLogin = function useLogin(history, homeAcademyUrl, homeUrl, registerUrl)
471
473
  return Promise.resolve(apiLogin()).then(function (loginResponse) {
472
474
  var isFirstLogin = loginResponse.isFirstLogin,
473
475
  token = loginResponse.token,
474
- user = loginResponse.user;
476
+ user = loginResponse.user,
477
+ isSuperAdmin = loginResponse.isSuperAdmin;
475
478
  var isAcademy = !!(user !== null && user !== void 0 && user.academyDomain);
476
479
  var needToRegister = isStudent && isFirstLogin && isAcademy;
477
480
  var redirectUrl = getRedirectUrl();
478
481
  if (isStudent && !registerUrl) throw new Error("an_unexpected_error_has_occurred");
479
482
  if (!redirectUrl) redirectUrl = needToRegister ? registerUrl : isAcademy ? homeAcademyUrl : homeUrl;
480
483
  redirectLoginUser(_extends({}, user, {
481
- isNotEnoughStatements: isFirstLogin
484
+ isNotEnoughStatements: isFirstLogin,
485
+ isSuperAdmin: isSuperAdmin
482
486
  }), token, redirectUrl);
483
487
  });
484
488
  }, function (error) {
@@ -711,20 +715,33 @@ var SloganFullLogoEn = function SloganFullLogoEn(_ref) {
711
715
  }))));
712
716
  };
713
717
 
714
- var schema = object({
715
- email: string().email("Email is invalid").required("Email is required"),
716
- password: string().required("Password is required"),
717
- rememberMe: boolean()
718
- });
719
- var BlockLogin = function BlockLogin(_ref) {
720
- var defaultInfo = _ref.defaultInfo,
721
- history = _ref.history,
722
- _ref$role = _ref.role,
723
- role = _ref$role === void 0 ? Role.Student : _ref$role,
724
- homeAcademyUrl = _ref.homeAcademyUrl,
725
- homeUrl = _ref.homeUrl,
726
- registerUrl = _ref.registerUrl,
727
- clientId = _ref.clientId;
718
+ var schema = function schema(t, isOTP) {
719
+ return object({
720
+ email: string().when([], function (_ref, schema) {
721
+ return !isOTP ? schema.email(t("invalid_email_address")).required(t("email_is_required")) : schema;
722
+ }),
723
+ otp: number().typeError(t("must_be_number")).when([], function (_ref2, schema) {
724
+ return isOTP ? schema.required(t("otp_is_required")).positive().integer() : schema;
725
+ })
726
+ });
727
+ };
728
+ var BlockLogin = function BlockLogin(_ref3) {
729
+ var isOTP = _ref3.isOTP,
730
+ isEmail = _ref3.isEmail,
731
+ defaultInfo = _ref3.defaultInfo,
732
+ onVerify = _ref3.onVerify,
733
+ tokenReCaptcha = _ref3.tokenReCaptcha,
734
+ refreshReCaptcha = _ref3.refreshReCaptcha,
735
+ handleSwitchOTP = _ref3.handleSwitchOTP,
736
+ handleSwitchEmail = _ref3.handleSwitchEmail,
737
+ history = _ref3.history,
738
+ _ref3$role = _ref3.role,
739
+ role = _ref3$role === void 0 ? Role.Student : _ref3$role,
740
+ homeAcademyUrl = _ref3.homeAcademyUrl,
741
+ homeUrl = _ref3.homeUrl,
742
+ registerUrl = _ref3.registerUrl,
743
+ clientId = _ref3.clientId,
744
+ onSubmit = _ref3.onSubmit;
728
745
  var language = useSelector(function (state) {
729
746
  var _state$common;
730
747
  return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.language;
@@ -769,19 +786,32 @@ var BlockLogin = function BlockLogin(_ref) {
769
786
  sx: {
770
787
  gap: 4,
771
788
  p: 6,
772
- display: 'flex',
773
- flexDirection: 'column',
774
- alignItems: 'center'
789
+ display: "flex",
790
+ flexDirection: "column",
791
+ alignItems: "center"
775
792
  }
776
793
  }, React__default.createElement(Formik, {
777
794
  initialValues: defaultInfo,
778
- validationSchema: schema,
779
- onSubmit: function onSubmit() {}
780
- }, function (formikProps) {
781
- var handleSubmit = formikProps.handleSubmit;
782
- return React__default.createElement("form", {
783
- onSubmit: handleSubmit
784
- }, React__default.createElement("div", {
795
+ validationSchema: function validationSchema() {
796
+ return schema(t, isOTP);
797
+ },
798
+ onSubmit: onSubmit
799
+ }, function (_ref4) {
800
+ var errors = _ref4.errors,
801
+ values = _ref4.values,
802
+ setFieldValue = _ref4.setFieldValue;
803
+ console.log({
804
+ errors: errors,
805
+ values: values
806
+ });
807
+ useEffect(function () {
808
+ if (isOTP) {
809
+ setFieldValue("email", "");
810
+ } else {
811
+ setFieldValue("otp", "");
812
+ }
813
+ }, [isOTP, isEmail]);
814
+ return React__default.createElement(Form, null, React__default.createElement("div", {
785
815
  className: "" + styles["block-form"]
786
816
  }, React__default.createElement(Stack, {
787
817
  py: 2,
@@ -791,7 +821,7 @@ var BlockLogin = function BlockLogin(_ref) {
791
821
  width: "300px"
792
822
  }) : React__default.createElement(SloganFullLogoEn, {
793
823
  width: "300px"
794
- })), React__default.createElement("div", {
824
+ })), !isOTP && !isEmail && React__default.createElement("div", {
795
825
  className: "p-0 mt-1 mb-4"
796
826
  }, React__default.createElement(GoogleLogin, {
797
827
  clientId: clientId,
@@ -801,18 +831,152 @@ var BlockLogin = function BlockLogin(_ref) {
801
831
  cookiePolicy: "single_host_origin",
802
832
  className: "" + styles["btn-login-google"],
803
833
  isSignedIn: true
804
- }))));
834
+ }), React__default.createElement(Box, {
835
+ onClick: function onClick() {
836
+ return handleSwitchEmail(true);
837
+ },
838
+ sx: {
839
+ cursor: "pointer",
840
+ my: 4
841
+ }
842
+ }, React__default.createElement(Typography, {
843
+ fontSize: "14px",
844
+ fontWeight: 700,
845
+ color: blue[700]
846
+ }, t("sign_in_with_email"))))), (isEmail || isOTP) && React__default.createElement(Stack, null, !isOTP ? React__default.createElement(Stack, {
847
+ flexDirection: "column",
848
+ gap: 1
849
+ }, React__default.createElement(Typography, {
850
+ fontWeight: 700,
851
+ fontSize: "14px"
852
+ }, t("email")), React__default.createElement(Field, {
853
+ name: "email",
854
+ render: function render(_ref5) {
855
+ var field = _ref5.field;
856
+ return React__default.createElement(TextField, Object.assign({}, field));
857
+ }
858
+ }), !!(errors !== null && errors !== void 0 && errors.email) && React__default.createElement(Typography, {
859
+ fontWeight: 500,
860
+ fontSize: "10px",
861
+ lineHeight: "11.93px",
862
+ color: !(errors !== null && errors !== void 0 && errors.email) ? "#97A1AF" : "#F34B4B"
863
+ }, errors === null || errors === void 0 ? void 0 : errors.email)) : React__default.createElement(Stack, {
864
+ flexDirection: "column",
865
+ gap: 1
866
+ }, React__default.createElement(Typography, {
867
+ fontWeight: 700,
868
+ fontSize: "14px"
869
+ }, t("OTP")), React__default.createElement(Field, {
870
+ name: "otp",
871
+ render: function render(_ref6) {
872
+ var field = _ref6.field;
873
+ return React__default.createElement(TextField, Object.assign({}, field));
874
+ }
875
+ }), !!(errors !== null && errors !== void 0 && errors.otp) && React__default.createElement(Typography, {
876
+ fontWeight: 500,
877
+ fontSize: "10px",
878
+ lineHeight: "11.93px",
879
+ color: !(errors !== null && errors !== void 0 && errors.otp) ? "#97A1AF" : "#F34B4B"
880
+ }, errors === null || errors === void 0 ? void 0 : errors.otp)), React__default.createElement(Stack, {
881
+ flexDirection: "row",
882
+ alignItems: "center",
883
+ gap: 2,
884
+ my: 2
885
+ }, React__default.createElement(GoogleReCaptcha, {
886
+ onVerify: onVerify,
887
+ refreshReCaptcha: refreshReCaptcha
888
+ })), React__default.createElement(Box, {
889
+ onClick: function onClick() {
890
+ handleSwitchEmail(false);
891
+ handleSwitchOTP(false);
892
+ },
893
+ sx: {
894
+ cursor: "pointer",
895
+ my: 2
896
+ }
897
+ }, React__default.createElement(Typography, {
898
+ fontSize: "14px",
899
+ fontWeight: 700,
900
+ color: blue[700]
901
+ }, t("sign_in_with_google_account"))), React__default.createElement(Stack, {
902
+ flexDirection: "row",
903
+ justifyContent: "end",
904
+ gap: 1,
905
+ mt: 2
906
+ }, React__default.createElement(Button, {
907
+ variant: "contained",
908
+ color: "primary",
909
+ type: "submit",
910
+ disabled: !tokenReCaptcha
911
+ }, t("submit")))));
805
912
  })));
806
913
  };
807
914
 
915
+ var SIGN_IN_SUPER_ADMIN_URL = SUPER_ADMIN_BASE_URL + "/api/auth/login";
916
+ var SIGN_IN_URL = BASE_URL + "/api/auth/login";
917
+ var signInApi = function signInApi(_ref) {
918
+ var email = _ref.email,
919
+ password = _ref.password,
920
+ role = _ref.role;
921
+ return api.post(SIGN_IN_URL + "/demo", {
922
+ email: email,
923
+ password: password,
924
+ role: role
925
+ });
926
+ };
927
+ var signInWithEmailApi = function signInWithEmailApi(_ref2) {
928
+ var academyDomain = _ref2.academyDomain,
929
+ email = _ref2.email,
930
+ reCaptcha = _ref2.reCaptcha;
931
+ return api.post((academyDomain ? SIGN_IN_URL : SIGN_IN_SUPER_ADMIN_URL) + "/email", {
932
+ email: email,
933
+ reCaptcha: reCaptcha
934
+ }, {
935
+ headers: {
936
+ Domain: window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : '')
937
+ }
938
+ });
939
+ };
940
+ var signInWithOTPApi = function signInWithOTPApi(_ref3) {
941
+ var academyDomain = _ref3.academyDomain,
942
+ otp = _ref3.otp,
943
+ role = _ref3.role;
944
+ return api.post((academyDomain ? SIGN_IN_URL : SIGN_IN_SUPER_ADMIN_URL) + "/otp", {
945
+ otp: otp,
946
+ role: role
947
+ });
948
+ };
949
+ var signInWithKeyApi = function signInWithKeyApi(_ref4) {
950
+ var academyDomain = _ref4.academyDomain,
951
+ key = _ref4.key,
952
+ role = _ref4.role;
953
+ return api.post((academyDomain ? SIGN_IN_URL : SIGN_IN_SUPER_ADMIN_URL) + "/email/key", {
954
+ key: key,
955
+ role: role
956
+ });
957
+ };
958
+ var signInSuperAdminApi = function signInSuperAdminApi(_ref5) {
959
+ var email = _ref5.email,
960
+ password = _ref5.password,
961
+ role = _ref5.role;
962
+ return api.post(SIGN_IN_SUPER_ADMIN_URL + "/demo", {
963
+ email: email,
964
+ password: password,
965
+ role: role
966
+ });
967
+ };
968
+
808
969
  var defaultInfo = {
809
970
  email: "",
810
- password: "",
811
- captcha: "",
812
- rememberMe: false
971
+ otp: ""
813
972
  };
814
973
  var PAGE_TITLE = "sign_in";
815
- var useLogin$1 = function useLogin(homeAcademyUrl, homeUrl) {
974
+ var useLogin$1 = function useLogin(_ref) {
975
+ var history = _ref.history,
976
+ homeAcademyUrl = _ref.homeAcademyUrl,
977
+ homeUrl = _ref.homeUrl,
978
+ registerUrl = _ref.registerUrl,
979
+ role = _ref.role;
816
980
  var _useState = useState(false),
817
981
  openLogin = _useState[0],
818
982
  setOpenLogin = _useState[1];
@@ -822,6 +986,7 @@ var useLogin$1 = function useLogin(homeAcademyUrl, homeUrl) {
822
986
  var _useState3 = useState(),
823
987
  clientId = _useState3[0],
824
988
  setClientId = _useState3[1];
989
+ var dispatch = useDispatch();
825
990
  var _useTranslation = useTranslation(),
826
991
  t = _useTranslation.t;
827
992
  var toggle = useCallback(function () {
@@ -830,6 +995,96 @@ var useLogin$1 = function useLogin(homeAcademyUrl, homeUrl) {
830
995
  var _useState4 = useState(false),
831
996
  isShowPassword = _useState4[0],
832
997
  setIsShowPassword = _useState4[1];
998
+ var _useState5 = useState(false),
999
+ isOTP = _useState5[0],
1000
+ setIsOTP = _useState5[1];
1001
+ var _useState6 = useState(false),
1002
+ isEmail = _useState6[0],
1003
+ setIsEmail = _useState6[1];
1004
+ var searchParams = new URLSearchParams(window.location.search);
1005
+ var paramDomain = searchParams.get("domain");
1006
+ var academyDomainStorage = getAcademyDomain();
1007
+ var academyDomain = paramDomain || academyDomainStorage || "";
1008
+ var _useState7 = useState(""),
1009
+ tokenReCaptcha = _useState7[0],
1010
+ setTokenReCaptcha = _useState7[1];
1011
+ var _useState8 = useState(false),
1012
+ refreshReCaptcha = _useState8[0],
1013
+ setRefreshReCaptcha = _useState8[1];
1014
+ var handleSwitchOTP = function handleSwitchOTP(bool) {
1015
+ setIsOTP(bool);
1016
+ };
1017
+ var handleSwitchEmail = function handleSwitchEmail(bool) {
1018
+ setIsEmail(bool);
1019
+ };
1020
+ var onVerify = useCallback(function (token) {
1021
+ setTokenReCaptcha(token);
1022
+ }, []);
1023
+ var redirectLoginUser = function redirectLoginUser(data, token, redirectUrl) {
1024
+ localStorage.setItem(ACCESS_TOKEN, token);
1025
+ !data.academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
1026
+ !!data.academyDomain && localStorage.setItem(ACADEMY_DOMAIN, data.academyDomain);
1027
+ dispatch(setUser(_extends({}, data)));
1028
+ if (redirectUrl) pushTo(history, redirectUrl);
1029
+ };
1030
+ var handleSubmit = function handleSubmit(values) {
1031
+ try {
1032
+ var _temp5 = function _temp5() {
1033
+ dispatch(setLoading(false));
1034
+ };
1035
+ if (!tokenReCaptcha) return Promise.resolve();
1036
+ dispatch(setLoading(true));
1037
+ var email = values.email,
1038
+ otp = values.otp;
1039
+ var _temp4 = _catch(function () {
1040
+ function _temp3() {
1041
+ var _temp = function () {
1042
+ if (otp) {
1043
+ return Promise.resolve(signInWithOTPApi({
1044
+ academyDomain: academyDomain,
1045
+ otp: otp,
1046
+ role: role
1047
+ })).then(function (res) {
1048
+ var loginResponse = res === null || res === void 0 ? void 0 : res.data;
1049
+ var isFirstLogin = loginResponse.isFirstLogin,
1050
+ token = loginResponse.token,
1051
+ user = loginResponse.user;
1052
+ var isAcademy = !!(user !== null && user !== void 0 && user.academyDomain);
1053
+ var needToRegister = isFirstLogin && isAcademy;
1054
+ var redirectUrl = needToRegister ? registerUrl : isAcademy ? homeAcademyUrl : homeUrl;
1055
+ handleSwitchOTP(false);
1056
+ redirectLoginUser(user, token, redirectUrl);
1057
+ });
1058
+ }
1059
+ }();
1060
+ if (_temp && _temp.then) return _temp.then(function () {});
1061
+ }
1062
+ var _temp2 = function () {
1063
+ if (email) {
1064
+ return Promise.resolve(signInWithEmailApi({
1065
+ academyDomain: academyDomain,
1066
+ email: email,
1067
+ reCaptcha: tokenReCaptcha
1068
+ })).then(function () {
1069
+ toast.success(t("please_check_your_mailbox"));
1070
+ handleSwitchOTP(true);
1071
+ handleSwitchEmail(false);
1072
+ setRefreshReCaptcha(function (b) {
1073
+ return !b;
1074
+ });
1075
+ });
1076
+ }
1077
+ }();
1078
+ return _temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2);
1079
+ }, function (error) {
1080
+ console.log(error);
1081
+ toast.error(getErrorMessage(t, error, t("request_login_fail")));
1082
+ });
1083
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(_temp5) : _temp5(_temp4));
1084
+ } catch (e) {
1085
+ return Promise.reject(e);
1086
+ }
1087
+ };
833
1088
  useEffect(function () {
834
1089
  setClientId(GOOGLE_CLIENT_ID);
835
1090
  }, []);
@@ -852,6 +1107,13 @@ var useLogin$1 = function useLogin(homeAcademyUrl, homeUrl) {
852
1107
  document.title = t("study_peak") + " | " + t(PAGE_TITLE);
853
1108
  }, [t]);
854
1109
  return {
1110
+ isOTP: isOTP,
1111
+ isEmail: isEmail,
1112
+ onVerify: onVerify,
1113
+ tokenReCaptcha: tokenReCaptcha,
1114
+ refreshReCaptcha: refreshReCaptcha,
1115
+ handleSwitchOTP: handleSwitchOTP,
1116
+ handleSwitchEmail: handleSwitchEmail,
855
1117
  clientId: clientId,
856
1118
  defaultInfo: defaultInfo,
857
1119
  openLogin: openLogin,
@@ -859,6 +1121,7 @@ var useLogin$1 = function useLogin(homeAcademyUrl, homeUrl) {
859
1121
  isShowPassword: isShowPassword,
860
1122
  setIsShowPassword: setIsShowPassword,
861
1123
  infoUser: infoUser,
1124
+ handleSubmit: handleSubmit,
862
1125
  setInfoUser: setInfoUser
863
1126
  };
864
1127
  };
@@ -961,9 +1224,23 @@ var _excluded = ["history"];
961
1224
  var Login = function Login(_ref) {
962
1225
  var history = _ref.history,
963
1226
  rest = _objectWithoutPropertiesLoose(_ref, _excluded);
964
- var _useLogin = useLogin$1(rest.homeAcademyUrl, rest.homeUrl),
1227
+ var _useLogin = useLogin$1({
1228
+ homeAcademyUrl: rest.homeAcademyUrl,
1229
+ homeUrl: rest.homeUrl,
1230
+ role: rest.role,
1231
+ registerUrl: rest.registerUrl,
1232
+ history: history
1233
+ }),
1234
+ isOTP = _useLogin.isOTP,
1235
+ isEmail = _useLogin.isEmail,
1236
+ onVerify = _useLogin.onVerify,
965
1237
  defaultInfo = _useLogin.defaultInfo,
966
- clientId = _useLogin.clientId;
1238
+ clientId = _useLogin.clientId,
1239
+ tokenReCaptcha = _useLogin.tokenReCaptcha,
1240
+ handleSubmit = _useLogin.handleSubmit,
1241
+ handleSwitchOTP = _useLogin.handleSwitchOTP,
1242
+ refreshReCaptcha = _useLogin.refreshReCaptcha,
1243
+ handleSwitchEmail = _useLogin.handleSwitchEmail;
967
1244
  useLanguage(history);
968
1245
  return React__default.createElement("div", {
969
1246
  className: styles["login"] + " font-family-lato"
@@ -975,11 +1252,21 @@ var Login = function Login(_ref) {
975
1252
  item: true,
976
1253
  xs: 12,
977
1254
  className: "d-flex justify-content-center h-100 align-items-center"
978
- }, clientId && React__default.createElement(BlockLogin, Object.assign({
1255
+ }, clientId && React__default.createElement(GoogleReCaptchaProvider, {
1256
+ reCaptchaKey: GOOGLE_RECAPTCHA_KEY
1257
+ }, React__default.createElement(BlockLogin, Object.assign({
1258
+ isOTP: isOTP,
1259
+ onVerify: onVerify,
1260
+ isEmail: isEmail,
1261
+ tokenReCaptcha: tokenReCaptcha,
1262
+ refreshReCaptcha: refreshReCaptcha,
1263
+ handleSwitchOTP: handleSwitchOTP,
1264
+ handleSwitchEmail: handleSwitchEmail,
979
1265
  defaultInfo: defaultInfo,
980
1266
  history: history,
981
- clientId: clientId
982
- }, rest)))));
1267
+ clientId: clientId,
1268
+ onSubmit: handleSubmit
1269
+ }, rest))))));
983
1270
  };
984
1271
 
985
1272
  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 = useCallback(function () {
1381
1668
  if (!(user !== null && user !== void 0 && user.email)) return;
1382
- if (!roles.includes(role) && !!academyDomain) {
1669
+ var isAdmin = roles.includes(Role.Admin);
1670
+ if (isAdmin && role === Role.Teacher) return;
1671
+ if (!roles.includes(role) && !!academyDomain && (role !== Role.Teacher || !roles.includes(Role.Admin))) {
1383
1672
  alert(t("user_not_allow_to_register_role", {
1384
1673
  user: user.email,
1385
1674
  role: role
@@ -1839,6 +2128,7 @@ var there_are_no_recent_exams = "최근 시험이 없습니다";
1839
2128
  var you_have_started_an_exam_with_code_code_do_you_want_to_continue = "{{code}} 코드로 시험을 시작했습니다. 계속하시겠습니까?";
1840
2129
  var here = "여기";
1841
2130
  var do_you_want_to_complete_the_exam = "시험을 완료처리 하시겠습니까?";
2131
+ var do_you_want_to_cancel_the_exam = "시험을 취소하시겠습니까? (학생의 결과는 모두 삭제됩니다)";
1842
2132
  var are_you_sure_you_want_to_delete_the_exam = "시험을 삭제하시겠습니까?";
1843
2133
  var are_you_sure_you_want_to_delete_the_textbook = "교과서를 삭제하시겠습니까?";
1844
2134
  var are_you_sure_you_want_to_delete_the_user = "사용자 {{user}}을(를) 삭제하시겠습니까?";
@@ -2082,6 +2372,7 @@ var parent_name = "부모님 성함";
2082
2372
  var users = "사용자";
2083
2373
  var new_user = "새로운 사용자";
2084
2374
  var academy_admin = "아카데미 관리자";
2375
+ var super_admin = "최고 관리자";
2085
2376
  var switch_academy_admin = "스위치 아카데미 관리자";
2086
2377
  var switch_academy = "스위치 아카데미";
2087
2378
  var there_are_no_lessons_this_week = "이번주는 수업이 없습니다";
@@ -2372,6 +2663,7 @@ var textbook_subject_is_required = "교과서 과목은 필수입니다";
2372
2663
  var update_the_textbook_successfully = "교과서를 성공적으로 업데이트했습니다.";
2373
2664
  var create_the_textbook_successfully = "교과서를 성공적으로 만들었습니다.";
2374
2665
  var finish_exam_successful = "시험을 성공적으로 마쳤습니다";
2666
+ var cancel_exam_successful = "시험을 성공적으로 취소했습니다";
2375
2667
  var you_has_been_kicked_out = "당신은 쫓겨났습니다";
2376
2668
  var the_teacher_has_closed_or_deleted_the_exam = "선생님이 시험을 종료했거나 삭제했습니다. 나중에 다시 시도해 주세요.";
2377
2669
  var check_in_lesson_successfully = "수업 체크인 성공";
@@ -2466,6 +2758,7 @@ var added_date = "추가된 날짜";
2466
2758
  var sync_exam_results = "시험 결과 동기화";
2467
2759
  var update_data_fail = "데이터 업데이트 실패";
2468
2760
  var add_students_to_class = "수업에 학생 추가";
2761
+ var add_teachers_to_class = "수업에 교사 추가";
2469
2762
  var click_to_choose_file = "파일을 선택하려면 클릭하세요.";
2470
2763
  var exam_data = "시험 데이터";
2471
2764
  var questions_correct_rate = "질문 정답률";
@@ -2581,6 +2874,16 @@ var your_browser_must = "귀하의 브라우저는 다음을 충족해야 합니
2581
2874
  var allowed_to_send_pop_ups_and_use_redirects = "팝업 보내기 및 리디렉션 사용이 허용됨";
2582
2875
  var disable_ask_where_to_save_each_file_before_downloading = "다운로드하기 전에 각 파일을 저장할 위치 묻기 비활성화";
2583
2876
  var total_number_of_selected_results = "선택된 결과의 총 개수";
2877
+ var choose_to_print = "인쇄를 선택하세요";
2878
+ var exam_has_been_cancelled = "시험이 취소되었습니다";
2879
+ var or = "또는";
2880
+ var sign_in_with_email = "이메일로 로그인";
2881
+ var please_check_your_mailbox = "우편함을 확인해 주세요";
2882
+ var otp_is_required = "OTP가 필요합니다";
2883
+ var min_is_1 = "최소값은 1입니다.";
2884
+ var max_is_6 = "최대는 6입니다";
2885
+ var must_be_number = "숫자여야 합니다.";
2886
+ var sign_in_with_google_account = "구글 계정으로 로그인";
2584
2887
  var lang_ko = {
2585
2888
  problem_solving: problem_solving,
2586
2889
  my_story: my_story,
@@ -2621,6 +2924,7 @@ var lang_ko = {
2621
2924
  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,
2622
2925
  here: here,
2623
2926
  do_you_want_to_complete_the_exam: do_you_want_to_complete_the_exam,
2927
+ do_you_want_to_cancel_the_exam: do_you_want_to_cancel_the_exam,
2624
2928
  are_you_sure_you_want_to_delete_the_exam: are_you_sure_you_want_to_delete_the_exam,
2625
2929
  are_you_sure_you_want_to_delete_the_textbook: are_you_sure_you_want_to_delete_the_textbook,
2626
2930
  are_you_sure_you_want_to_delete_the_user: are_you_sure_you_want_to_delete_the_user,
@@ -2861,6 +3165,7 @@ var lang_ko = {
2861
3165
  users: users,
2862
3166
  new_user: new_user,
2863
3167
  academy_admin: academy_admin,
3168
+ super_admin: super_admin,
2864
3169
  switch_academy_admin: switch_academy_admin,
2865
3170
  switch_academy: switch_academy,
2866
3171
  there_are_no_lessons_this_week: there_are_no_lessons_this_week,
@@ -3146,6 +3451,7 @@ var lang_ko = {
3146
3451
  update_the_textbook_successfully: update_the_textbook_successfully,
3147
3452
  create_the_textbook_successfully: create_the_textbook_successfully,
3148
3453
  finish_exam_successful: finish_exam_successful,
3454
+ cancel_exam_successful: cancel_exam_successful,
3149
3455
  you_has_been_kicked_out: you_has_been_kicked_out,
3150
3456
  the_teacher_has_closed_or_deleted_the_exam: the_teacher_has_closed_or_deleted_the_exam,
3151
3457
  check_in_lesson_successfully: check_in_lesson_successfully,
@@ -3241,6 +3547,7 @@ var lang_ko = {
3241
3547
  sync_exam_results: sync_exam_results,
3242
3548
  update_data_fail: update_data_fail,
3243
3549
  add_students_to_class: add_students_to_class,
3550
+ add_teachers_to_class: add_teachers_to_class,
3244
3551
  click_to_choose_file: click_to_choose_file,
3245
3552
  exam_data: exam_data,
3246
3553
  questions_correct_rate: questions_correct_rate,
@@ -3353,7 +3660,17 @@ var lang_ko = {
3353
3660
  your_browser_must: your_browser_must,
3354
3661
  allowed_to_send_pop_ups_and_use_redirects: allowed_to_send_pop_ups_and_use_redirects,
3355
3662
  disable_ask_where_to_save_each_file_before_downloading: disable_ask_where_to_save_each_file_before_downloading,
3356
- total_number_of_selected_results: total_number_of_selected_results
3663
+ total_number_of_selected_results: total_number_of_selected_results,
3664
+ choose_to_print: choose_to_print,
3665
+ exam_has_been_cancelled: exam_has_been_cancelled,
3666
+ or: or,
3667
+ sign_in_with_email: sign_in_with_email,
3668
+ please_check_your_mailbox: please_check_your_mailbox,
3669
+ otp_is_required: otp_is_required,
3670
+ min_is_1: min_is_1,
3671
+ max_is_6: max_is_6,
3672
+ must_be_number: must_be_number,
3673
+ sign_in_with_google_account: sign_in_with_google_account
3357
3674
  };
3358
3675
 
3359
3676
  var problem_solving$1 = "Problem Solving";
@@ -3393,6 +3710,7 @@ var there_are_no_recent_exams$1 = "There are no recent exams";
3393
3710
  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?";
3394
3711
  var here$1 = "here";
3395
3712
  var do_you_want_to_complete_the_exam$1 = "Do you want to complete the exam?";
3713
+ var do_you_want_to_cancel_the_exam$1 = "Do you want to cancel the exam? (All student results will be deleted)";
3396
3714
  var are_you_sure_you_want_to_delete_the_exam$1 = "Are you sure you want to delete the exam?";
3397
3715
  var are_you_sure_you_want_to_delete_the_textbook$1 = "Are you sure you want to delete the textbook?";
3398
3716
  var are_you_sure_you_want_to_delete_the_user$1 = "Are you sure you want to delete the user: {{user}}?";
@@ -3661,6 +3979,7 @@ var parent_name$1 = "Parent name";
3661
3979
  var users$1 = "Users";
3662
3980
  var new_user$1 = "New user";
3663
3981
  var academy_admin$1 = "Academy Admin";
3982
+ var super_admin$1 = "Super Admin";
3664
3983
  var switch_academy_admin$1 = "Switch Academy Admin";
3665
3984
  var switch_academy$1 = "Switch Academy";
3666
3985
  var there_are_no_lessons_this_week$1 = "There are no lessons this week";
@@ -3940,7 +4259,8 @@ var textbook_name_is_required$1 = "Textbook name is required";
3940
4259
  var textbook_subject_is_required$1 = "Textbook subject is required";
3941
4260
  var update_the_textbook_successfully$1 = "Update the textbook successfully";
3942
4261
  var create_the_textbook_successfully$1 = "Create the textbook successfully";
3943
- var finish_exam_successful$1 = "Finish exam successful";
4262
+ var finish_exam_successful$1 = "Finish exam successfully";
4263
+ var cancel_exam_successful$1 = "Cancel exam successfully";
3944
4264
  var you_has_been_kicked_out$1 = "You has been kicked out";
3945
4265
  var the_teacher_has_closed_or_deleted_the_exam$1 = "The teacher has closed or deleted the exam, please try again later";
3946
4266
  var check_in_lesson_successfully$1 = "Check in lesson successfully";
@@ -4021,6 +4341,7 @@ var added_date$1 = "Added date";
4021
4341
  var sync_exam_results$1 = "Sync exam results";
4022
4342
  var update_data_fail$1 = "Update data fail";
4023
4343
  var add_students_to_class$1 = "Add students to class";
4344
+ var add_teachers_to_class$1 = "Add teachers to class";
4024
4345
  var click_to_choose_file$1 = "Click to choose file";
4025
4346
  var exam_data$1 = "Exam Data";
4026
4347
  var questions_correct_rate$1 = "Questions Correct Rate";
@@ -4136,6 +4457,16 @@ var your_browser_must$1 = "Your browser must";
4136
4457
  var allowed_to_send_pop_ups_and_use_redirects$1 = "Allowed to send pop-ups and use redirects";
4137
4458
  var disable_ask_where_to_save_each_file_before_downloading$1 = "Disable ask where to save each file before downloading";
4138
4459
  var total_number_of_selected_results$1 = "Total number of selected results";
4460
+ var choose_to_print$1 = "Choose to print";
4461
+ var exam_has_been_cancelled$1 = "The exam has been cancelled";
4462
+ var or$1 = "Or";
4463
+ var sign_in_with_email$1 = "Sign in with email";
4464
+ var please_check_your_mailbox$1 = "Please check your mailbox";
4465
+ var otp_is_required$1 = "OTP is required";
4466
+ var min_is_1$1 = "Min is 1";
4467
+ var max_is_6$1 = "Max is 6";
4468
+ var must_be_number$1 = "Must be number";
4469
+ var sign_in_with_google_account$1 = "Sign in with google account";
4139
4470
  var lang_en = {
4140
4471
  problem_solving: problem_solving$1,
4141
4472
  my_story: my_story$1,
@@ -4176,6 +4507,7 @@ var lang_en = {
4176
4507
  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,
4177
4508
  here: here$1,
4178
4509
  do_you_want_to_complete_the_exam: do_you_want_to_complete_the_exam$1,
4510
+ do_you_want_to_cancel_the_exam: do_you_want_to_cancel_the_exam$1,
4179
4511
  are_you_sure_you_want_to_delete_the_exam: are_you_sure_you_want_to_delete_the_exam$1,
4180
4512
  are_you_sure_you_want_to_delete_the_textbook: are_you_sure_you_want_to_delete_the_textbook$1,
4181
4513
  are_you_sure_you_want_to_delete_the_user: are_you_sure_you_want_to_delete_the_user$1,
@@ -4441,6 +4773,7 @@ var lang_en = {
4441
4773
  users: users$1,
4442
4774
  new_user: new_user$1,
4443
4775
  academy_admin: academy_admin$1,
4776
+ super_admin: super_admin$1,
4444
4777
  switch_academy_admin: switch_academy_admin$1,
4445
4778
  switch_academy: switch_academy$1,
4446
4779
  there_are_no_lessons_this_week: there_are_no_lessons_this_week$1,
@@ -4716,6 +5049,7 @@ var lang_en = {
4716
5049
  update_the_textbook_successfully: update_the_textbook_successfully$1,
4717
5050
  create_the_textbook_successfully: create_the_textbook_successfully$1,
4718
5051
  finish_exam_successful: finish_exam_successful$1,
5052
+ cancel_exam_successful: cancel_exam_successful$1,
4719
5053
  you_has_been_kicked_out: you_has_been_kicked_out$1,
4720
5054
  the_teacher_has_closed_or_deleted_the_exam: the_teacher_has_closed_or_deleted_the_exam$1,
4721
5055
  check_in_lesson_successfully: check_in_lesson_successfully$1,
@@ -4797,6 +5131,7 @@ var lang_en = {
4797
5131
  sync_exam_results: sync_exam_results$1,
4798
5132
  update_data_fail: update_data_fail$1,
4799
5133
  add_students_to_class: add_students_to_class$1,
5134
+ add_teachers_to_class: add_teachers_to_class$1,
4800
5135
  click_to_choose_file: click_to_choose_file$1,
4801
5136
  exam_data: exam_data$1,
4802
5137
  questions_correct_rate: questions_correct_rate$1,
@@ -4909,7 +5244,17 @@ var lang_en = {
4909
5244
  your_browser_must: your_browser_must$1,
4910
5245
  allowed_to_send_pop_ups_and_use_redirects: allowed_to_send_pop_ups_and_use_redirects$1,
4911
5246
  disable_ask_where_to_save_each_file_before_downloading: disable_ask_where_to_save_each_file_before_downloading$1,
4912
- total_number_of_selected_results: total_number_of_selected_results$1
5247
+ total_number_of_selected_results: total_number_of_selected_results$1,
5248
+ choose_to_print: choose_to_print$1,
5249
+ exam_has_been_cancelled: exam_has_been_cancelled$1,
5250
+ or: or$1,
5251
+ sign_in_with_email: sign_in_with_email$1,
5252
+ please_check_your_mailbox: please_check_your_mailbox$1,
5253
+ otp_is_required: otp_is_required$1,
5254
+ min_is_1: min_is_1$1,
5255
+ max_is_6: max_is_6$1,
5256
+ must_be_number: must_be_number$1,
5257
+ sign_in_with_google_account: sign_in_with_google_account$1
4913
5258
  };
4914
5259
 
4915
5260
  i18n.use(initReactI18next).init({
@@ -5183,7 +5528,7 @@ var TheAcademyDropdown = function TheAcademyDropdown(_ref) {
5183
5528
  return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
5184
5529
  });
5185
5530
  var isAdmin = role === Role.Admin;
5186
- var isSuperAdmin = user && !user.academyDomain && ((_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.includes(Role.Admin));
5531
+ var isSuperAdmin = user && (!user.academyDomain && ((_user$roles = user.roles) === null || _user$roles === void 0 ? void 0 : _user$roles.includes(Role.Admin)) || user.isSuperAdmin);
5187
5532
  var _useTranslation = useTranslation(),
5188
5533
  t = _useTranslation.t;
5189
5534
  var _useState = useState(null),
@@ -6929,7 +7274,7 @@ var useMessageList = function useMessageList(_ref) {
6929
7274
  userId: (student === null || student === void 0 ? void 0 : student.id) || 0,
6930
7275
  action: RecentUserAction$1.ViewedQNA,
6931
7276
  data: "" + conversationId,
6932
- roles: [Role.Teacher]
7277
+ isAdmin: !isTeacher
6933
7278
  })).then(function () {
6934
7279
  isFirst = false;
6935
7280
  });
@@ -7097,6 +7442,7 @@ var useChatContainer = function useChatContainer(props) {
7097
7442
  var _useState4 = useState(true),
7098
7443
  isScrollToEnd = _useState4[0],
7099
7444
  setScrollToEnd = _useState4[1];
7445
+ var isAdmin = roles === null || roles === void 0 ? void 0 : roles.includes(Role.Admin);
7100
7446
  var _useMessageList = useMessageList({
7101
7447
  student: student
7102
7448
  }),
@@ -7222,9 +7568,6 @@ var useChatContainer = function useChatContainer(props) {
7222
7568
  if (!data) return;
7223
7569
  var parsedData = JSON.parse(data);
7224
7570
  if (parsedData.id) setSelectedConversation(JSON.parse(data));
7225
- console.log({
7226
- data: JSON.parse(data)
7227
- });
7228
7571
  };
7229
7572
  var handleLoadMoreMessages = function handleLoadMoreMessages() {
7230
7573
  try {
@@ -7291,11 +7634,11 @@ var useChatContainer = function useChatContainer(props) {
7291
7634
  var results = messages.map(function (i) {
7292
7635
  var _i$sender;
7293
7636
  return _extends({}, i, {
7294
- isMe: (infoUser === null || infoUser === void 0 ? void 0 : infoUser.id) === ((_i$sender = i.sender) === null || _i$sender === void 0 ? void 0 : _i$sender.id)
7637
+ 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)
7295
7638
  });
7296
7639
  });
7297
7640
  return results;
7298
- }, [JSON.stringify(messages), infoUser === null || infoUser === void 0 ? void 0 : infoUser.id]);
7641
+ }, [JSON.stringify(messages), infoUser === null || infoUser === void 0 ? void 0 : infoUser.id, isAdmin]);
7299
7642
  useEffect(function () {
7300
7643
  getMessageConversation();
7301
7644
  }, [JSON.stringify(selectedConversation)]);
@@ -10870,6 +11213,7 @@ var EXAM_RESULT = {
10870
11213
  topDuration: 180.939,
10871
11214
  answerResponseSignal: 0,
10872
11215
  isCorrect: false,
11216
+ score: 2,
10873
11217
  answerTime: "2024-03-13T04:29:00.685+00:00",
10874
11218
  article: 1,
10875
11219
  category: {
@@ -10891,6 +11235,7 @@ var EXAM_RESULT = {
10891
11235
  classAverageTime: 2.014,
10892
11236
  topDuration: 2.014,
10893
11237
  answerResponseSignal: 1,
11238
+ score: 2,
10894
11239
  isCorrect: false,
10895
11240
  answerTime: "2024-03-13T04:29:02.7+00:00",
10896
11241
  article: 1,
@@ -10913,6 +11258,7 @@ var EXAM_RESULT = {
10913
11258
  classAverageTime: 52.244,
10914
11259
  topDuration: 24.244,
10915
11260
  answerResponseSignal: 1,
11261
+ score: 2,
10916
11262
  isCorrect: false,
10917
11263
  answerTime: "2024-03-13T04:29:04.944+00:00",
10918
11264
  article: 1,
@@ -10935,6 +11281,7 @@ var EXAM_RESULT = {
10935
11281
  classAverageTime: 1.373,
10936
11282
  topDuration: 1.373,
10937
11283
  answerResponseSignal: 4,
11284
+ score: 2,
10938
11285
  isCorrect: true,
10939
11286
  answerTime: "2024-03-13T04:29:06.317+00:00",
10940
11287
  article: 1,
@@ -10957,6 +11304,7 @@ var EXAM_RESULT = {
10957
11304
  classAverageTime: 132.683,
10958
11305
  topDuration: 110.683,
10959
11306
  answerResponseSignal: 2,
11307
+ score: 2,
10960
11308
  isCorrect: false,
10961
11309
  answerTime: "2024-03-13T04:29:07+00:00",
10962
11310
  article: 1,
@@ -10979,6 +11327,7 @@ var EXAM_RESULT = {
10979
11327
  classAverageTime: 1.052,
10980
11328
  topDuration: 1.052,
10981
11329
  answerResponseSignal: 1,
11330
+ score: 2,
10982
11331
  isCorrect: true,
10983
11332
  answerTime: "2024-03-13T04:29:08.052+00:00",
10984
11333
  article: 2,
@@ -11001,6 +11350,7 @@ var EXAM_RESULT = {
11001
11350
  classAverageTime: 0,
11002
11351
  topDuration: null,
11003
11352
  answerResponseSignal: null,
11353
+ score: 2,
11004
11354
  isCorrect: false,
11005
11355
  answerTime: "0001-01-01T00:00:00+00:00",
11006
11356
  article: 2,
@@ -11023,6 +11373,7 @@ var EXAM_RESULT = {
11023
11373
  classAverageTime: 2.596,
11024
11374
  topDuration: 2.596,
11025
11375
  answerResponseSignal: 1,
11376
+ score: 2,
11026
11377
  isCorrect: false,
11027
11378
  answerTime: "2024-03-13T04:29:10.648+00:00",
11028
11379
  article: 2,
@@ -11045,6 +11396,7 @@ var EXAM_RESULT = {
11045
11396
  classAverageTime: 0.899,
11046
11397
  topDuration: 0.899,
11047
11398
  answerResponseSignal: 1,
11399
+ score: 2,
11048
11400
  isCorrect: false,
11049
11401
  answerTime: "2024-03-13T04:29:12.864+00:00",
11050
11402
  article: 2,
@@ -11068,6 +11420,7 @@ var EXAM_RESULT = {
11068
11420
  topDuration: 20.496,
11069
11421
  answerResponseSignal: 0,
11070
11422
  isCorrect: true,
11423
+ score: 2,
11071
11424
  answerTime: "2024-03-13T04:29:14.36+00:00",
11072
11425
  article: 2,
11073
11426
  category: {
@@ -11089,6 +11442,7 @@ var EXAM_RESULT = {
11089
11442
  classAverageTime: 0,
11090
11443
  topDuration: null,
11091
11444
  answerResponseSignal: null,
11445
+ score: 2,
11092
11446
  isCorrect: false,
11093
11447
  answerTime: "0001-01-01T00:00:00+00:00",
11094
11448
  article: 2,
@@ -11112,6 +11466,7 @@ var EXAM_RESULT = {
11112
11466
  topDuration: 1.317,
11113
11467
  answerResponseSignal: 1,
11114
11468
  isCorrect: true,
11469
+ score: 2,
11115
11470
  answerTime: "2024-03-13T04:29:11.965+00:00",
11116
11471
  article: 3,
11117
11472
  category: {
@@ -11133,6 +11488,7 @@ var EXAM_RESULT = {
11133
11488
  classAverageTime: 1.593,
11134
11489
  topDuration: 1.593,
11135
11490
  answerResponseSignal: 1,
11491
+ score: 2,
11136
11492
  isCorrect: false,
11137
11493
  answerTime: "2024-03-13T04:29:20.734+00:00",
11138
11494
  article: 3,
@@ -11155,6 +11511,7 @@ var EXAM_RESULT = {
11155
11511
  classAverageTime: 1.204,
11156
11512
  topDuration: 1.204,
11157
11513
  answerResponseSignal: 1,
11514
+ score: 2,
11158
11515
  isCorrect: false,
11159
11516
  answerTime: "2024-03-13T04:29:18.164+00:00",
11160
11517
  article: 3,
@@ -11177,6 +11534,7 @@ var EXAM_RESULT = {
11177
11534
  classAverageTime: 2.6,
11178
11535
  topDuration: 2.6,
11179
11536
  answerResponseSignal: 1,
11537
+ score: 2,
11180
11538
  isCorrect: false,
11181
11539
  answerTime: "2024-03-13T04:29:16.96+00:00",
11182
11540
  article: 3,
@@ -11199,6 +11557,7 @@ var EXAM_RESULT = {
11199
11557
  classAverageTime: 0.977,
11200
11558
  topDuration: 0.977,
11201
11559
  answerResponseSignal: 1,
11560
+ score: 2,
11202
11561
  isCorrect: true,
11203
11562
  answerTime: "2024-03-13T04:29:19.141+00:00",
11204
11563
  article: 3,
@@ -11607,23 +11966,11 @@ var getRecentUserActionListApi = function getRecentUserActionListApi(query) {
11607
11966
  params: _extends({}, query)
11608
11967
  });
11609
11968
  };
11610
- var createRecentUserActionListApi = function createRecentUserActionListApi(_ref) {
11611
- var userId = _ref.userId,
11612
- action = _ref.action,
11613
- data = _ref.data,
11614
- roles = _ref.roles;
11615
- return api.post("" + RECENT_USER_URL, {
11616
- userId: userId,
11617
- action: action,
11618
- data: data
11619
- }, {
11620
- params: {
11621
- roles: roles
11622
- }
11623
- });
11969
+ var createRecentUserActionListApi = function createRecentUserActionListApi(recentData) {
11970
+ return api.post("" + RECENT_USER_URL, recentData);
11624
11971
  };
11625
11972
 
11626
- 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"};
11973
+ 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"};
11627
11974
 
11628
11975
  var useExamResult = function useExamResult(props) {
11629
11976
  var _allSeries$dataChartI;
@@ -11643,6 +11990,7 @@ var useExamResult = function useExamResult(props) {
11643
11990
  });
11644
11991
  var roles = (user === null || user === void 0 ? void 0 : user.roles) || [];
11645
11992
  var isStudent = roles === null || roles === void 0 ? void 0 : roles.includes(Role.Student);
11993
+ var isAdmin = roles === null || roles === void 0 ? void 0 : roles.includes(Role.Admin);
11646
11994
  var examCode = query.get("examCode") || code;
11647
11995
  var language = useSelector(function (state) {
11648
11996
  var _state$common2;
@@ -11727,14 +12075,14 @@ var useExamResult = function useExamResult(props) {
11727
12075
  setCategoryResponses(((_result$4$data2 = result[4].data) === null || _result$4$data2 === void 0 ? void 0 : _result$4$data2.data) || []);
11728
12076
  return isStudent ? _temp3(!isStudent && createRecentUserActionListApi({
11729
12077
  userId: studentId,
11730
- action: RecentUserAction$1.ViewedExamResult,
12078
+ action: isPrint ? RecentUserAction$1.PrintedExamResult : RecentUserAction$1.ViewedExamResult,
11731
12079
  data: "" + examSessionId,
11732
- roles: [Role.Teacher]
12080
+ isAdmin: isAdmin
11733
12081
  })) : Promise.resolve(!isStudent && createRecentUserActionListApi({
11734
12082
  userId: studentId,
11735
- action: RecentUserAction$1.ViewedExamResult,
12083
+ action: isPrint ? RecentUserAction$1.PrintedExamResult : RecentUserAction$1.ViewedExamResult,
11736
12084
  data: "" + examSessionId,
11737
- roles: [Role.Teacher]
12085
+ isAdmin: isAdmin
11738
12086
  })).then(_temp3);
11739
12087
  });
11740
12088
  }, function (error) {
@@ -13492,6 +13840,9 @@ function MyAnswer(_ref) {
13492
13840
  if (diff > 0) prefix = "+";
13493
13841
  return "" + prefix + formatTimeSecond(Math.abs(diff), t);
13494
13842
  };
13843
+ var getOverallColorClassName = function getOverallColorClassName(correctRate) {
13844
+ return styles$4["overall-response-" + (correctRate < 40 ? 1 : correctRate <= 70 ? 2 : 3)];
13845
+ };
13495
13846
  var renderQuestions = function renderQuestions(questions) {
13496
13847
  return questions.map(function (question, index) {
13497
13848
  var _questions;
@@ -13574,7 +13925,7 @@ function MyAnswer(_ref) {
13574
13925
  style: {
13575
13926
  margin: 0
13576
13927
  },
13577
- className: styles$4["answer-response"] + " " + styles$4["answer-response-" + question.answerResponseSignal]
13928
+ className: styles$4["answer-response"] + " " + getOverallColorClassName(question.overallCorrectRate)
13578
13929
  }, question.overallCorrectRate.toFixed(2) + "%") : React__default.createElement("p", {
13579
13930
  style: {
13580
13931
  margin: 0
@@ -14696,7 +15047,7 @@ var usePrintExamResult = function usePrintExamResult(isDataFetching, fileName, t
14696
15047
  var autoPrintPdf = function autoPrintPdf() {
14697
15048
  if (printState === PrintState.Printing) return;
14698
15049
  if (autoPrint && printState !== PrintState.Default) return;
14699
- if (totalChart !== renderedCharts.length) {
15050
+ if (totalChart !== 0 && totalChart !== renderedCharts.length) {
14700
15051
  !autoPrint && setPrintState(PrintState.Pending);
14701
15052
  return;
14702
15053
  }
@@ -14825,6 +15176,8 @@ var studentNameStyle = {
14825
15176
  var PrintExamResult = function PrintExamResult(_ref) {
14826
15177
  var resultData = _ref.resultData,
14827
15178
  examTime = _ref.examTime,
15179
+ status = _ref.status,
15180
+ isShow = _ref.isShow,
14828
15181
  isStudent = _ref.isStudent,
14829
15182
  categoryResponses = _ref.categoryResponses,
14830
15183
  timelyOrderQuestions = _ref.timelyOrderQuestions,
@@ -14952,7 +15305,7 @@ var PrintExamResult = function PrintExamResult(_ref) {
14952
15305
  fontWeight: 600,
14953
15306
  color: styles.gray_700
14954
15307
  }
14955
- }, resultData === null || resultData === void 0 ? void 0 : resultData.teacherName)))))), React__default.createElement(Stack, {
15308
+ }, resultData === null || resultData === void 0 ? void 0 : resultData.teacherName)))))), (!status || (isShow === null || isShow === void 0 ? void 0 : isShow(TabList[0].value))) && React__default.createElement(Stack, {
14956
15309
  display: "flex",
14957
15310
  flexDirection: "column",
14958
15311
  gap: "12px"
@@ -14962,7 +15315,7 @@ var PrintExamResult = function PrintExamResult(_ref) {
14962
15315
  data: resultData,
14963
15316
  categories: categoryResponses,
14964
15317
  isStudent: isStudent
14965
- })), React__default.createElement(Stack, {
15318
+ })), (!status || (isShow === null || isShow === void 0 ? void 0 : isShow(TabList[1].value))) && React__default.createElement(Stack, {
14966
15319
  display: "flex",
14967
15320
  flexDirection: "column",
14968
15321
  gap: "12px",
@@ -14989,7 +15342,7 @@ var PrintExamResult = function PrintExamResult(_ref) {
14989
15342
  series: allSeries[index],
14990
15343
  setIsRendered: setRenderedChart
14991
15344
  });
14992
- })), React__default.createElement(Stack, {
15345
+ })), (!status || (isShow === null || isShow === void 0 ? void 0 : isShow(TabList[2].value))) && React__default.createElement(Stack, {
14993
15346
  display: "flex",
14994
15347
  flexDirection: "column",
14995
15348
  gap: "12px",
@@ -14998,7 +15351,7 @@ var PrintExamResult = function PrintExamResult(_ref) {
14998
15351
  sx: textStyle
14999
15352
  }, t$1(TabList[2].label)), React__default.createElement(CompareGrass, {
15000
15353
  effectSize: effectSize
15001
- })), React__default.createElement(Stack, {
15354
+ })), (!status || (isShow === null || isShow === void 0 ? void 0 : isShow(TabList[3].value))) && React__default.createElement(Stack, {
15002
15355
  display: "flex",
15003
15356
  flexDirection: "column",
15004
15357
  gap: "12px",
@@ -15387,29 +15740,6 @@ var times = {
15387
15740
  getRemainTime: getRemainTime
15388
15741
  };
15389
15742
 
15390
- var SIGN_IN_SUPER_ADMIN_URL = SUPER_ADMIN_BASE_URL + "/api/auth/login";
15391
- var SIGN_IN_URL = BASE_URL + "/api/auth/login";
15392
- var signInApi = function signInApi(_ref) {
15393
- var email = _ref.email,
15394
- password = _ref.password,
15395
- role = _ref.role;
15396
- return api.post(SIGN_IN_URL + "/demo", {
15397
- email: email,
15398
- password: password,
15399
- role: role
15400
- });
15401
- };
15402
- var signInSuperAdminApi = function signInSuperAdminApi(_ref2) {
15403
- var email = _ref2.email,
15404
- password = _ref2.password,
15405
- role = _ref2.role;
15406
- return api.post(SIGN_IN_SUPER_ADMIN_URL + "/demo", {
15407
- email: email,
15408
- password: password,
15409
- role: role
15410
- });
15411
- };
15412
-
15413
15743
  var PAGE_TITLE$2 = "sign_in";
15414
15744
  var useLogin$2 = function useLogin(_ref) {
15415
15745
  var history = _ref.history,
@@ -16617,6 +16947,15 @@ var usePrintView = function usePrintView(_ref) {
16617
16947
  var _useState = useState(false),
16618
16948
  isDone = _useState[0],
16619
16949
  setDone = _useState[1];
16950
+ var _useLocation = useLocation(),
16951
+ search = _useLocation.search;
16952
+ var query = new URLSearchParams(search);
16953
+ var status = query.get('status') || '';
16954
+ var isShow = function isShow(value) {
16955
+ return (status === null || status === void 0 ? void 0 : status.split(',').some(function (i) {
16956
+ return i === value.toString();
16957
+ })) || false;
16958
+ };
16620
16959
  var handelPrintSuccess = function handelPrintSuccess() {
16621
16960
  var _window$opener$postMe, _window$opener;
16622
16961
  var data;
@@ -16663,6 +17002,8 @@ var usePrintView = function usePrintView(_ref) {
16663
17002
  return {
16664
17003
  fileName: fileName,
16665
17004
  isDone: isDone,
17005
+ status: status,
17006
+ isShow: isShow,
16666
17007
  handelPrintSuccess: handelPrintSuccess,
16667
17008
  handelPrintError: handelPrintError
16668
17009
  };
@@ -16731,9 +17072,11 @@ var PrintExamResultView = function PrintExamResultView(_ref) {
16731
17072
  }),
16732
17073
  fileName = _usePrintView.fileName,
16733
17074
  isDone = _usePrintView.isDone,
17075
+ status = _usePrintView.status,
17076
+ isShow = _usePrintView.isShow,
16734
17077
  handelPrintSuccess = _usePrintView.handelPrintSuccess,
16735
17078
  handelPrintError = _usePrintView.handelPrintError;
16736
- var _usePrintExamResult = usePrintExamResult(isLoading, fileName, timelyOrderQuestions.length, handelPrintSuccess, handelPrintError, true),
17079
+ var _usePrintExamResult = usePrintExamResult(isLoading, fileName, !status || isShow !== null && isShow !== void 0 && isShow(TabList[1].value) ? timelyOrderQuestions.length : 0, handelPrintSuccess, handelPrintError, true),
16737
17080
  contentRef = _usePrintExamResult.contentRef,
16738
17081
  setRenderedChart = _usePrintExamResult.setRenderedChart;
16739
17082
  var isTabletUp = useMediaQuery("(min-width:900px)");
@@ -16756,6 +17099,8 @@ var PrintExamResultView = function PrintExamResultView(_ref) {
16756
17099
  timelyOrderQuestions: timelyOrderQuestions,
16757
17100
  isMyStoryStudent: isMyStoryStudent,
16758
17101
  fileName: fileName,
17102
+ isShow: isShow,
17103
+ status: status,
16759
17104
  setRenderedChart: setRenderedChart
16760
17105
  }) : isLoading === undefined || isLoading === true ? React__default.createElement(LoadingComponent, {
16761
17106
  isLoading: !!isLoading,
@@ -16778,6 +17123,20 @@ var PrintState$1;
16778
17123
  PrintState[PrintState["Paused"] = 3] = "Paused";
16779
17124
  })(PrintState$1 || (PrintState$1 = {}));
16780
17125
 
17126
+ var TabList$1 = [{
17127
+ label: "comprehensive_analysis",
17128
+ value: 0
17129
+ }, {
17130
+ label: "solution_order",
17131
+ value: 1
17132
+ }, {
17133
+ label: "compare_solution",
17134
+ value: 2
17135
+ }, {
17136
+ label: "problem_analysis",
17137
+ value: 3
17138
+ }];
17139
+
16781
17140
  var TOTAL = 3;
16782
17141
  var PrintExamView2 = function PrintExamView2(_ref) {
16783
17142
  var history = _ref.history,
@@ -16812,7 +17171,23 @@ var PrintExamView2 = function PrintExamView2(_ref) {
16812
17171
  var _useState5 = useState([]),
16813
17172
  errorLinks = _useState5[0],
16814
17173
  setErrorLinks = _useState5[1];
17174
+ var _useState6 = useState([]),
17175
+ status = _useState6[0],
17176
+ setStatus = _useState6[1];
16815
17177
  var theme = useTheme();
17178
+ var handleChangeStatus = function handleChangeStatus(event) {
17179
+ if (event.target.checked) {
17180
+ setStatus(function (prev) {
17181
+ var _event$target;
17182
+ return [].concat(prev, [(_event$target = event.target) === null || _event$target === void 0 ? void 0 : _event$target.value]);
17183
+ });
17184
+ } else setStatus(function (prev) {
17185
+ return prev === null || prev === void 0 ? void 0 : prev.filter(function (i) {
17186
+ var _event$target2;
17187
+ return i !== ((_event$target2 = event.target) === null || _event$target2 === void 0 ? void 0 : _event$target2.value);
17188
+ });
17189
+ });
17190
+ };
16816
17191
  var handleProgressPrint = function handleProgressPrint() {
16817
17192
  setData(dataProps);
16818
17193
  setCompleted([]);
@@ -16820,6 +17195,9 @@ var PrintExamView2 = function PrintExamView2(_ref) {
16820
17195
  setErrorLinks([]);
16821
17196
  setState(PrintState$1.Printing);
16822
17197
  };
17198
+ console.log({
17199
+ status: status
17200
+ });
16823
17201
  var print = function print(_ref2) {
16824
17202
  var examSessionId = _ref2.examSessionId,
16825
17203
  studentId = _ref2.studentId,
@@ -16828,7 +17206,7 @@ var PrintExamView2 = function PrintExamView2(_ref) {
16828
17206
  var height = 200;
16829
17207
  var left = window.screenX + window.outerWidth / 2 - width / 2;
16830
17208
  var top = window.screenY + window.outerHeight / 2 - height / 2;
16831
- var url = isTeacher ? window.location.origin + "/teacher/exam-results/" + examSessionId + "/students/" + studentId + "/print" : window.location.origin + "/student/exam-results/" + code + "/print";
17209
+ var url = isTeacher ? window.location.origin + "/teacher/exam-results/" + examSessionId + "/students/" + studentId + "/print?status=" + status.join(",") : window.location.origin + "/student/exam-results/" + code + "/print";
16832
17210
  var windowName = isTeacher ? "popup-" + examSessionId + "-" + studentId : "popup-" + code;
16833
17211
  var windowSpecs = "left=" + left + ",top=" + top + ",width=" + width + ",height=" + height + ",location=yes,resizable=yes,scrollbars=yes,status=yes";
16834
17212
  var childWindow = window.open(url, windowName, windowSpecs);
@@ -16990,12 +17368,114 @@ var PrintExamView2 = function PrintExamView2(_ref) {
16990
17368
  disablePadding: true
16991
17369
  }, t("allowed_to_send_pop_ups_and_use_redirects")), React__default.createElement(ListItem, {
16992
17370
  disablePadding: true
16993
- }, t("disable_ask_where_to_save_each_file_before_downloading")))), React__default.createElement(Button, {
17371
+ }, t("disable_ask_where_to_save_each_file_before_downloading")))), isTeacher && React__default.createElement(Stack, null, React__default.createElement(Typography, {
17372
+ fontWeight: 700
17373
+ }, t("choose_to_print"), ":"), React__default.createElement(FormGroup, {
17374
+ sx: {
17375
+ display: "flex",
17376
+ flexDirection: "row",
17377
+ gap: 1,
17378
+ flexWrap: "wrap"
17379
+ }
17380
+ }, TabList$1.map(function (_ref3) {
17381
+ var label = _ref3.label,
17382
+ value = _ref3.value;
17383
+ return React__default.createElement(FormControlLabel, {
17384
+ control: React__default.createElement(Checkbox, {
17385
+ onChange: handleChangeStatus,
17386
+ value: value,
17387
+ checked: status.some(function (i) {
17388
+ return i === value.toString();
17389
+ })
17390
+ }),
17391
+ label: t(label)
17392
+ });
17393
+ }))), React__default.createElement(Button, {
16994
17394
  className: "mt-3",
16995
17395
  variant: "contained",
16996
17396
  onClick: handleProgressPrint
16997
17397
  }, t("print_pdf"))));
16998
17398
  };
16999
17399
 
17000
- export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AnswerCountSelector, ArticleCategorySelector, ArticleGroupView, BASE_URL, ChatContainer, ChatItemType, types as ChatTypes, CommonDialog, ConfirmDialog, index$1 as CoreHooks, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_PAGING_RESPONSE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, index as Enums, ExamDetailView, ExamEvent, ExamResultV2, Header, InputText, LANGUAGES, Language, LayoutContext, Loading, LoadingComponent, Login, SignIn as LoginWithPassword, NotFound, PUSHER_CONFIG, PassCodeCheck, PrintExamResultView, PrintExamView2, QuestionCountSelector, RecentUserAction, Role, SUPER_ADMIN_BASE_URL, ScoreSelector, SubjectSelector, index$2 as Textbook, TextbookViewDetail as TextbookDetail, TextbookList, TheAcademyDropdown, TheLanguageDropdown, index$3 as Types, api, apiUpload, canAccess as canAccessRoute, checkSuperUrl, createRecentUserActionListApi, diffFromNow, formatTime, getAcademyDomain, getAccessToken, getErrorMessage, getOrdinalSuffix, getRecentUserActionListApi, i18n, minutesToTimeSpan, setAlert, setLanguage, setLoading, setReFetchUserAcademies, setReadyRegisterPusher, setUser, store, times as timeUtils, toISOString, useAutoAcademyDomain, useCategorySelect, useChatContainer, useCountDownTimer, useGoogleSignOut, useLanguage, useLoadMore, useLogin, usePusherConversation, useSubjectSelect, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
17400
+ var urlSafeFormat = function urlSafeFormat(text) {
17401
+ return text.replaceAll(' ', "+");
17402
+ };
17403
+
17404
+ var useLoginWithEmail = function useLoginWithEmail(_ref) {
17405
+ var history = _ref.history,
17406
+ homeAcademyUrl = _ref.homeAcademyUrl,
17407
+ homeUrl = _ref.homeUrl,
17408
+ registerUrl = _ref.registerUrl,
17409
+ role = _ref.role;
17410
+ var _useLocation = useLocation(),
17411
+ searchLocation = _useLocation.search;
17412
+ var _useTranslation = useTranslation(),
17413
+ t = _useTranslation.t;
17414
+ var searchParams = new URLSearchParams(searchLocation);
17415
+ var key = urlSafeFormat(searchParams.get("key") || "");
17416
+ var dispatch = useDispatch();
17417
+ var paramDomain = searchParams.get("domain");
17418
+ var academyDomainStorage = getAcademyDomain();
17419
+ var academyDomain = paramDomain || academyDomainStorage || "";
17420
+ var handleSignIn = function handleSignIn() {
17421
+ try {
17422
+ var _temp2 = function _temp2() {
17423
+ dispatch(setLoading(false));
17424
+ };
17425
+ dispatch(setLoading(true));
17426
+ var _temp = _catch(function () {
17427
+ return Promise.resolve(signInWithKeyApi({
17428
+ academyDomain: academyDomain,
17429
+ key: key,
17430
+ role: role
17431
+ })).then(function (res) {
17432
+ var loginResponse = res === null || res === void 0 ? void 0 : res.data;
17433
+ var isFirstLogin = loginResponse.isFirstLogin,
17434
+ token = loginResponse.token,
17435
+ user = loginResponse.user;
17436
+ var isAcademy = !!(user !== null && user !== void 0 && user.academyDomain);
17437
+ var needToRegister = isFirstLogin && isAcademy;
17438
+ var redirectUrl = needToRegister ? registerUrl : isAcademy ? homeAcademyUrl : homeUrl;
17439
+ redirectLoginUser(user, token, redirectUrl);
17440
+ });
17441
+ }, function (error) {
17442
+ console.log(error);
17443
+ toast.error(getErrorMessage(t, error, t("request_login_fail")));
17444
+ });
17445
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
17446
+ } catch (e) {
17447
+ return Promise.reject(e);
17448
+ }
17449
+ };
17450
+ var redirectLoginUser = function redirectLoginUser(data, token, redirectUrl) {
17451
+ localStorage.setItem(ACCESS_TOKEN, token);
17452
+ !data.academyDomain && localStorage.removeItem(ACADEMY_DOMAIN);
17453
+ !!data.academyDomain && localStorage.setItem(ACADEMY_DOMAIN, data.academyDomain);
17454
+ dispatch(setUser(_extends({}, data)));
17455
+ if (redirectUrl) pushTo(history, redirectUrl);
17456
+ };
17457
+ useEffect(function () {
17458
+ if (!key) return;
17459
+ handleSignIn();
17460
+ });
17461
+ return {};
17462
+ };
17463
+
17464
+ var LoginWithEmail = function LoginWithEmail(_ref) {
17465
+ var history = _ref.history,
17466
+ homeAcademyUrl = _ref.homeAcademyUrl,
17467
+ homeUrl = _ref.homeUrl,
17468
+ registerUrl = _ref.registerUrl,
17469
+ role = _ref.role;
17470
+ useLoginWithEmail({
17471
+ history: history,
17472
+ homeAcademyUrl: homeAcademyUrl,
17473
+ homeUrl: homeUrl,
17474
+ registerUrl: registerUrl,
17475
+ role: role
17476
+ });
17477
+ return React__default.createElement(Loading, null);
17478
+ };
17479
+
17480
+ export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AnswerCountSelector, ArticleCategorySelector, ArticleGroupView, BASE_URL, ChatContainer, ChatItemType, types as ChatTypes, CommonDialog, ConfirmDialog, index$1 as CoreHooks, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_PAGING_RESPONSE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, index as Enums, ExamDetailView, ExamEvent, ExamResultV2, Header, InputText, LANGUAGES, Language, LayoutContext, Loading, LoadingComponent, Login, LoginWithEmail, SignIn as LoginWithPassword, NotFound, PUSHER_CONFIG, PassCodeCheck, PrintExamResultView, PrintExamView2, QuestionCountSelector, RecentUserAction, Role, SUPER_ADMIN_BASE_URL, ScoreSelector, SubjectSelector, index$2 as Textbook, TextbookViewDetail as TextbookDetail, TextbookList, TheAcademyDropdown, TheLanguageDropdown, index$3 as Types, api, apiUpload, canAccess as canAccessRoute, checkSuperUrl, createRecentUserActionListApi, diffFromNow, formatTime, getAcademyDomain, getAccessToken, getErrorMessage, getOrdinalSuffix, getRecentUserActionListApi, i18n, minutesToTimeSpan, setAlert, setLanguage, setLoading, setReFetchUserAcademies, setReadyRegisterPusher, setUser, store, times as timeUtils, toISOString, useAutoAcademyDomain, useCategorySelect, useChatContainer, useCountDownTimer, useGoogleSignOut, useLanguage, useLoadMore, useLogin, usePusherConversation, useSubjectSelect, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
17001
17481
  //# sourceMappingURL=index.modern.js.map