-
Notifications
You must be signed in to change notification settings - Fork 184
/
Copy pathEventMonitor.js
77 lines (63 loc) · 2.8 KB
/
EventMonitor.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import React, { useRef, useEffect } from 'react';
const EventMonitor = () => {
const eventMonitorRef = useRef();
// subscribe for file upload events on mount
useEffect(() => {
const uploadWillStartEventHandler = ({ detail: { fileName } }) => {
console.log(`upload '${fileName}' will start`);
// use a react "toast" module (such as react-toastify) to display notifications
};
const uploadRunningEventHandler = ({ detail: { fileName } }) => {
console.log(`upload '${fileName}' running`);
// use a react "toast" module (such as react-toastify) to display notifications
};
const uploadProgressEventHandler = ({ detail: { fileName, data } }) => {
console.log(`upload '${fileName}' progress ${data}%`);
// use a react "toast" module (such as react-toastify) to display notifications
};
const uploadCompleteEventHandler = ({ detail: { fileName } }) => {
console.log(`upload '${fileName}' complete`);
// use a react "toast" module (such as react-toastify) to display notifications
};
const fileReadyEventHandler = ({ detail: { fileName } }) => {
console.log(`file '${fileName}' ready`);
// use a react "toast" module (such as react-toastify) to display notifications
};
const eventMonitor = eventMonitorRef.current;
if (!eventMonitor) return; // never too cautious
// @ts-ignore
eventMonitor.addEventListener('FILE_UPLOAD_WILL_START', uploadWillStartEventHandler);
// @ts-ignore
eventMonitor.addEventListener('FILE_UPLOAD_RUNNING', uploadRunningEventHandler);
// @ts-ignore
eventMonitor.addEventListener('FILE_UPLOAD_PROGRESS', uploadProgressEventHandler);
// @ts-ignore
// eventMonitor.addEventListener('FILE_UPLOAD_PAUSED', ___);
// @ts-ignore
// eventMonitor.addEventListener('FILE_UPLOAD_CANCELD', ___);
// @ts-ignore
eventMonitor.addEventListener('FILE_UPLOAD_COMPLETE', uploadCompleteEventHandler);
// @ts-ignore
eventMonitor.addEventListener('FILE_SAVED', fileReadyEventHandler);
// unsubscribe on unmount
return () => {
if (!eventMonitor) return; // never too cautious
// @ts-ignore
eventMonitor.removeEventListener('FILE_UPLOAD_WILL_START', uploadWillStartEventHandler);
// @ts-ignore
eventMonitor.removeEventListener('FILE_UPLOAD_RUNNING', uploadRunningEventHandler);
// @ts-ignore
eventMonitor.removeEventListener('FILE_UPLOAD_PROGRESS', uploadProgressEventHandler);
// @ts-ignore
// eventMonitor.removeEventListener('FILE_UPLOAD_PAUSED', ___);
// @ts-ignore
// eventMonitor.removeEventListener('FILE_UPLOAD_CANCELD', ___);
// @ts-ignore
eventMonitor.removeEventListener('FILE_UPLOAD_COMPLETE', uploadCompleteEventHandler);
// @ts-ignore
eventMonitor.removeEventListener('FILE_SAVED', fileReadyEventHandler);
};
}, []);
return <div id="eventMonitor" ref={eventMonitorRef} />;
};
export default EventMonitor;