1 | const { Subscriber } = require('rxjs');
|
2 | const Logger = require('@kiina/logger');
|
3 |
|
4 | const logger = new Logger('CHAT.OBSERVER');
|
5 |
|
6 | const { EVENTS, EVENTS_DESCRIPTIONS } = require('./chat.events');
|
7 |
|
8 | class 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 |
|
106 | module.exports = ChatObserver; |
\ | No newline at end of file |