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.
@@ -0,0 +1,11 @@
1
+ import { FC } from "react";
2
+ interface Props {
3
+ open: boolean;
4
+ width: number;
5
+ height: number;
6
+ size: number;
7
+ color: string;
8
+ isEraser: boolean;
9
+ }
10
+ declare const CanvasOverlay: FC<Props>;
11
+ export default CanvasOverlay;
@@ -1,12 +1,11 @@
1
1
  import { FC } from "react";
2
- import { MessageRequest } from "../configs/types";
3
2
  export interface IInputChatProps {
4
3
  text: string;
5
4
  onSubmit: () => void;
6
5
  onChangeInput: (text: string) => void;
7
6
  isCompleted?: boolean;
8
7
  handleUploadImage: (file: File) => void;
9
- selectedFile?: MessageRequest | null;
8
+ selectedFile?: string | null;
10
9
  handleDeleteSelectedImage: () => void;
11
10
  }
12
11
  interface Props extends IInputChatProps {
@@ -0,0 +1,11 @@
1
+ import { FC } from "react";
2
+ interface Props {
3
+ open: boolean;
4
+ width: number;
5
+ height: number;
6
+ size: number;
7
+ color: string;
8
+ isEraser: boolean;
9
+ }
10
+ declare const CanvasOverlay: FC<Props>;
11
+ export default CanvasOverlay;
@@ -0,0 +1,7 @@
1
+ import { ChangeEvent, FC } from "react";
2
+ interface Props {
3
+ value: string;
4
+ onChange: (e: ChangeEvent<HTMLInputElement>) => void;
5
+ }
6
+ declare const ColorPicker: FC<Props>;
7
+ export default ColorPicker;
@@ -0,0 +1,7 @@
1
+ import { FC } from "react";
2
+ interface SketchDialogProps {
3
+ open: boolean;
4
+ handleClose: () => void;
5
+ }
6
+ declare const SketchDialog: FC<SketchDialogProps>;
7
+ export default SketchDialog;
@@ -0,0 +1,7 @@
1
+ import { FC } from "react";
2
+ interface SketchDialogProps {
3
+ open: boolean;
4
+ handleClose: () => void;
5
+ }
6
+ declare const SketchDialog: FC<SketchDialogProps>;
7
+ export default SketchDialog;
@@ -29,7 +29,7 @@ declare const useChatContainer: (props: Props) => {
29
29
  handleDeleteMessage: (conversationId: number, id: number, callback: any) => Promise<void>;
30
30
  };
31
31
  inputProps: {
32
- selectedFile: MessageRequest | null | undefined;
32
+ selectedFile: string | null;
33
33
  text: string;
34
34
  onChangeInput: (text: string) => void;
35
35
  onSubmit: () => Promise<void>;
@@ -1,7 +1,8 @@
1
1
  import { ScrollParams } from "react-virtualized";
2
2
  import { VirtualListViewProps } from "../configs/interfaces";
3
+ import _ from "lodash";
3
4
  declare const useVirtualListView: (props: VirtualListViewProps<any>) => {
4
5
  rowCount: number;
5
- onScroll: ({ scrollTop, clientHeight, scrollHeight }: ScrollParams) => void;
6
+ onScroll: _.DebouncedFunc<({ scrollTop, clientHeight, scrollHeight }: ScrollParams) => void>;
6
7
  };
7
8
  export default useVirtualListView;
package/dist/index.js CHANGED
@@ -1576,6 +1576,7 @@ var recent_class_exams = "최근 수업 시험";
1576
1576
  var there_are_no_problems_you_were_working_on = "풀던 문제가 없습니다.";
1577
1577
  var incomplete_exam = "미참가";
1578
1578
  var completed_exam = "참가";
1579
+ var failed_to_send_the_image_error = "이미지를 보내지 못했습니다: {{ message }}";
1579
1580
  var lang_ko = {
1580
1581
  problem_solving: problem_solving,
1581
1582
  my_story: my_story,
@@ -2783,7 +2784,8 @@ var lang_ko = {
2783
2784
  recent_class_exams: recent_class_exams,
2784
2785
  there_are_no_problems_you_were_working_on: there_are_no_problems_you_were_working_on,
2785
2786
  incomplete_exam: incomplete_exam,
2786
- completed_exam: completed_exam
2787
+ completed_exam: completed_exam,
2788
+ failed_to_send_the_image_error: failed_to_send_the_image_error
2787
2789
  };
2788
2790
 
2789
2791
  var problem_solving$1 = "Problem Solving";
@@ -4018,6 +4020,7 @@ var recent_class_exams$1 = "Recent Class Exams";
4018
4020
  var there_are_no_problems_you_were_working_on$1 = "There are no problems you were working on";
4019
4021
  var incomplete_exam$1 = "Incomplete";
4020
4022
  var completed_exam$1 = "Completed";
4023
+ var failed_to_send_the_image_error$1 = "Failed to send the image: {{ message }}";
4021
4024
  var lang_en = {
4022
4025
  problem_solving: problem_solving$1,
4023
4026
  my_story: my_story$1,
@@ -5227,7 +5230,8 @@ var lang_en = {
5227
5230
  recent_class_exams: recent_class_exams$1,
5228
5231
  there_are_no_problems_you_were_working_on: there_are_no_problems_you_were_working_on$1,
5229
5232
  incomplete_exam: incomplete_exam$1,
5230
- completed_exam: completed_exam$1
5233
+ completed_exam: completed_exam$1,
5234
+ failed_to_send_the_image_error: failed_to_send_the_image_error$1
5231
5235
  };
5232
5236
 
5233
5237
  i18n__default.use(reactI18next.initReactI18next).init({
@@ -7329,6 +7333,126 @@ var useVirtualizeList = function useVirtualizeList(totalItems, rowHeight, offset
7329
7333
  };
7330
7334
  };
7331
7335
 
7336
+ var useVirtualList = function useVirtualList(defaultFilter, getItemsApi) {
7337
+ var _useTranslation = reactI18next.useTranslation(),
7338
+ t = _useTranslation.t;
7339
+ var user = reactRedux.useSelector(function (state) {
7340
+ var _state$common;
7341
+ return state === null || state === void 0 ? void 0 : (_state$common = state.common) === null || _state$common === void 0 ? void 0 : _state$common.user;
7342
+ });
7343
+ var academyDomain = user === null || user === void 0 ? void 0 : user.academyDomain;
7344
+ var isLearningSpace = user === null || user === void 0 ? void 0 : user.isLearningSpace;
7345
+ var userId = user === null || user === void 0 ? void 0 : user.id;
7346
+ var _useState = React.useState([]),
7347
+ items = _useState[0],
7348
+ setItems = _useState[1];
7349
+ var _useState2 = React.useState(0),
7350
+ totalPages = _useState2[0],
7351
+ setTotalPages = _useState2[1];
7352
+ var _useState3 = React.useState(0),
7353
+ totalItems = _useState3[0],
7354
+ setTotalItems = _useState3[1];
7355
+ var _useState4 = React.useState(),
7356
+ selectedItem = _useState4[0],
7357
+ setSelectedItem = _useState4[1];
7358
+ var _useState5 = React.useState(false),
7359
+ isLoading = _useState5[0],
7360
+ setLoading = _useState5[1];
7361
+ var _useState6 = React.useState(),
7362
+ filter = _useState6[0],
7363
+ setFilter = _useState6[1];
7364
+ var handleChangeSelectedItem = function handleChangeSelectedItem(data) {
7365
+ setSelectedItem(data);
7366
+ };
7367
+ var getItems = function getItems() {
7368
+ try {
7369
+ var _temp2 = function _temp2() {
7370
+ setLoading(false);
7371
+ };
7372
+ if (isLoading) return Promise.resolve();
7373
+ if (!filter || !filter.currentPage) {
7374
+ setItems([]);
7375
+ return Promise.resolve();
7376
+ }
7377
+ setLoading(true);
7378
+ var _temp = _catch(function () {
7379
+ return Promise.resolve(getItemsApi(filter)).then(function (res) {
7380
+ var responseData = res.data;
7381
+ setTotalPages((responseData === null || responseData === void 0 ? void 0 : responseData.totalPages) || 0);
7382
+ setTotalItems((responseData === null || responseData === void 0 ? void 0 : responseData.totalItems) || 0);
7383
+ var responseItems = (responseData === null || responseData === void 0 ? void 0 : responseData.items) || [];
7384
+ var results = responseItems;
7385
+ if (filter !== null && filter !== void 0 && filter.currentPage && filter.currentPage > 1) {
7386
+ results = [].concat(_$a.uniqBy([].concat(items, responseItems), "id"));
7387
+ }
7388
+ setItems(results);
7389
+ });
7390
+ }, function (error) {
7391
+ reactToastify.toast.error(getErrorMessage(t, error));
7392
+ });
7393
+ return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
7394
+ } catch (e) {
7395
+ return Promise.reject(e);
7396
+ }
7397
+ };
7398
+ var handleLoadMore = React.useCallback(function () {
7399
+ if (isLoading) return;
7400
+ setFilter(function (state) {
7401
+ return !state || state.currentPage === undefined || state.currentPage >= totalPages ? state : _extends({}, state, {
7402
+ currentPage: state.currentPage + 1
7403
+ });
7404
+ });
7405
+ }, [totalPages, isLoading]);
7406
+ var handleItemAdded = function handleItemAdded(item) {
7407
+ var results = [].concat(_$a.uniqBy([item].concat(items), "id"));
7408
+ setItems(results);
7409
+ };
7410
+ var handleItemUpdated = function handleItemUpdated(item) {
7411
+ var results = items.map(function (i) {
7412
+ return i.id !== item.id ? i : item;
7413
+ });
7414
+ setItems(results);
7415
+ };
7416
+ var handleItemRemoved = function handleItemRemoved(_item) {
7417
+ getItems();
7418
+ };
7419
+ var handleChangeFilter = function handleChangeFilter(newFilter) {
7420
+ setFilter(newFilter);
7421
+ };
7422
+ var resetData = function resetData() {
7423
+ setTotalPages(0);
7424
+ setTotalItems(0);
7425
+ setItems([]);
7426
+ };
7427
+ React.useEffect(function () {
7428
+ resetData();
7429
+ setFilter(function (state) {
7430
+ if (JSON.stringify(state) == JSON.stringify(defaultFilter)) getItems();
7431
+ return defaultFilter;
7432
+ });
7433
+ }, [JSON.stringify(defaultFilter), isLearningSpace, academyDomain, userId]);
7434
+ React.useEffect(function () {
7435
+ getItems();
7436
+ }, [JSON.stringify(filter), getItemsApi]);
7437
+ return {
7438
+ t: t,
7439
+ filter: filter,
7440
+ selectedItem: selectedItem,
7441
+ items: items,
7442
+ isLoading: isLoading,
7443
+ totalItems: totalItems,
7444
+ resetData: resetData,
7445
+ handleChangeFilter: handleChangeFilter,
7446
+ setItems: setItems,
7447
+ handleChangeSelectedItem: handleChangeSelectedItem,
7448
+ handleLoadMore: handleLoadMore,
7449
+ getItems: getItems,
7450
+ handleItemAdded: handleItemAdded,
7451
+ handleItemRemoved: handleItemRemoved,
7452
+ handleItemUpdated: handleItemUpdated
7453
+ };
7454
+ };
7455
+
7332
7456
  (function (RecentUserActionSortBy) {
7333
7457
  RecentUserActionSortBy["CreatedAt"] = "CreatedAt";
7334
7458
  })(exports.RecentUserActionSortBy || (exports.RecentUserActionSortBy = {}));
@@ -9519,24 +9643,27 @@ var InputChat = function InputChat(_ref) {
9519
9643
  width: "fit-content"
9520
9644
  }
9521
9645
  }, React__default.createElement("img", {
9522
- src: selectedFile === null || selectedFile === void 0 ? void 0 : selectedFile.content,
9646
+ src: selectedFile,
9523
9647
  style: {
9524
9648
  height: "100px",
9525
9649
  objectFit: "contain",
9526
9650
  objectPosition: "center"
9527
9651
  }
9528
- }), React__default.createElement("div", {
9652
+ }), React__default.createElement(material.IconButton, {
9653
+ size: "small",
9654
+ color: "error",
9529
9655
  style: {
9530
9656
  position: "absolute",
9531
9657
  right: 0,
9532
9658
  top: 0,
9533
- cursor: "pointer"
9659
+ padding: "8px",
9660
+ cursor: "pointer",
9661
+ background: grey[100]
9534
9662
  },
9535
9663
  onClick: handleDeleteSelectedImage
9536
- }, React__default.createElement(io5.IoCloseOutline, {
9537
- color: "#fff",
9538
- size: 30
9539
- }))), React__default.createElement(TinyChatEditor, {
9664
+ }, React__default.createElement(fa.FaTrash, {
9665
+ size: 16
9666
+ }))), !selectedFile && React__default.createElement(TinyChatEditor, {
9540
9667
  initValue: text,
9541
9668
  onChange: onChangeInput,
9542
9669
  disabled: isCompleted
@@ -10237,14 +10364,17 @@ var useChatContainer = function useChatContainer(props) {
10237
10364
  selectedConversation = _useState[0],
10238
10365
  setSelectedConversation = _useState[1];
10239
10366
  var _useState2 = React.useState(),
10240
- selectedFile = _useState2[0],
10241
- setSelectedFile = _useState2[1];
10242
- var _useState3 = React.useState(),
10243
- message = _useState3[0],
10244
- setMessage = _useState3[1];
10245
- var _useState4 = React.useState(true),
10246
- isScrollToEnd = _useState4[0],
10247
- setScrollToEnd = _useState4[1];
10367
+ file = _useState2[0],
10368
+ setFile = _useState2[1];
10369
+ var _useState3 = React.useState(null),
10370
+ backgroundImage = _useState3[0],
10371
+ setBackgroundImage = _useState3[1];
10372
+ var _useState4 = React.useState(),
10373
+ message = _useState4[0],
10374
+ setMessage = _useState4[1];
10375
+ var _useState5 = React.useState(true),
10376
+ isScrollToEnd = _useState5[0],
10377
+ setScrollToEnd = _useState5[1];
10248
10378
  var isAdmin = roles === null || roles === void 0 ? void 0 : roles.includes(exports.Role.Admin);
10249
10379
  var _useMessageList = useMessageList({
10250
10380
  student: student
@@ -10267,34 +10397,39 @@ var useChatContainer = function useChatContainer(props) {
10267
10397
  };
10268
10398
  var handleAddMessage = function handleAddMessage() {
10269
10399
  try {
10270
- var _temp6 = function _temp6() {
10400
+ var _temp3 = function _temp3(_result2) {
10401
+ if (_exit) return _result2;
10271
10402
  loadingRef.current = false;
10272
10403
  };
10404
+ var _exit = false;
10273
10405
  if (loadingRef.current) return Promise.resolve();
10274
10406
  loadingRef.current = true;
10275
10407
  if (!(selectedConversation !== null && selectedConversation !== void 0 && selectedConversation.id)) return Promise.resolve();
10276
10408
  setScrollToEnd(true);
10277
- var _temp5 = _catch(function () {
10278
- function _temp4() {
10279
- function _temp2() {
10280
- handleChangeInput('');
10281
- setSelectedFile(null);
10282
- }
10283
- var _temp = function (_message$content) {
10409
+ var _temp2 = _catch(function () {
10410
+ if (file) {
10411
+ return Promise.resolve(handleUploadImageData(file)).then(function (selectedFile) {
10412
+ if (!selectedFile) {
10413
+ _exit = true;
10414
+ return;
10415
+ }
10416
+ return Promise.resolve(apiAddMessage(selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.id, _extends({}, selectedFile, {
10417
+ contentType: 1
10418
+ }))).then(function () {
10419
+ setFile(undefined);
10420
+ setBackgroundImage(null);
10421
+ });
10422
+ });
10423
+ } else {
10424
+ var _temp4 = function (_message$content) {
10284
10425
  if (message !== null && message !== void 0 && (_message$content = message.content) !== null && _message$content !== void 0 && _message$content.trim().length) {
10285
- return Promise.resolve(apiAddMessage(selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.id, _extends({}, message))).then(function () {});
10426
+ return Promise.resolve(apiAddMessage(selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.id, _extends({}, message))).then(function () {
10427
+ handleChangeInput('');
10428
+ });
10286
10429
  }
10287
10430
  }();
10288
- return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
10431
+ if (_temp4 && _temp4.then) return _temp4.then(function () {});
10289
10432
  }
10290
- var _temp3 = function () {
10291
- if (selectedFile !== null && selectedFile !== void 0 && selectedFile.content) {
10292
- return Promise.resolve(apiAddMessage(selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.id, _extends({}, selectedFile, {
10293
- contentType: 1
10294
- }))).then(function () {});
10295
- }
10296
- }();
10297
- return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
10298
10433
  }, function (error) {
10299
10434
  setMessages(function (state) {
10300
10435
  return [].concat(state.filter(function (i) {
@@ -10303,31 +10438,51 @@ var useChatContainer = function useChatContainer(props) {
10303
10438
  });
10304
10439
  reactToastify.toast.error(getErrorMessage(t, error));
10305
10440
  });
10306
- return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
10441
+ return Promise.resolve(_temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2));
10307
10442
  } catch (e) {
10308
10443
  return Promise.reject(e);
10309
10444
  }
10310
10445
  };
10311
10446
  var handleUploadImage = function handleUploadImage(file) {
10312
- return file ? Promise.resolve(_finally(function () {
10313
- return _catch(function () {
10447
+ try {
10448
+ if (file) {
10449
+ setFile(file);
10450
+ var reader = new FileReader();
10451
+ reader.onload = function () {
10452
+ setBackgroundImage(reader.result);
10453
+ };
10454
+ reader.readAsDataURL(file);
10455
+ }
10456
+ return Promise.resolve();
10457
+ } catch (e) {
10458
+ return Promise.reject(e);
10459
+ }
10460
+ };
10461
+ var handleUploadImageData = function handleUploadImageData(file) {
10462
+ try {
10463
+ return Promise.resolve(_catch(function () {
10314
10464
  var formData = new FormData();
10315
10465
  formData.append("upload", file);
10316
10466
  return Promise.resolve(apiUploadImageFile(formData)).then(function (res) {
10317
10467
  var _res$data;
10318
- setSelectedFile({
10468
+ return {
10319
10469
  content: res === null || res === void 0 ? void 0 : (_res$data = res.data) === null || _res$data === void 0 ? void 0 : _res$data.url
10320
- });
10470
+ };
10321
10471
  });
10322
10472
  }, function (error) {
10473
+ reactToastify.toast.error(t("failed_to_send_the_image_error", {
10474
+ message: getErrorMessage(t, error)
10475
+ }));
10323
10476
  setMessages(function (state) {
10324
10477
  return [].concat(state.filter(function (i) {
10325
10478
  return (i === null || i === void 0 ? void 0 : i.id) !== 0;
10326
10479
  }));
10327
10480
  });
10328
- reactToastify.toast.error(getErrorMessage(t, error));
10329
- });
10330
- }, function () {})) : Promise.resolve();
10481
+ return null;
10482
+ }));
10483
+ } catch (e) {
10484
+ return Promise.reject(e);
10485
+ }
10331
10486
  };
10332
10487
  var handleChangeInput = function handleChangeInput(text) {
10333
10488
  setMessage({
@@ -10336,7 +10491,7 @@ var useChatContainer = function useChatContainer(props) {
10336
10491
  };
10337
10492
  var handleNewMessageSent = function handleNewMessageSent(data) {
10338
10493
  try {
10339
- var _temp7 = function _temp7(_updateLastTimeReadCo) {
10494
+ var _temp5 = function _temp5(_updateLastTimeReadCo) {
10340
10495
  _updateLastTimeReadCo;
10341
10496
  };
10342
10497
  if (!data) return Promise.resolve();
@@ -10345,14 +10500,14 @@ var useChatContainer = function useChatContainer(props) {
10345
10500
  return [].concat(state, [data]);
10346
10501
  });
10347
10502
  var _selectedConversation = selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.id;
10348
- return Promise.resolve(_selectedConversation ? Promise.resolve(updateLastTimeReadConversation(selectedConversation.id)).then(_temp7) : _temp7(_selectedConversation));
10503
+ return Promise.resolve(_selectedConversation ? Promise.resolve(updateLastTimeReadConversation(selectedConversation.id)).then(_temp5) : _temp5(_selectedConversation));
10349
10504
  } catch (e) {
10350
10505
  return Promise.reject(e);
10351
10506
  }
10352
10507
  };
10353
10508
  var handleNewConversation = function handleNewConversation(data) {
10354
10509
  try {
10355
- var _temp8 = function _temp8(_updateLastTimeReadCo2) {
10510
+ var _temp6 = function _temp6(_updateLastTimeReadCo2) {
10356
10511
  _updateLastTimeReadCo2;
10357
10512
  };
10358
10513
  if (!data) return Promise.resolve();
@@ -10362,7 +10517,7 @@ var useChatContainer = function useChatContainer(props) {
10362
10517
  return [].concat(state, [item]);
10363
10518
  });
10364
10519
  var _selectedConversation2 = selectedConversation === null || selectedConversation === void 0 ? void 0 : selectedConversation.id;
10365
- return Promise.resolve(_selectedConversation2 ? Promise.resolve(updateLastTimeReadConversation(selectedConversation.id)).then(_temp8) : _temp8(_selectedConversation2));
10520
+ return Promise.resolve(_selectedConversation2 ? Promise.resolve(updateLastTimeReadConversation(selectedConversation.id)).then(_temp6) : _temp6(_selectedConversation2));
10366
10521
  } catch (e) {
10367
10522
  return Promise.reject(e);
10368
10523
  }
@@ -10381,7 +10536,8 @@ var useChatContainer = function useChatContainer(props) {
10381
10536
  }
10382
10537
  };
10383
10538
  var handleDeleteSelectedImage = function handleDeleteSelectedImage() {
10384
- setSelectedFile(null);
10539
+ setFile(undefined);
10540
+ setBackgroundImage(null);
10385
10541
  };
10386
10542
  var cleanupPusher = function cleanupPusher() {
10387
10543
  pusher === null || pusher === void 0 ? void 0 : pusher.unbind("new-message-event", handleNewMessageSent);
@@ -10467,7 +10623,7 @@ var useChatContainer = function useChatContainer(props) {
10467
10623
  handleDeleteMessage: handleDeleteMessage
10468
10624
  },
10469
10625
  inputProps: {
10470
- selectedFile: selectedFile,
10626
+ selectedFile: backgroundImage,
10471
10627
  text: (message === null || message === void 0 ? void 0 : message.content) || "",
10472
10628
  onChangeInput: handleChangeInput,
10473
10629
  onSubmit: handleAddMessage,
@@ -10550,10 +10706,11 @@ var useVirtualListView = function useVirtualListView(props) {
10550
10706
  handleLoadMore();
10551
10707
  }
10552
10708
  };
10709
+ var decounceScroll = _$a.debounce(onScroll, 300);
10553
10710
  var rowCount = data.length + (loading ? 1 : 0);
10554
10711
  return {
10555
10712
  rowCount: rowCount,
10556
- onScroll: onScroll
10713
+ onScroll: decounceScroll
10557
10714
  };
10558
10715
  };
10559
10716
 
@@ -15959,7 +16116,7 @@ var useStudentInfoDrawer = function useStudentInfoDrawer(props) {
15959
16116
  var _temp2 = function _temp2() {
15960
16117
  setLoading(false);
15961
16118
  };
15962
- if (!studentId) return Promise.resolve();
16119
+ if (!studentId || !open) return Promise.resolve();
15963
16120
  setLoading(true);
15964
16121
  var _temp = _catch(function () {
15965
16122
  return Promise.resolve(getUserByIdApi(studentId)).then(function (res) {
@@ -15972,7 +16129,7 @@ var useStudentInfoDrawer = function useStudentInfoDrawer(props) {
15972
16129
  }
15973
16130
  };
15974
16131
  getStudent();
15975
- }, [studentId]);
16132
+ }, [open, studentId]);
15976
16133
  React.useEffect(function () {
15977
16134
  if (open && inert) {
15978
16135
  var _document$getElementB;
@@ -18360,107 +18517,6 @@ function a11yProps$1(index) {
18360
18517
  };
18361
18518
  }
18362
18519
 
18363
- var useVirtualList = function useVirtualList(defaultFilter, getItemsApi) {
18364
- var _useTranslation = reactI18next.useTranslation(),
18365
- t = _useTranslation.t;
18366
- var _useState = React.useState([]),
18367
- items = _useState[0],
18368
- setItems = _useState[1];
18369
- var _useState2 = React.useState(0),
18370
- totalPages = _useState2[0],
18371
- setTotalPages = _useState2[1];
18372
- var _useState3 = React.useState(),
18373
- selectedItem = _useState3[0],
18374
- setSelectedItem = _useState3[1];
18375
- var _useState4 = React.useState(false),
18376
- isLoading = _useState4[0],
18377
- setLoading = _useState4[1];
18378
- var _useState5 = React.useState(),
18379
- filter = _useState5[0],
18380
- setFilter = _useState5[1];
18381
- var handleChangeSelectedItem = function handleChangeSelectedItem(data) {
18382
- setSelectedItem(data);
18383
- };
18384
- var getItems = function getItems() {
18385
- try {
18386
- var _temp2 = function _temp2() {
18387
- setLoading(false);
18388
- };
18389
- if (isLoading) return Promise.resolve();
18390
- if (!filter || !filter.currentPage) {
18391
- setItems([]);
18392
- return Promise.resolve();
18393
- }
18394
- setLoading(true);
18395
- var _temp = _catch(function () {
18396
- return Promise.resolve(getItemsApi(filter)).then(function (res) {
18397
- var responseData = res.data;
18398
- setTotalPages((responseData === null || responseData === void 0 ? void 0 : responseData.totalPages) || 0);
18399
- var responseItems = (responseData === null || responseData === void 0 ? void 0 : responseData.items) || [];
18400
- var results = responseItems;
18401
- if (filter !== null && filter !== void 0 && filter.currentPage && filter.currentPage > 1) {
18402
- results = [].concat(_$a.uniqBy([].concat(items, responseItems), "id"));
18403
- }
18404
- setItems(results);
18405
- });
18406
- }, function (error) {
18407
- reactToastify.toast.error(getErrorMessage(t, error));
18408
- });
18409
- return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
18410
- } catch (e) {
18411
- return Promise.reject(e);
18412
- }
18413
- };
18414
- var handleLoadMore = React.useCallback(function () {
18415
- if (!filter || !filter.currentPage || filter.currentPage >= totalPages) {
18416
- return;
18417
- }
18418
- setFilter(function (state) {
18419
- var _filter$currentPage;
18420
- return !state ? state : _extends({}, state, {
18421
- currentPage: ((_filter$currentPage = filter.currentPage) != null ? _filter$currentPage : 0) + 1
18422
- });
18423
- });
18424
- }, [filter === null || filter === void 0 ? void 0 : filter.currentPage, totalPages]);
18425
- var handleItemAdded = function handleItemAdded(item) {
18426
- var results = [].concat(_$a.uniqBy([item].concat(items), "id"));
18427
- setItems(results);
18428
- };
18429
- var handleItemUpdated = function handleItemUpdated(item) {
18430
- var results = items.map(function (i) {
18431
- return i.id !== item.id ? i : item;
18432
- });
18433
- setItems(results);
18434
- };
18435
- var handleItemRemoved = function handleItemRemoved(_item) {
18436
- getItems();
18437
- };
18438
- var handleChangeFilter = function handleChangeFilter(newFilter) {
18439
- setFilter(newFilter);
18440
- };
18441
- React.useEffect(function () {
18442
- setFilter(defaultFilter);
18443
- }, [JSON.stringify(defaultFilter)]);
18444
- React.useEffect(function () {
18445
- getItems();
18446
- }, [JSON.stringify(filter), getItemsApi]);
18447
- return {
18448
- t: t,
18449
- filter: filter,
18450
- selectedItem: selectedItem,
18451
- items: items,
18452
- isLoading: isLoading,
18453
- handleChangeFilter: handleChangeFilter,
18454
- setItems: setItems,
18455
- handleChangeSelectedItem: handleChangeSelectedItem,
18456
- handleLoadMore: handleLoadMore,
18457
- getItems: getItems,
18458
- handleItemAdded: handleItemAdded,
18459
- handleItemRemoved: handleItemRemoved,
18460
- handleItemUpdated: handleItemUpdated
18461
- };
18462
- };
18463
-
18464
18520
  var NOTES_URL$1 = BASE_URL + "/api/notes";
18465
18521
  var getNotesApi$1 = function getNotesApi(query) {
18466
18522
  return api.get("" + NOTES_URL$1, {
@@ -39397,6 +39453,7 @@ exports.useLogin = useLogin;
39397
39453
  exports.useNotes = useNotes;
39398
39454
  exports.usePusherConversation = usePusherConversation;
39399
39455
  exports.useSwitchAcademy = useSwitchAcademy;
39456
+ exports.useVirtualList = useVirtualList;
39400
39457
  exports.useVirtualizeList = useVirtualizeList;
39401
39458
  exports.utcToLocalTime = utcToLocalTime;
39402
39459
  //# sourceMappingURL=index.js.map