UNPKG

2.76 kBJavaScriptView Raw
1const { Subscriber } = require('rxjs');
2const Logger = require('@kiina/logger');
3
4const logger = new Logger('CHAT.OBSERVER');
5
6const { EVENTS, EVENTS_DESCRIPTIONS } = require('./chat.events');
7
8class ChatObserver extends Subscriber {
9
10 constructor() {
11 super();
12 }
13
14 next(events) {
15 events.forEach(event => {
16 this.__handleEvent(event);
17 });
18 }
19
20 error(errors){
21 errors.forEach(error => {
22 error.code = EVENTS.ERROR;
23 this.__handleEvent(error);
24 })
25 }
26
27 __handleEvent(event) {
28 Object.assign(event,
29 EVENTS_DESCRIPTIONS.filter(e => e.code === event.type)[0]
30 );
31 switch (event.code) {
32 case EVENTS.CONNECTION_FAILED:
33 this.onConnectionFailed(event);
34 break;
35 case EVENTS.CONNECTED:
36 this.onConnected(event);
37 break;
38 case EVENTS.SESSION_CREATED:
39 this.onSessionCreated(event);
40 break;
41 case EVENTS.QUEUE_POSITION_CHANGED:
42 this.onQueuePositionChanged(event);
43 break;
44 case EVENTS.AGENT_TYPING:
45 this.onAgentTyping(event);
46 break;
47 case EVENTS.AGENT_NOT_TYPING:
48 this.onAgentNotTyping(event);
49 break;
50 case EVENTS.NEW_MESSAGE:
51 this.onNewMessage(event);
52 break;
53 case EVENTS.ENDED:
54 this.onEnded(event);
55 break;
56 case EVENTS.ERROR:
57 this.onError(event);
58 break;
59 default:
60 this.onUnknownEvent(event);
61 break;
62 }
63 }
64
65 onEnded(event) {
66 logger.info(event.code, event.description, event.message);
67 }
68
69 onNewMessage(event) {
70 logger.info(event.code, event.description, event.message);
71 }
72
73 onAgentNotTyping(event) {
74 logger.info(event.code, event.description, event.message);
75 }
76
77 onAgentTyping(event) {
78 logger.info(event.code, event.description, event.message);
79 }
80
81 onQueuePositionChanged(event) {
82 logger.info(event.code, event.description, event.message);
83 }
84
85 onSessionCreated(event) {
86 logger.info(event.code, event.description, event.message);
87 }
88
89 onConnectionFailed(event) {
90 logger.error(event.code, event.description, event.message);
91 }
92
93 onConnected(event) {
94 logger.info(event.code, event.description, event.message);
95 }
96
97 onUnknownEvent(event) {
98 logger.info("Unknow Event:", event);
99 }
100
101 onError(event){
102 logger.error("Error:", event );
103 }
104}
105
106module.exports = ChatObserver;
\No newline at end of file