Line data Source code
1 : import 'dart:async';
2 :
3 : import 'package:matrix/matrix.dart';
4 : import 'package:matrix/src/voip/models/call_membership.dart';
5 :
6 : abstract class CallBackend {
7 : String type;
8 :
9 2 : CallBackend({
10 : required this.type,
11 : });
12 :
13 2 : factory CallBackend.fromJson(Map<String, Object?> json) {
14 2 : final String type = json['type'] as String;
15 2 : if (type == 'mesh') {
16 2 : return MeshBackend(
17 : type: type,
18 : );
19 0 : } else if (type == 'livekit') {
20 0 : return LiveKitBackend(
21 0 : livekitAlias: json['livekit_alias'] as String,
22 0 : livekitServiceUrl: json['livekit_service_url'] as String,
23 : type: type,
24 : );
25 : } else {
26 0 : throw MatrixSDKVoipException(
27 0 : 'Invalid type: $type in CallBackend.fromJson',
28 : );
29 : }
30 : }
31 :
32 : Map<String, Object?> toJson();
33 :
34 : bool get e2eeEnabled;
35 :
36 : CallParticipant? get activeSpeaker;
37 :
38 : WrappedMediaStream? get localUserMediaStream;
39 :
40 : WrappedMediaStream? get localScreenshareStream;
41 :
42 : List<WrappedMediaStream> get userMediaStreams;
43 :
44 : List<WrappedMediaStream> get screenShareStreams;
45 :
46 : bool get isLocalVideoMuted;
47 :
48 : bool get isMicrophoneMuted;
49 :
50 : Future<WrappedMediaStream?> initLocalStream(
51 : GroupCallSession groupCall, {
52 : WrappedMediaStream? stream,
53 : });
54 :
55 : Future<void> updateMediaDeviceForCalls();
56 :
57 : Future<void> setupP2PCallsWithExistingMembers(GroupCallSession groupCall);
58 :
59 : Future<void> setupP2PCallWithNewMember(
60 : GroupCallSession groupCall,
61 : CallParticipant rp,
62 : CallMembership mem,
63 : );
64 :
65 : Future<void> dispose(GroupCallSession groupCall);
66 :
67 : Future<void> onNewParticipant(
68 : GroupCallSession groupCall,
69 : List<CallParticipant> anyJoined,
70 : );
71 :
72 : Future<void> onLeftParticipant(
73 : GroupCallSession groupCall,
74 : List<CallParticipant> anyLeft,
75 : );
76 :
77 : Future<void> preShareKey(GroupCallSession groupCall);
78 :
79 : Future<void> requestEncrytionKey(
80 : GroupCallSession groupCall,
81 : List<CallParticipant> remoteParticipants,
82 : );
83 :
84 : Future<void> onCallEncryption(
85 : GroupCallSession groupCall,
86 : String userId,
87 : String deviceId,
88 : Map<String, dynamic> content,
89 : );
90 :
91 : Future<void> onCallEncryptionKeyRequest(
92 : GroupCallSession groupCall,
93 : String userId,
94 : String deviceId,
95 : Map<String, dynamic> content,
96 : );
97 :
98 : Future<void> setDeviceMuted(
99 : GroupCallSession groupCall,
100 : bool muted,
101 : MediaInputKind kind,
102 : );
103 :
104 : Future<void> setScreensharingEnabled(
105 : GroupCallSession groupCall,
106 : bool enabled,
107 : String desktopCapturerSourceId,
108 : );
109 :
110 : List<Map<String, String>>? getCurrentFeeds();
111 :
112 : @override
113 : bool operator ==(Object other);
114 : @override
115 : int get hashCode;
116 : }
|