1
+ import 'dart:async' ;
2
+
1
3
import 'package:flutter_deriv_api/services/connection/call_manager/call_history_entry.dart' ;
4
+ import 'package:flutter_deriv_api/services/interfaces/call_history_provider.dart' ;
2
5
3
6
/// Provides storage for messages sent/received via the web socket connection
4
- class CallHistory {
7
+ class CallHistory implements CallHistoryProvider {
8
+ /// It initializes [CallHistory] instance.
9
+ CallHistory () {
10
+ _callHistoryBroadcaster = StreamController <NetworkPayload >.broadcast ();
11
+ }
12
+
13
+ late final StreamController <NetworkPayload > _callHistoryBroadcaster;
14
+
5
15
/// Messages that were sent to the remote endpoint
6
16
final List <CallHistoryEntry > outgoing = < CallHistoryEntry > [];
7
17
@@ -29,7 +39,15 @@ class CallHistory {
29
39
incoming.add (
30
40
CallHistoryEntry (timeStamp: timestamp, method: method, message: message),
31
41
);
32
-
42
+ if (! method.contains ('ping' )) {
43
+ _callHistoryBroadcaster.add (
44
+ NetworkPayload (
45
+ method: method,
46
+ body: message,
47
+ direction: 'RECEIVED' ,
48
+ timeStamp: timestamp),
49
+ );
50
+ }
33
51
_trimHistory (incoming);
34
52
}
35
53
@@ -42,6 +60,15 @@ class CallHistory {
42
60
outgoing.add (
43
61
CallHistoryEntry (timeStamp: timestamp, method: method, message: message),
44
62
);
63
+ if (! method.contains ('ping' )) {
64
+ _callHistoryBroadcaster.add (
65
+ NetworkPayload (
66
+ method: method,
67
+ body: message,
68
+ direction: 'SENT' ,
69
+ timeStamp: timestamp),
70
+ );
71
+ }
45
72
46
73
_trimHistory (outgoing);
47
74
}
@@ -52,4 +79,7 @@ class CallHistory {
52
79
callHistory.removeRange (0 , callHistory.length - limit);
53
80
}
54
81
}
82
+
83
+ @override
84
+ Stream <NetworkPayload > get stream => _callHistoryBroadcaster.stream;
55
85
}
0 commit comments