@cuemath/leap 4.1.7 → 4.1.8

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,32 +1,32 @@
1
- import { useState as S, useCallback as c, useEffect as T } from "react";
2
- import { useLocalPeer as $, useRemotePeers as U, useCaptureMediaStreamImage as L } from "@cuemath/av";
3
- import { useUIContext as N } from "../../ui/context/context.js";
4
- import { base64ToFile as l } from "../fraud-alert-modal/fraud-alert-modal-helpers.js";
5
- import { FRAUD_DETECTION_ANALYTICS_EVENTS as k } from "./report-fraud-analytics.js";
6
- import v from "../../hooks/use-s3-helper/use-s3-helper.js";
7
- import { useReportFraudulentLogin as w } from "../api/report-fraudulent-login.js";
1
+ import { useState as l, useCallback as c, useEffect as S } from "react";
2
+ import { useLocalPeer as T, useRemotePeers as U, useCaptureMediaStreamImage as w } from "@cuemath/av";
3
+ import { useUIContext as L } from "../../ui/context/context.js";
4
+ import { base64ToFile as A } from "../fraud-alert-modal/fraud-alert-modal-helpers.js";
5
+ import { FRAUD_DETECTION_ANALYTICS_EVENTS as N } from "./report-fraud-analytics.js";
6
+ import k from "../../hooks/use-s3-helper/use-s3-helper.js";
7
+ import { useReportFraudulentLogin as v } from "../api/report-fraudulent-login.js";
8
8
  const y = { type: "class_fraud_login" }, b = ({
9
9
  teacherId: a,
10
10
  studentId: i,
11
11
  studentClassroomId: o,
12
- teacherClassroomId: r,
13
- classStartTs: _,
12
+ teacherClassroomId: _,
13
+ classStartTs: r,
14
14
  studentName: m
15
15
  }) => {
16
- const { onEvent: u } = N(), [f, p] = S(!1), e = $(), t = U().find((n) => n.userId === a), s = L(), g = v({
16
+ const { onEvent: u } = L(), [f, p] = l(!1), e = T(), t = U().find((n) => n.userId === a), s = w(), g = k({
17
17
  studentId: i,
18
18
  query: y
19
- }), { post: E } = w(), d = c(
19
+ }), { post: E } = v(), d = c(
20
20
  (n) => {
21
- u(k.FRAUD_LOGIN_TEACHER_ENTERED_CLASS_AS_STUDENT, {
21
+ u(N.FRAUD_LOGIN_TEACHER_ENTERED_CLASS_AS_STUDENT, {
22
22
  student_classroom_id: o,
23
23
  student_id: i,
24
24
  student_name: m,
25
- teacher_classroom_id: r,
25
+ teacher_classroom_id: _,
26
26
  teacher_id: a,
27
27
  teacher_url: n[0] || "",
28
28
  student_url: n[1] || "",
29
- class_start_ts: new Date(_ * 1e3)
29
+ class_start_ts: new Date(r * 1e3)
30
30
  }), E({
31
31
  student_classroom_id: o,
32
32
  teacher_s3_url: n[0] || "",
@@ -34,35 +34,35 @@ const y = { type: "class_fraud_login" }, b = ({
34
34
  });
35
35
  },
36
36
  [
37
- _,
37
+ r,
38
38
  u,
39
39
  E,
40
40
  o,
41
41
  i,
42
42
  m,
43
- r,
43
+ _,
44
44
  a
45
45
  ]
46
46
  ), F = c(() => {
47
- u("fraud_detection_images_failed", { classStartTs: _, teacherId: a, studentId: i });
48
- }, [_, u, i, a]);
49
- return T(() => {
47
+ u("fraud_detection_images_failed", { classStartTs: r, teacherId: a, studentId: i });
48
+ }, [r, u, i, a]);
49
+ return S(() => {
50
50
  if (!f || !(t != null && t.id) || !(e != null && e.id))
51
51
  return;
52
- const { image: n } = s(t == null ? void 0 : t.id, "camera"), { image: D } = s(e == null ? void 0 : e.id, "camera"), R = l(n, `teacher-${Date.now()}.png`), A = l(D, `student-${Date.now()}.png`);
53
- !R || !A || (g({
52
+ const { image: n } = s(t == null ? void 0 : t.id, "camera"), { image: $ } = s(e == null ? void 0 : e.id, "camera"), R = A(n, `teacher-${Date.now()}.png`), D = A($, `student-${Date.now()}.png`);
53
+ !R || !D || (g({
54
54
  fileKey: "media/class_fraud_login/",
55
55
  onSuccess: d,
56
56
  onError: F,
57
57
  images: [
58
58
  {
59
59
  file: R,
60
- name: `teacher_${r}_${a}`,
60
+ name: `teacher_${_}_${a}_${Date.now()}`,
61
61
  url: ""
62
62
  },
63
63
  {
64
- file: A,
65
- name: `student_${o}_${i}`,
64
+ file: D,
65
+ name: `student_${o}_${i}_${Date.now()}`,
66
66
  url: ""
67
67
  }
68
68
  ]
@@ -76,7 +76,7 @@ const y = { type: "class_fraud_login" }, b = ({
76
76
  t == null ? void 0 : t.id,
77
77
  o,
78
78
  i,
79
- r,
79
+ _,
80
80
  a,
81
81
  g
82
82
  ]), c(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"use-report-fraud.js","sources":["../../../../src/features/fraud-detection/hooks/use-report-fraud.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\nimport { useCaptureMediaStreamImage, useLocalPeer, useRemotePeers } from '@cuemath/av';\n\nimport { useUIContext } from '../../ui/context/context';\nimport { base64ToFile } from '../fraud-alert-modal/fraud-alert-modal-helpers';\nimport { type IUseFraudAlertProps } from './report-fraud-types';\nimport { FRAUD_DETECTION_ANALYTICS_EVENTS } from './report-fraud-analytics';\nimport useS3ImageUploadHelper from '../../hooks/use-s3-helper/use-s3-helper';\nimport { useReportFraudulentLogin } from '../api/report-fraudulent-login';\n\nconst QUERY = { type: 'class_fraud_login' };\n\nconst useReportFraud = ({\n teacherId,\n studentId,\n studentClassroomId,\n teacherClassroomId,\n classStartTs,\n studentName,\n}: IUseFraudAlertProps) => {\n const { onEvent } = useUIContext();\n\n const [canTrackEvent, setCanTrackEvent] = useState(false);\n const localpeer = useLocalPeer();\n const remotePeer = useRemotePeers().find(peer => peer.userId === teacherId);\n const captureMediaStreamImage = useCaptureMediaStreamImage();\n const uploadImages = useS3ImageUploadHelper({\n studentId,\n query: QUERY,\n });\n const { post: reportFraud } = useReportFraudulentLogin();\n const onSuccess = useCallback(\n (urls: string[]) => {\n onEvent(FRAUD_DETECTION_ANALYTICS_EVENTS.FRAUD_LOGIN_TEACHER_ENTERED_CLASS_AS_STUDENT, {\n student_classroom_id: studentClassroomId,\n student_id: studentId,\n student_name: studentName,\n teacher_classroom_id: teacherClassroomId,\n teacher_id: teacherId,\n teacher_url: urls[0] || '',\n student_url: urls[1] || '',\n class_start_ts: new Date(classStartTs * 1000),\n });\n\n reportFraud({\n student_classroom_id: studentClassroomId,\n teacher_s3_url: urls[0] || '',\n student_s3_url: urls[1] || '',\n });\n },\n [\n classStartTs,\n onEvent,\n reportFraud,\n studentClassroomId,\n studentId,\n studentName,\n teacherClassroomId,\n teacherId,\n ],\n );\n\n const onError = useCallback(() => {\n onEvent('fraud_detection_images_failed', { classStartTs, teacherId, studentId });\n }, [classStartTs, onEvent, studentId, teacherId]);\n\n useEffect(() => {\n if (!canTrackEvent || !remotePeer?.id || !localpeer?.id) {\n return;\n }\n\n const { image: teacherImage } = captureMediaStreamImage(remotePeer?.id, 'camera');\n const { image: studentImage } = captureMediaStreamImage(localpeer?.id, 'camera');\n const teacherFile = base64ToFile(teacherImage, `teacher-${Date.now()}.png`);\n const studentFile = base64ToFile(studentImage, `student-${Date.now()}.png`);\n\n if (!teacherFile || !studentFile) {\n return;\n }\n\n uploadImages({\n fileKey: `media/class_fraud_login/`,\n onSuccess,\n onError,\n images: [\n {\n file: teacherFile,\n name: `teacher_${teacherClassroomId}_${teacherId}`,\n url: '',\n },\n {\n file: studentFile,\n name: `student_${studentClassroomId}_${studentId}`,\n url: '',\n },\n ],\n });\n\n setCanTrackEvent(false);\n }, [\n canTrackEvent,\n captureMediaStreamImage,\n localpeer?.id,\n onError,\n onSuccess,\n remotePeer?.id,\n studentClassroomId,\n studentId,\n teacherClassroomId,\n teacherId,\n uploadImages,\n ]);\n\n const captureAndReportFraudImages = useCallback(() => {\n setCanTrackEvent(true);\n }, []);\n\n return captureAndReportFraudImages;\n};\n\nexport default useReportFraud;\n"],"names":["QUERY","useReportFraud","teacherId","studentId","studentClassroomId","teacherClassroomId","classStartTs","studentName","onEvent","useUIContext","canTrackEvent","setCanTrackEvent","useState","localpeer","useLocalPeer","remotePeer","useRemotePeers","peer","captureMediaStreamImage","useCaptureMediaStreamImage","uploadImages","useS3ImageUploadHelper","reportFraud","useReportFraudulentLogin","onSuccess","useCallback","urls","FRAUD_DETECTION_ANALYTICS_EVENTS","onError","useEffect","teacherImage","studentImage","teacherFile","base64ToFile","studentFile","useReportFraud$1"],"mappings":";;;;;;;AAWA,MAAMA,IAAQ,EAAE,MAAM,uBAEhBC,IAAiB,CAAC;AAAA,EACtB,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAAC;AACF,MAA2B;AACnB,QAAA,EAAE,SAAAC,MAAYC,KAEd,CAACC,GAAeC,CAAgB,IAAIC,EAAS,EAAK,GAClDC,IAAYC,KACZC,IAAaC,EAAe,EAAE,KAAK,CAAQC,MAAAA,EAAK,WAAWf,CAAS,GACpEgB,IAA0BC,KAC1BC,IAAeC,EAAuB;AAAA,IAC1C,WAAAlB;AAAA,IACA,OAAOH;AAAA,EAAA,CACR,GACK,EAAE,MAAMsB,EAAY,IAAIC,EAAyB,GACjDC,IAAYC;AAAA,IAChB,CAACC,MAAmB;AAClB,MAAAlB,EAAQmB,EAAiC,8CAA8C;AAAA,QACrF,sBAAsBvB;AAAA,QACtB,YAAYD;AAAA,QACZ,cAAcI;AAAA,QACd,sBAAsBF;AAAA,QACtB,YAAYH;AAAA,QACZ,aAAawB,EAAK,CAAC,KAAK;AAAA,QACxB,aAAaA,EAAK,CAAC,KAAK;AAAA,QACxB,gBAAgB,IAAI,KAAKpB,IAAe,GAAI;AAAA,MAAA,CAC7C,GAEWgB,EAAA;AAAA,QACV,sBAAsBlB;AAAA,QACtB,gBAAgBsB,EAAK,CAAC,KAAK;AAAA,QAC3B,gBAAgBA,EAAK,CAAC,KAAK;AAAA,MAAA,CAC5B;AAAA,IACH;AAAA,IACA;AAAA,MACEpB;AAAA,MACAE;AAAA,MACAc;AAAA,MACAlB;AAAA,MACAD;AAAA,MACAI;AAAA,MACAF;AAAA,MACAH;AAAA,IACF;AAAA,EAAA,GAGI0B,IAAUH,EAAY,MAAM;AAChC,IAAAjB,EAAQ,iCAAiC,EAAE,cAAAF,GAAc,WAAAJ,GAAW,WAAAC,EAAW,CAAA;AAAA,KAC9E,CAACG,GAAcE,GAASL,GAAWD,CAAS,CAAC;AAEhD,SAAA2B,EAAU,MAAM;AACd,QAAI,CAACnB,KAAiB,EAACK,KAAA,QAAAA,EAAY,OAAM,EAACF,KAAA,QAAAA,EAAW;AACnD;AAGF,UAAM,EAAE,OAAOiB,MAAiBZ,EAAwBH,KAAA,gBAAAA,EAAY,IAAI,QAAQ,GAC1E,EAAE,OAAOgB,MAAiBb,EAAwBL,KAAA,gBAAAA,EAAW,IAAI,QAAQ,GACzEmB,IAAcC,EAAaH,GAAc,WAAW,KAAK,IAAA,CAAK,MAAM,GACpEI,IAAcD,EAAaF,GAAc,WAAW,KAAK,IAAA,CAAK,MAAM;AAEtE,IAAA,CAACC,KAAe,CAACE,MAIRd,EAAA;AAAA,MACX,SAAS;AAAA,MACT,WAAAI;AAAA,MACA,SAAAI;AAAA,MACA,QAAQ;AAAA,QACN;AAAA,UACE,MAAMI;AAAA,UACN,MAAM,WAAW3B,CAAkB,IAAIH,CAAS;AAAA,UAChD,KAAK;AAAA,QACP;AAAA,QACA;AAAA,UACE,MAAMgC;AAAA,UACN,MAAM,WAAW9B,CAAkB,IAAID,CAAS;AAAA,UAChD,KAAK;AAAA,QACP;AAAA,MACF;AAAA,IAAA,CACD,GAEDQ,EAAiB,EAAK;AAAA,EAAA,GACrB;AAAA,IACDD;AAAA,IACAQ;AAAA,IACAL,KAAA,gBAAAA,EAAW;AAAA,IACXe;AAAA,IACAJ;AAAA,IACAT,KAAA,gBAAAA,EAAY;AAAA,IACZX;AAAA,IACAD;AAAA,IACAE;AAAA,IACAH;AAAA,IACAkB;AAAA,EAAA,CACD,GAEmCK,EAAY,MAAM;AACpD,IAAAd,EAAiB,EAAI;AAAA,EACvB,GAAG,CAAE,CAAA;AAGP,GAEAwB,IAAelC;"}
1
+ {"version":3,"file":"use-report-fraud.js","sources":["../../../../src/features/fraud-detection/hooks/use-report-fraud.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\nimport { useCaptureMediaStreamImage, useLocalPeer, useRemotePeers } from '@cuemath/av';\n\nimport { useUIContext } from '../../ui/context/context';\nimport { base64ToFile } from '../fraud-alert-modal/fraud-alert-modal-helpers';\nimport { type IUseFraudAlertProps } from './report-fraud-types';\nimport { FRAUD_DETECTION_ANALYTICS_EVENTS } from './report-fraud-analytics';\nimport useS3ImageUploadHelper from '../../hooks/use-s3-helper/use-s3-helper';\nimport { useReportFraudulentLogin } from '../api/report-fraudulent-login';\n\nconst QUERY = { type: 'class_fraud_login' };\n\nconst useReportFraud = ({\n teacherId,\n studentId,\n studentClassroomId,\n teacherClassroomId,\n classStartTs,\n studentName,\n}: IUseFraudAlertProps) => {\n const { onEvent } = useUIContext();\n\n const [canTrackEvent, setCanTrackEvent] = useState(false);\n const localpeer = useLocalPeer();\n const remotePeer = useRemotePeers().find(peer => peer.userId === teacherId);\n const captureMediaStreamImage = useCaptureMediaStreamImage();\n const uploadImages = useS3ImageUploadHelper({\n studentId,\n query: QUERY,\n });\n const { post: reportFraud } = useReportFraudulentLogin();\n const onSuccess = useCallback(\n (urls: string[]) => {\n onEvent(FRAUD_DETECTION_ANALYTICS_EVENTS.FRAUD_LOGIN_TEACHER_ENTERED_CLASS_AS_STUDENT, {\n student_classroom_id: studentClassroomId,\n student_id: studentId,\n student_name: studentName,\n teacher_classroom_id: teacherClassroomId,\n teacher_id: teacherId,\n teacher_url: urls[0] || '',\n student_url: urls[1] || '',\n class_start_ts: new Date(classStartTs * 1000),\n });\n\n reportFraud({\n student_classroom_id: studentClassroomId,\n teacher_s3_url: urls[0] || '',\n student_s3_url: urls[1] || '',\n });\n },\n [\n classStartTs,\n onEvent,\n reportFraud,\n studentClassroomId,\n studentId,\n studentName,\n teacherClassroomId,\n teacherId,\n ],\n );\n\n const onError = useCallback(() => {\n onEvent('fraud_detection_images_failed', { classStartTs, teacherId, studentId });\n }, [classStartTs, onEvent, studentId, teacherId]);\n\n useEffect(() => {\n if (!canTrackEvent || !remotePeer?.id || !localpeer?.id) {\n return;\n }\n\n const { image: teacherImage } = captureMediaStreamImage(remotePeer?.id, 'camera');\n const { image: studentImage } = captureMediaStreamImage(localpeer?.id, 'camera');\n const teacherFile = base64ToFile(teacherImage, `teacher-${Date.now()}.png`);\n const studentFile = base64ToFile(studentImage, `student-${Date.now()}.png`);\n\n if (!teacherFile || !studentFile) {\n return;\n }\n\n uploadImages({\n fileKey: `media/class_fraud_login/`,\n onSuccess,\n onError,\n images: [\n {\n file: teacherFile,\n name: `teacher_${teacherClassroomId}_${teacherId}_${Date.now()}`,\n url: '',\n },\n {\n file: studentFile,\n name: `student_${studentClassroomId}_${studentId}_${Date.now()}`,\n url: '',\n },\n ],\n });\n\n setCanTrackEvent(false);\n }, [\n canTrackEvent,\n captureMediaStreamImage,\n localpeer?.id,\n onError,\n onSuccess,\n remotePeer?.id,\n studentClassroomId,\n studentId,\n teacherClassroomId,\n teacherId,\n uploadImages,\n ]);\n\n const captureAndReportFraudImages = useCallback(() => {\n setCanTrackEvent(true);\n }, []);\n\n return captureAndReportFraudImages;\n};\n\nexport default useReportFraud;\n"],"names":["QUERY","useReportFraud","teacherId","studentId","studentClassroomId","teacherClassroomId","classStartTs","studentName","onEvent","useUIContext","canTrackEvent","setCanTrackEvent","useState","localpeer","useLocalPeer","remotePeer","useRemotePeers","peer","captureMediaStreamImage","useCaptureMediaStreamImage","uploadImages","useS3ImageUploadHelper","reportFraud","useReportFraudulentLogin","onSuccess","useCallback","urls","FRAUD_DETECTION_ANALYTICS_EVENTS","onError","useEffect","teacherImage","studentImage","teacherFile","base64ToFile","studentFile","useReportFraud$1"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "4.1.7",
3
+ "version": "4.1.8",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"