touchstudy-core 0.1.191 → 0.1.193

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.
@@ -16,9 +16,9 @@ import React__default, { useState, useEffect, Fragment as Fragment$1, useRef, us
16
16
  import { useTheme, Container, Typography, Stack, List, ListItem, FormGroup, FormControlLabel, Checkbox, Button, Box, Dialog, DialogTitle, IconButton, useMediaQuery, DialogContent, TextField, DialogActions, styled, FormLabel, Pagination, Paper, InputBase, Tooltip, tooltipClasses, Grid, ClickAwayListener, CircularProgress, FormControl, RadioGroup, Radio, Accordion, AccordionSummary, AccordionDetails, InputAdornment, Card as Card$1, Avatar, Table, TableHead, TableRow, TableCell, TableBody, Divider, Skeleton, Tabs, Tab, Drawer, TableContainer, tableCellClasses, Popover, Switch, InputLabel, Chip, ListItemButton, ListItemAvatar, ListItemText, Badge, CardMedia as CardMedia$1, MenuList } from '@mui/material';
17
17
  import moment from 'moment';
18
18
  export { default as moment } from 'moment';
19
- import { FaSave, FaCaretDown, FaTimes, FaTrash, FaSortUp, FaSortDown, FaPlusCircle, FaEye, FaPlus, FaCalendar, FaUser, FaBookOpen, FaUpload, FaCheckCircle, FaShare, FaExchangeAlt, FaPencilAlt, FaBell } from 'react-icons/fa';
19
+ import { FaSave, FaCaretDown, FaTrash, FaTimes, FaSortUp, FaSortDown, FaPlusCircle, FaEye, FaPlus, FaCalendar, FaUser, FaBookOpen, FaUpload, FaCheckCircle, FaShare, FaExchangeAlt, FaPencilAlt, FaBell } from 'react-icons/fa';
20
20
  import { IoMdArrowBack, IoIosAdd, IoMdSync, IoIosAlert, IoIosArrowDown, IoIosSearch, IoIosArrowUp, IoMdAdd } from 'react-icons/io';
21
- import { IoClose, IoSearch, IoCloseOutline, IoTime, IoChatbubbleEllipsesSharp, IoPrint, IoChevronDown, IoCheckmarkCircle, IoChevronUpOutline, IoChevronDownOutline, IoReceiptSharp, IoBook, IoWarning, IoCalendarClear, IoPerson, IoInformationCircle, IoTrash, IoAddCircle, IoCheckmark, IoCloseCircle, IoLogOut } from 'react-icons/io5';
21
+ import { IoClose, IoSearch, IoTime, IoChatbubbleEllipsesSharp, IoPrint, IoChevronDown, IoCheckmarkCircle, IoChevronUpOutline, IoChevronDownOutline, IoReceiptSharp, IoBook, IoWarning, IoCalendarClear, IoPerson, IoInformationCircle, IoTrash, IoAddCircle, IoCheckmark, IoCloseCircle, IoLogOut } from 'react-icons/io5';
22
22
  import _$a from 'lodash';
23
23
  import { useSelector, useDispatch } from 'react-redux';
24
24
  import axios from 'axios';
@@ -1580,6 +1580,7 @@ var recent_class_exams = "최근 수업 시험";
1580
1580
  var there_are_no_problems_you_were_working_on = "풀던 문제가 없습니다.";
1581
1581
  var incomplete_exam = "미참가";
1582
1582
  var completed_exam = "참가";
1583
+ var failed_to_send_the_image_error = "이미지를 보내지 못했습니다: {{ message }}";
1583
1584
  var lang_ko = {
1584
1585
  problem_solving: problem_solving,
1585
1586
  my_story: my_story,
@@ -2787,7 +2788,8 @@ var lang_ko = {
2787
2788
  recent_class_exams: recent_class_exams,
2788
2789
  there_are_no_problems_you_were_working_on: there_are_no_problems_you_were_working_on,
2789
2790
  incomplete_exam: incomplete_exam,
2790
- completed_exam: completed_exam
2791
+ completed_exam: completed_exam,
2792
+ failed_to_send_the_image_error: failed_to_send_the_image_error
2791
2793
  };
2792
2794
 
2793
2795
  var problem_solving$1 = "Problem Solving";
@@ -4022,6 +4024,7 @@ var recent_class_exams$1 = "Recent Class Exams";
4022
4024
  var there_are_no_problems_you_were_working_on$1 = "There are no problems you were working on";
4023
4025
  var incomplete_exam$1 = "Incomplete";
4024
4026
  var completed_exam$1 = "Completed";
4027
+ var failed_to_send_the_image_error$1 = "Failed to send the image: {{ message }}";
4025
4028
  var lang_en = {
4026
4029
  problem_solving: problem_solving$1,
4027
4030
  my_story: my_story$1,
@@ -5231,7 +5234,8 @@ var lang_en = {
5231
5234
  recent_class_exams: recent_class_exams$1,
5232
5235
  there_are_no_problems_you_were_working_on: there_are_no_problems_you_were_working_on$1,
5233
5236
  incomplete_exam: incomplete_exam$1,
5234
- completed_exam: completed_exam$1
5237
+ completed_exam: completed_exam$1,
5238
+ failed_to_send_the_image_error: failed_to_send_the_image_error$1
5235
5239
  };
5236
5240
 
5237
5241
  i18n.use(initReactI18next).init({
@@ -7346,6 +7350,126 @@ var useVirtualizeList = function useVirtualizeList(totalItems, rowHeight, offset
7346
7350
  };
7347
7351
  };
7348
7352
 
7353
+ var useVirtualList = function useVirtualList(defaultFilter, getItemsApi) {
7354
+ var _useTranslation = useTranslation(),
7355
+ t = _useTranslation.t;
7356
+ var user = useSelector(function (state) {
7357
+ var _state$common;
7358
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
7359
+ });
7360
+ var academyDomain = user === null || user === void 0 ? void 0 : user.academyDomain;
7361
+ var isLearningSpace = user === null || user === void 0 ? void 0 : user.isLearningSpace;
7362
+ var userId = user === null || user === void 0 ? void 0 : user.id;
7363
+ var _useState = useState([]),
7364
+ items = _useState[0],
7365
+ setItems = _useState[1];
7366
+ var _useState2 = useState(0),
7367
+ totalPages = _useState2[0],
7368
+ setTotalPages = _useState2[1];
7369
+ var _useState3 = useState(0),
7370
+ totalItems = _useState3[0],
7371
+ setTotalItems = _useState3[1];
7372
+ var _useState4 = useState(),
7373
+ selectedItem = _useState4[0],
7374
+ setSelectedItem = _useState4[1];
7375
+ var _useState5 = useState(false),
7376
+ isLoading = _useState5[0],
7377
+ setLoading = _useState5[1];
7378
+ var _useState6 = useState(),
7379
+ filter = _useState6[0],
7380
+ setFilter = _useState6[1];
7381
+ var handleChangeSelectedItem = function handleChangeSelectedItem(data) {
7382
+ setSelectedItem(data);
7383
+ };
7384
+ var getItems = function getItems() {
7385
+ try {
7386
+ var _temp2 = function _temp2() {
7387
+ setLoading(false);
7388
+ };
7389
+ if (isLoading) return Promise.resolve();
7390
+ if (!filter || !filter.currentPage) {
7391
+ setItems([]);
7392
+ return Promise.resolve();
7393
+ }
7394
+ setLoading(true);
7395
+ var _temp = _catch(function () {
7396
+ return Promise.resolve(getItemsApi(filter)).then(function (res) {
7397
+ var responseData = res.data;
7398
+ setTotalPages((responseData === null || responseData === void 0 ? void 0 : responseData.totalPages) || 0);
7399
+ setTotalItems((responseData === null || responseData === void 0 ? void 0 : responseData.totalItems) || 0);
7400
+ var responseItems = (responseData === null || responseData === void 0 ? void 0 : responseData.items) || [];
7401
+ var results = responseItems;
7402
+ if (filter !== null && filter !== void 0 && filter.currentPage && filter.currentPage > 1) {
7403
+ results = [].concat(_$a.uniqBy([].concat(items, responseItems), "id"));
7404
+ }
7405
+ setItems(results);
7406
+ });
7407
+ }, function (error) {
7408
+ toast.error(getErrorMessage(t, error));
7409
+ });
7410
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
7411
+ } catch (e) {
7412
+ return Promise.reject(e);
7413
+ }
7414
+ };
7415
+ var handleLoadMore = useCallback(function () {
7416
+ if (isLoading) return;
7417
+ setFilter(function (state) {
7418
+ return !state || state.currentPage === undefined || state.currentPage >= totalPages ? state : _extends({}, state, {
7419
+ currentPage: state.currentPage + 1
7420
+ });
7421
+ });
7422
+ }, [totalPages, isLoading]);
7423
+ var handleItemAdded = function handleItemAdded(item) {
7424
+ var results = [].concat(_$a.uniqBy([item].concat(items), "id"));
7425
+ setItems(results);
7426
+ };
7427
+ var handleItemUpdated = function handleItemUpdated(item) {
7428
+ var results = items.map(function (i) {
7429
+ return i.id !== item.id ? i : item;
7430
+ });
7431
+ setItems(results);
7432
+ };
7433
+ var handleItemRemoved = function handleItemRemoved(_item) {
7434
+ getItems();
7435
+ };
7436
+ var handleChangeFilter = function handleChangeFilter(newFilter) {
7437
+ setFilter(newFilter);
7438
+ };
7439
+ var resetData = function resetData() {
7440
+ setTotalPages(0);
7441
+ setTotalItems(0);
7442
+ setItems([]);
7443
+ };
7444
+ useEffect(function () {
7445
+ resetData();
7446
+ setFilter(function (state) {
7447
+ if (JSON.stringify(state) == JSON.stringify(defaultFilter)) getItems();
7448
+ return defaultFilter;
7449
+ });
7450
+ }, [JSON.stringify(defaultFilter), isLearningSpace, academyDomain, userId]);
7451
+ useEffect(function () {
7452
+ getItems();
7453
+ }, [JSON.stringify(filter), getItemsApi]);
7454
+ return {
7455
+ t: t,
7456
+ filter: filter,
7457
+ selectedItem: selectedItem,
7458
+ items: items,
7459
+ isLoading: isLoading,
7460
+ totalItems: totalItems,
7461
+ resetData: resetData,
7462
+ handleChangeFilter: handleChangeFilter,
7463
+ setItems: setItems,
7464
+ handleChangeSelectedItem: handleChangeSelectedItem,
7465
+ handleLoadMore: handleLoadMore,
7466
+ getItems: getItems,
7467
+ handleItemAdded: handleItemAdded,
7468
+ handleItemRemoved: handleItemRemoved,
7469
+ handleItemUpdated: handleItemUpdated
7470
+ };
7471
+ };
7472
+
7349
7473
  var RecentUserActionSortBy;
7350
7474
  (function (RecentUserActionSortBy) {
7351
7475
  RecentUserActionSortBy["CreatedAt"] = "CreatedAt";
@@ -9538,24 +9662,27 @@ var InputChat = function InputChat(_ref) {
9538
9662
  width: "fit-content"
9539
9663
  }
9540
9664
  }, React__default.createElement("img", {
9541
- src: selectedFile === null || selectedFile === void 0 ? void 0 : selectedFile.content,
9665
+ src: selectedFile,
9542
9666
  style: {
9543
9667
  height: "100px",
9544
9668
  objectFit: "contain",
9545
9669
  objectPosition: "center"
9546
9670
  }
9547
- }), React__default.createElement("div", {
9671
+ }), React__default.createElement(IconButton, {
9672
+ size: "small",
9673
+ color: "error",
9548
9674
  style: {
9549
9675
  position: "absolute",
9550
9676
  right: 0,
9551
9677
  top: 0,
9552
- cursor: "pointer"
9678
+ padding: "8px",
9679
+ cursor: "pointer",
9680
+ background: grey[100]
9553
9681
  },
9554
9682
  onClick: handleDeleteSelectedImage
9555
- }, React__default.createElement(IoCloseOutline, {
9556
- color: "#fff",
9557
- size: 30
9558
- }))), React__default.createElement(TinyChatEditor, {
9683
+ }, React__default.createElement(FaTrash, {
9684
+ size: 16
9685
+ }))), !selectedFile && React__default.createElement(TinyChatEditor, {
9559
9686
  initValue: text,
9560
9687
  onChange: onChangeInput,
9561
9688
  disabled: isCompleted
@@ -10256,14 +10383,17 @@ var useChatContainer = function useChatContainer(props) {
10256
10383
  selectedConversation = _useState[0],
10257
10384
  setSelectedConversation = _useState[1];
10258
10385
  var _useState2 = useState(),
10259
- selectedFile = _useState2[0],
10260
- setSelectedFile = _useState2[1];
10261
- var _useState3 = useState(),
10262
- message = _useState3[0],
10263
- setMessage = _useState3[1];
10264
- var _useState4 = useState(true),
10265
- isScrollToEnd = _useState4[0],
10266
- setScrollToEnd = _useState4[1];
10386
+ file = _useState2[0],
10387
+ setFile = _useState2[1];
10388
+ var _useState3 = useState(null),
10389
+ backgroundImage = _useState3[0],
10390
+ setBackgroundImage = _useState3[1];
10391
+ var _useState4 = useState(),
10392
+ message = _useState4[0],
10393
+ setMessage = _useState4[1];
10394
+ var _useState5 = useState(true),
10395
+ isScrollToEnd = _useState5[0],
10396
+ setScrollToEnd = _useState5[1];
10267
10397
  var isAdmin = roles === null || roles === void 0 ? void 0 : roles.includes(Role.Admin);
10268
10398
  var _useMessageList = useMessageList({
10269
10399
  student: student
@@ -10286,34 +10416,39 @@ var useChatContainer = function useChatContainer(props) {
10286
10416
  };
10287
10417
  var handleAddMessage = function handleAddMessage() {
10288
10418
  try {
10289
- var _temp6 = function _temp6() {
10419
+ var _temp3 = function _temp3(_result2) {
10420
+ if (_exit) return _result2;
10290
10421
  loadingRef.current = false;
10291
10422
  };
10423
+ var _exit = false;
10292
10424
  if (loadingRef.current) return Promise.resolve();
10293
10425
  loadingRef.current = true;
10294
10426
  if (!(selectedConversation !== null && selectedConversation !== void 0 && selectedConversation.id)) return Promise.resolve();
10295
10427
  setScrollToEnd(true);
10296
- var _temp5 = _catch(function () {
10297
- function _temp4() {
10298
- function _temp2() {
10299
- handleChangeInput('');
10300
- setSelectedFile(null);
10301
- }
10302
- var _temp = function (_message$content) {
10428
+ var _temp2 = _catch(function () {
10429
+ if (file) {
10430
+ return Promise.resolve(handleUploadImageData(file)).then(function (selectedFile) {
10431
+ if (!selectedFile) {
10432
+ _exit = true;
10433
+ return;
10434
+ }
10435
+ return Promise.resolve(apiAddMessage(selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.id, _extends({}, selectedFile, {
10436
+ contentType: 1
10437
+ }))).then(function () {
10438
+ setFile(undefined);
10439
+ setBackgroundImage(null);
10440
+ });
10441
+ });
10442
+ } else {
10443
+ var _temp4 = function (_message$content) {
10303
10444
  if (message !== null && message !== void 0 && (_message$content = message.content) !== null && _message$content !== void 0 && _message$content.trim().length) {
10304
- return Promise.resolve(apiAddMessage(selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.id, _extends({}, message))).then(function () {});
10445
+ return Promise.resolve(apiAddMessage(selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.id, _extends({}, message))).then(function () {
10446
+ handleChangeInput('');
10447
+ });
10305
10448
  }
10306
10449
  }();
10307
- return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
10450
+ if (_temp4 && _temp4.then) return _temp4.then(function () {});
10308
10451
  }
10309
- var _temp3 = function () {
10310
- if (selectedFile !== null && selectedFile !== void 0 && selectedFile.content) {
10311
- return Promise.resolve(apiAddMessage(selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.id, _extends({}, selectedFile, {
10312
- contentType: 1
10313
- }))).then(function () {});
10314
- }
10315
- }();
10316
- return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
10317
10452
  }, function (error) {
10318
10453
  setMessages(function (state) {
10319
10454
  return [].concat(state.filter(function (i) {
@@ -10322,31 +10457,51 @@ var useChatContainer = function useChatContainer(props) {
10322
10457
  });
10323
10458
  toast.error(getErrorMessage(t, error));
10324
10459
  });
10325
- return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
10460
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2));
10326
10461
  } catch (e) {
10327
10462
  return Promise.reject(e);
10328
10463
  }
10329
10464
  };
10330
10465
  var handleUploadImage = function handleUploadImage(file) {
10331
- return file ? Promise.resolve(_finally(function () {
10332
- return _catch(function () {
10466
+ try {
10467
+ if (file) {
10468
+ setFile(file);
10469
+ var reader = new FileReader();
10470
+ reader.onload = function () {
10471
+ setBackgroundImage(reader.result);
10472
+ };
10473
+ reader.readAsDataURL(file);
10474
+ }
10475
+ return Promise.resolve();
10476
+ } catch (e) {
10477
+ return Promise.reject(e);
10478
+ }
10479
+ };
10480
+ var handleUploadImageData = function handleUploadImageData(file) {
10481
+ try {
10482
+ return Promise.resolve(_catch(function () {
10333
10483
  var formData = new FormData();
10334
10484
  formData.append("upload", file);
10335
10485
  return Promise.resolve(apiUploadImageFile(formData)).then(function (res) {
10336
10486
  var _res$data;
10337
- setSelectedFile({
10487
+ return {
10338
10488
  content: res === null || res === void 0 ? void 0 : (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.url
10339
- });
10489
+ };
10340
10490
  });
10341
10491
  }, function (error) {
10492
+ toast.error(t("failed_to_send_the_image_error", {
10493
+ message: getErrorMessage(t, error)
10494
+ }));
10342
10495
  setMessages(function (state) {
10343
10496
  return [].concat(state.filter(function (i) {
10344
10497
  return (i === null || i === void 0 ? void 0 : i.id) !== 0;
10345
10498
  }));
10346
10499
  });
10347
- toast.error(getErrorMessage(t, error));
10348
- });
10349
- }, function () {})) : Promise.resolve();
10500
+ return null;
10501
+ }));
10502
+ } catch (e) {
10503
+ return Promise.reject(e);
10504
+ }
10350
10505
  };
10351
10506
  var handleChangeInput = function handleChangeInput(text) {
10352
10507
  setMessage({
@@ -10355,7 +10510,7 @@ var useChatContainer = function useChatContainer(props) {
10355
10510
  };
10356
10511
  var handleNewMessageSent = function handleNewMessageSent(data) {
10357
10512
  try {
10358
- var _temp7 = function _temp7(_updateLastTimeReadCo) {
10513
+ var _temp5 = function _temp5(_updateLastTimeReadCo) {
10359
10514
  _updateLastTimeReadCo;
10360
10515
  };
10361
10516
  if (!data) return Promise.resolve();
@@ -10364,14 +10519,14 @@ var useChatContainer = function useChatContainer(props) {
10364
10519
  return [].concat(state, [data]);
10365
10520
  });
10366
10521
  var _selectedConversation = selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.id;
10367
- return Promise.resolve(_selectedConversation ? Promise.resolve(updateLastTimeReadConversation(selectedConversation.id)).then(_temp7) : _temp7(_selectedConversation));
10522
+ return Promise.resolve(_selectedConversation ? Promise.resolve(updateLastTimeReadConversation(selectedConversation.id)).then(_temp5) : _temp5(_selectedConversation));
10368
10523
  } catch (e) {
10369
10524
  return Promise.reject(e);
10370
10525
  }
10371
10526
  };
10372
10527
  var handleNewConversation = function handleNewConversation(data) {
10373
10528
  try {
10374
- var _temp8 = function _temp8(_updateLastTimeReadCo2) {
10529
+ var _temp6 = function _temp6(_updateLastTimeReadCo2) {
10375
10530
  _updateLastTimeReadCo2;
10376
10531
  };
10377
10532
  if (!data) return Promise.resolve();
@@ -10381,7 +10536,7 @@ var useChatContainer = function useChatContainer(props) {
10381
10536
  return [].concat(state, [item]);
10382
10537
  });
10383
10538
  var _selectedConversation2 = selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.id;
10384
- return Promise.resolve(_selectedConversation2 ? Promise.resolve(updateLastTimeReadConversation(selectedConversation.id)).then(_temp8) : _temp8(_selectedConversation2));
10539
+ return Promise.resolve(_selectedConversation2 ? Promise.resolve(updateLastTimeReadConversation(selectedConversation.id)).then(_temp6) : _temp6(_selectedConversation2));
10385
10540
  } catch (e) {
10386
10541
  return Promise.reject(e);
10387
10542
  }
@@ -10400,7 +10555,8 @@ var useChatContainer = function useChatContainer(props) {
10400
10555
  }
10401
10556
  };
10402
10557
  var handleDeleteSelectedImage = function handleDeleteSelectedImage() {
10403
- setSelectedFile(null);
10558
+ setFile(undefined);
10559
+ setBackgroundImage(null);
10404
10560
  };
10405
10561
  var cleanupPusher = function cleanupPusher() {
10406
10562
  pusher === null || pusher === void 0 ? void 0 : pusher.unbind("new-message-event", handleNewMessageSent);
@@ -10486,7 +10642,7 @@ var useChatContainer = function useChatContainer(props) {
10486
10642
  handleDeleteMessage: handleDeleteMessage
10487
10643
  },
10488
10644
  inputProps: {
10489
- selectedFile: selectedFile,
10645
+ selectedFile: backgroundImage,
10490
10646
  text: (message === null || message === void 0 ? void 0 : message.content) || "",
10491
10647
  onChangeInput: handleChangeInput,
10492
10648
  onSubmit: handleAddMessage,
@@ -10569,10 +10725,11 @@ var useVirtualListView = function useVirtualListView(props) {
10569
10725
  handleLoadMore();
10570
10726
  }
10571
10727
  };
10728
+ var decounceScroll = _$a.debounce(onScroll, 300);
10572
10729
  var rowCount = data.length + (loading ? 1 : 0);
10573
10730
  return {
10574
10731
  rowCount: rowCount,
10575
- onScroll: onScroll
10732
+ onScroll: decounceScroll
10576
10733
  };
10577
10734
  };
10578
10735
 
@@ -15978,7 +16135,7 @@ var useStudentInfoDrawer = function useStudentInfoDrawer(props) {
15978
16135
  var _temp2 = function _temp2() {
15979
16136
  setLoading(false);
15980
16137
  };
15981
- if (!studentId) return Promise.resolve();
16138
+ if (!studentId || !open) return Promise.resolve();
15982
16139
  setLoading(true);
15983
16140
  var _temp = _catch(function () {
15984
16141
  return Promise.resolve(getUserByIdApi(studentId)).then(function (res) {
@@ -15991,7 +16148,7 @@ var useStudentInfoDrawer = function useStudentInfoDrawer(props) {
15991
16148
  }
15992
16149
  };
15993
16150
  getStudent();
15994
- }, [studentId]);
16151
+ }, [open, studentId]);
15995
16152
  useEffect(function () {
15996
16153
  if (open && inert) {
15997
16154
  var _document$getElementB;
@@ -18379,107 +18536,6 @@ function a11yProps$1(index) {
18379
18536
  };
18380
18537
  }
18381
18538
 
18382
- var useVirtualList = function useVirtualList(defaultFilter, getItemsApi) {
18383
- var _useTranslation = useTranslation(),
18384
- t = _useTranslation.t;
18385
- var _useState = useState([]),
18386
- items = _useState[0],
18387
- setItems = _useState[1];
18388
- var _useState2 = useState(0),
18389
- totalPages = _useState2[0],
18390
- setTotalPages = _useState2[1];
18391
- var _useState3 = useState(),
18392
- selectedItem = _useState3[0],
18393
- setSelectedItem = _useState3[1];
18394
- var _useState4 = useState(false),
18395
- isLoading = _useState4[0],
18396
- setLoading = _useState4[1];
18397
- var _useState5 = useState(),
18398
- filter = _useState5[0],
18399
- setFilter = _useState5[1];
18400
- var handleChangeSelectedItem = function handleChangeSelectedItem(data) {
18401
- setSelectedItem(data);
18402
- };
18403
- var getItems = function getItems() {
18404
- try {
18405
- var _temp2 = function _temp2() {
18406
- setLoading(false);
18407
- };
18408
- if (isLoading) return Promise.resolve();
18409
- if (!filter || !filter.currentPage) {
18410
- setItems([]);
18411
- return Promise.resolve();
18412
- }
18413
- setLoading(true);
18414
- var _temp = _catch(function () {
18415
- return Promise.resolve(getItemsApi(filter)).then(function (res) {
18416
- var responseData = res.data;
18417
- setTotalPages((responseData === null || responseData === void 0 ? void 0 : responseData.totalPages) || 0);
18418
- var responseItems = (responseData === null || responseData === void 0 ? void 0 : responseData.items) || [];
18419
- var results = responseItems;
18420
- if (filter !== null && filter !== void 0 && filter.currentPage && filter.currentPage > 1) {
18421
- results = [].concat(_$a.uniqBy([].concat(items, responseItems), "id"));
18422
- }
18423
- setItems(results);
18424
- });
18425
- }, function (error) {
18426
- toast.error(getErrorMessage(t, error));
18427
- });
18428
- return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
18429
- } catch (e) {
18430
- return Promise.reject(e);
18431
- }
18432
- };
18433
- var handleLoadMore = useCallback(function () {
18434
- if (!filter || !filter.currentPage || filter.currentPage >= totalPages) {
18435
- return;
18436
- }
18437
- setFilter(function (state) {
18438
- var _filter$currentPage;
18439
- return !state ? state : _extends({}, state, {
18440
- currentPage: ((_filter$currentPage = filter.currentPage) != null ? _filter$currentPage : 0) + 1
18441
- });
18442
- });
18443
- }, [filter === null || filter === void 0 ? void 0 : filter.currentPage, totalPages]);
18444
- var handleItemAdded = function handleItemAdded(item) {
18445
- var results = [].concat(_$a.uniqBy([item].concat(items), "id"));
18446
- setItems(results);
18447
- };
18448
- var handleItemUpdated = function handleItemUpdated(item) {
18449
- var results = items.map(function (i) {
18450
- return i.id !== item.id ? i : item;
18451
- });
18452
- setItems(results);
18453
- };
18454
- var handleItemRemoved = function handleItemRemoved(_item) {
18455
- getItems();
18456
- };
18457
- var handleChangeFilter = function handleChangeFilter(newFilter) {
18458
- setFilter(newFilter);
18459
- };
18460
- useEffect(function () {
18461
- setFilter(defaultFilter);
18462
- }, [JSON.stringify(defaultFilter)]);
18463
- useEffect(function () {
18464
- getItems();
18465
- }, [JSON.stringify(filter), getItemsApi]);
18466
- return {
18467
- t: t,
18468
- filter: filter,
18469
- selectedItem: selectedItem,
18470
- items: items,
18471
- isLoading: isLoading,
18472
- handleChangeFilter: handleChangeFilter,
18473
- setItems: setItems,
18474
- handleChangeSelectedItem: handleChangeSelectedItem,
18475
- handleLoadMore: handleLoadMore,
18476
- getItems: getItems,
18477
- handleItemAdded: handleItemAdded,
18478
- handleItemRemoved: handleItemRemoved,
18479
- handleItemUpdated: handleItemUpdated
18480
- };
18481
- };
18482
-
18483
18539
  var NOTES_URL$1 = BASE_URL + "/api/notes";
18484
18540
  var getNotesApi$1 = function getNotesApi(query) {
18485
18541
  return api.get("" + NOTES_URL$1, {
@@ -39127,5 +39183,5 @@ var LayoutContext = function LayoutContext(_ref) {
39127
39183
  });else return React__default.createElement(Fragment$1, null, children);
39128
39184
  };
39129
39185
 
39130
- export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AcceptNoAcademy, ActionButtons, AnnouncementContainer, AnnouncementType, AnswerCountSelector, ArticleBlock$1 as ArticleBlock, ArticleCategorySelector, ArticleDialog, AttendanceFormDialog, BASE_URL, BRIEF_GRADE_OPTIONS, ChatContainer, types as ChatTypes, ClassDetail, ClassList, ClassNoteDialog, ClassSelector, CommonCreateNewQuestionDialog, CommonDialog, CompareTypeOptions, ConfirmDeleteDialog, ConfirmDialog, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_ANSWER_COUNT, DEFAULT_ARTICLE, DEFAULT_MATH_QUESTION_GROUP, DEFAULT_NOTE_FILTER, DEFAULT_PAGING_RESPONSE, DEFAULT_QUESTION, DEFAULT_QUESTION_GROUP, DEFAULT_SCORE$1 as DEFAULT_SCORE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, ExamDetailView, ExamEditorType, ExamEvent, ExamNoteDialog, ExamResultV2, ExamSessionItem, ExamStatus, GOOGLE_CLIENT_ID, GOOGLE_RECAPTCHA_ID, GOOGLE_RECAPTCHA_KEY, GOOGLE_RECAPTCHA_SECRET, GRADE_OPTIONS, Header, HexagonChart, InputText, LANGUAGE, LEARNING_SPACE, Language, LanguageHeaders, LayoutContext, LessonTooltip, ListView, Loading, LoadingComponent, Login, LoginQRCode, LoginWithEmail, SignIn as LoginWithPassword, MathJaxContainer, MathTinyEditor, MonthGroupedExamSessionItem, NewNoteButton, NoAcademyHeaders, NotFound, NoteDrawer, NoteTabs, NoteType, NotesContainer, NotificationDetail, NotificationList, OrderBy, OrderType, PRE_REDIRECT_URL, PUSHER_CONFIG, PassCodeCheck, PassCodeDialog, PreparedItem, PreparedTextbookList, PreparedTextbookView, PreparedType, PrintContainerClassName, PrintContentClassName, PrintExamResultView, PrintExamView2, PrintHeaderClassName, PrintTitleClassName, QRCodeConfirmation, QuestionAnswerType, QuestionBlock$1 as QuestionBlock, QuestionCompareType, QuestionCountSelector, QuestionGroupBlock, QuestionGroupBlockBody$1 as QuestionGroupBlockBody, QuestionOrderName, QuestionShortInput$1 as QuestionShortInput, REDIRECT_URL, RELEASE_DATE, RecentUserAction, RecentUserActionNames, RecentUserActionSortBy, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, SchoolType, ScoreSelector, SearchInput, ShareToTeacherDialog, SolutionOrderChart, StudentInfoDrawer, StudentSelector, SubjectSelector, TextbookActionButtons, TextbookDrawer, TextbookEditorType, TextbookList, TheAcademyDropdown, TheLanguageDropdown, TimeChart, TimeOrderChart, TinyEditor, UserList, UserSortColumn, VirtualListView, VirtualTableView, api, apiUpload, canAccess as canAccessRoute, cleanRichText, convertHHMMSStoSeconds, createRecentUserActionListApi, diffFromNow, ellipsisText, encodeParams, formatDataMyAnswer, formatDateTime, formatPhoneNumber, formatRole, formatTextbookDataMyAnswer, formatTime, formatTimeSecond, generateNewQuestionGroup, getAcademyDomain, getAccessToken, getErrorMessage, getLanguage, getLearningSpace, getLocalDayOfWeek, getOrdinalSuffix, getPercentage, getPreviousQuestinGroupCategory, getQuestionGroupsAfterQuestionCountChanged, getRecentUserActionListApi, getRedirectUrl, getRemainTime, getRole, getUtcDayOfWeek, groupMonth, handleKeyDown, i18n, includePathname, isLocalHost, isSequentialQuestionGroups, isTextType, labelStyle, minutesToTimeSpan, pushTo, _reduceToMathArticles as reduceToMathArticles, reset, _resetAllCategoriesAndQuestionTypesBySubject as resetAllCategoriesAndQuestionTypesBySubject, setAcademies, setAcademy, setAlert, setConcurrentConnectionPusher, setLanguage, setLoading, setReFetchUserAcademies, setTotalUnreadMessages, setUser, store, timAgo, timeSpanToLocalMoment, toISOString, toLocalTime, useAutoAcademyDomain, useChatContainer, useCountDownTimer, useGoogleSignOut, useKeyboardVisible, useLanguage, useList, useLoadMore, useLogin, useNotes, usePusherConversation, useSwitchAcademy, useVirtualizeList, utcToLocalTime };
39186
+ export { ACADEMY_DOMAIN, ACCESS_TOKEN, AcademyHeaders, AcademyList, AcceptNoAcademy, ActionButtons, AnnouncementContainer, AnnouncementType, AnswerCountSelector, ArticleBlock$1 as ArticleBlock, ArticleCategorySelector, ArticleDialog, AttendanceFormDialog, BASE_URL, BRIEF_GRADE_OPTIONS, ChatContainer, types as ChatTypes, ClassDetail, ClassList, ClassNoteDialog, ClassSelector, CommonCreateNewQuestionDialog, CommonDialog, CompareTypeOptions, ConfirmDeleteDialog, ConfirmDialog, CustomAsyncSelect, CustomCreatable, CustomPagination, CustomSelect, CustomSelectOption, DATE_MIN_VALUE, DATE_TIME_MIN_VALUE, DEFAULT_ANSWER_COUNT, DEFAULT_ARTICLE, DEFAULT_MATH_QUESTION_GROUP, DEFAULT_NOTE_FILTER, DEFAULT_PAGING_RESPONSE, DEFAULT_QUESTION, DEFAULT_QUESTION_GROUP, DEFAULT_SCORE$1 as DEFAULT_SCORE, DefaultErrorMessage, EXAM_CHANNEL, EXAM_STUDENT_CHANNEL, ExamDetailView, ExamEditorType, ExamEvent, ExamNoteDialog, ExamResultV2, ExamSessionItem, ExamStatus, GOOGLE_CLIENT_ID, GOOGLE_RECAPTCHA_ID, GOOGLE_RECAPTCHA_KEY, GOOGLE_RECAPTCHA_SECRET, GRADE_OPTIONS, Header, HexagonChart, InputText, LANGUAGE, LEARNING_SPACE, Language, LanguageHeaders, LayoutContext, LessonTooltip, ListView, Loading, LoadingComponent, Login, LoginQRCode, LoginWithEmail, SignIn as LoginWithPassword, MathJaxContainer, MathTinyEditor, MonthGroupedExamSessionItem, NewNoteButton, NoAcademyHeaders, NotFound, NoteDrawer, NoteTabs, NoteType, NotesContainer, NotificationDetail, NotificationList, OrderBy, OrderType, PRE_REDIRECT_URL, PUSHER_CONFIG, PassCodeCheck, PassCodeDialog, PreparedItem, PreparedTextbookList, PreparedTextbookView, PreparedType, PrintContainerClassName, PrintContentClassName, PrintExamResultView, PrintExamView2, PrintHeaderClassName, PrintTitleClassName, QRCodeConfirmation, QuestionAnswerType, QuestionBlock$1 as QuestionBlock, QuestionCompareType, QuestionCountSelector, QuestionGroupBlock, QuestionGroupBlockBody$1 as QuestionGroupBlockBody, QuestionOrderName, QuestionShortInput$1 as QuestionShortInput, REDIRECT_URL, RELEASE_DATE, RecentUserAction, RecentUserActionNames, RecentUserActionSortBy, ReleaseAlert, Role, SUPER_ADMIN_BASE_URL, SchoolType, ScoreSelector, SearchInput, ShareToTeacherDialog, SolutionOrderChart, StudentInfoDrawer, StudentSelector, SubjectSelector, TextbookActionButtons, TextbookDrawer, TextbookEditorType, TextbookList, TheAcademyDropdown, TheLanguageDropdown, TimeChart, TimeOrderChart, TinyEditor, UserList, UserSortColumn, VirtualListView, VirtualTableView, api, apiUpload, canAccess as canAccessRoute, cleanRichText, convertHHMMSStoSeconds, createRecentUserActionListApi, diffFromNow, ellipsisText, encodeParams, formatDataMyAnswer, formatDateTime, formatPhoneNumber, formatRole, formatTextbookDataMyAnswer, formatTime, formatTimeSecond, generateNewQuestionGroup, getAcademyDomain, getAccessToken, getErrorMessage, getLanguage, getLearningSpace, getLocalDayOfWeek, getOrdinalSuffix, getPercentage, getPreviousQuestinGroupCategory, getQuestionGroupsAfterQuestionCountChanged, getRecentUserActionListApi, getRedirectUrl, getRemainTime, getRole, getUtcDayOfWeek, groupMonth, handleKeyDown, i18n, includePathname, isLocalHost, isSequentialQuestionGroups, isTextType, labelStyle, minutesToTimeSpan, pushTo, _reduceToMathArticles as reduceToMathArticles, reset, _resetAllCategoriesAndQuestionTypesBySubject as resetAllCategoriesAndQuestionTypesBySubject, setAcademies, setAcademy, setAlert, setConcurrentConnectionPusher, setLanguage, setLoading, setReFetchUserAcademies, setTotalUnreadMessages, setUser, store, timAgo, timeSpanToLocalMoment, toISOString, toLocalTime, useAutoAcademyDomain, useChatContainer, useCountDownTimer, useGoogleSignOut, useKeyboardVisible, useLanguage, useList, useLoadMore, useLogin, useNotes, usePusherConversation, useSwitchAcademy, useVirtualList, useVirtualizeList, utcToLocalTime };
39131
39187
  //# sourceMappingURL=index.modern.js.map