@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
|
|
2
|
-
import { useLocalPeer as
|
|
3
|
-
import { useUIContext as
|
|
4
|
-
import { base64ToFile as
|
|
5
|
-
import { FRAUD_DETECTION_ANALYTICS_EVENTS as
|
|
6
|
-
import
|
|
7
|
-
import { useReportFraudulentLogin as
|
|
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:
|
|
13
|
-
classStartTs:
|
|
12
|
+
teacherClassroomId: _,
|
|
13
|
+
classStartTs: r,
|
|
14
14
|
studentName: m
|
|
15
15
|
}) => {
|
|
16
|
-
const { onEvent: u } =
|
|
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 } =
|
|
19
|
+
}), { post: E } = v(), d = c(
|
|
20
20
|
(n) => {
|
|
21
|
-
u(
|
|
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:
|
|
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(
|
|
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
|
-
|
|
43
|
+
_,
|
|
44
44
|
a
|
|
45
45
|
]
|
|
46
46
|
), F = c(() => {
|
|
47
|
-
u("fraud_detection_images_failed", { classStartTs:
|
|
48
|
-
}, [
|
|
49
|
-
return
|
|
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:
|
|
53
|
-
!R || !
|
|
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_${
|
|
60
|
+
name: `teacher_${_}_${a}_${Date.now()}`,
|
|
61
61
|
url: ""
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
|
-
file:
|
|
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
|
-
|
|
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,
|
|
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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"}
|