mirror of
https://gitlab.com/famedly/fluffychat.git
synced 2025-04-20 08:57:51 +02:00
124 lines
2.7 KiB
Dart
124 lines
2.7 KiB
Dart
import 'package:fluffychat/utils/voip/call_state_proxy.dart';
|
|
import 'package:matrix/matrix.dart';
|
|
|
|
class GroupCallSessionState implements CallStateProxy {
|
|
Function()? callback;
|
|
final GroupCall groupCall;
|
|
GroupCallSessionState(this.groupCall) {
|
|
groupCall.onGroupCallEvent.stream.listen((event) {
|
|
Logs().i("onGroupCallEvent ${event.toString()}");
|
|
callback?.call();
|
|
});
|
|
groupCall.onGroupCallState.stream.listen((event) {
|
|
Logs().i("onGroupCallState ${event.toString()}");
|
|
callback?.call();
|
|
});
|
|
}
|
|
|
|
@override
|
|
void answer() {
|
|
// TODO: implement answer
|
|
}
|
|
|
|
@override
|
|
bool get callOnHold => false;
|
|
|
|
@override
|
|
String get callState => 'New Group Call...';
|
|
|
|
@override
|
|
bool get connected => groupCall.state == GroupCallState.Entered;
|
|
|
|
@override
|
|
bool get connecting => groupCall.state == GroupCallState.Entering;
|
|
|
|
@override
|
|
String? get displayName => groupCall.displayName;
|
|
|
|
@override
|
|
bool get ended =>
|
|
groupCall.state == GroupCallState.Ended ||
|
|
groupCall.state == GroupCallState.LocalCallFeedUninitialized;
|
|
|
|
@override
|
|
void enter() async {
|
|
await groupCall.initLocalStream();
|
|
groupCall.enter();
|
|
}
|
|
|
|
@override
|
|
void hangup() async {
|
|
groupCall.leave();
|
|
}
|
|
|
|
@override
|
|
bool get isLocalVideoMuted => groupCall.isLocalVideoMuted;
|
|
|
|
@override
|
|
bool get isMicrophoneMuted => groupCall.isMicrophoneMuted;
|
|
|
|
@override
|
|
bool get isOutgoing => false;
|
|
|
|
@override
|
|
bool get isRemoteOnHold => false;
|
|
|
|
@override
|
|
bool get isScreensharingEnabled => groupCall.isScreensharing();
|
|
|
|
@override
|
|
bool get localHold => false;
|
|
|
|
@override
|
|
WrappedMediaStream? get localScreenSharingStream =>
|
|
groupCall.localScreenshareStream;
|
|
|
|
@override
|
|
WrappedMediaStream? get localUserMediaStream =>
|
|
groupCall.localUserMediaStream;
|
|
|
|
@override
|
|
void onStateChanged(Function() handler) {
|
|
callback = handler;
|
|
}
|
|
|
|
@override
|
|
WrappedMediaStream? get primaryStream => groupCall.localUserMediaStream;
|
|
|
|
@override
|
|
bool get remoteOnHold => false;
|
|
|
|
@override
|
|
bool get ringingPlay => false;
|
|
|
|
@override
|
|
List<WrappedMediaStream> get screenSharingStreams =>
|
|
groupCall.screenshareStreams;
|
|
|
|
@override
|
|
List<WrappedMediaStream> get userMediaStreams => groupCall.userMediaStreams;
|
|
|
|
@override
|
|
void setLocalVideoMuted(bool muted) {
|
|
groupCall.setLocalVideoMuted(muted);
|
|
}
|
|
|
|
@override
|
|
void setMicrophoneMuted(bool muted) {
|
|
groupCall.setMicrophoneMuted(muted);
|
|
}
|
|
|
|
@override
|
|
void setRemoteOnHold(bool onHold) {
|
|
// TODO: implement setRemoteOnHold
|
|
}
|
|
|
|
@override
|
|
void setScreensharingEnabled(bool enabled) {
|
|
groupCall.setScreensharingEnabled(enabled, '');
|
|
}
|
|
|
|
@override
|
|
bool get voiceonly => false;
|
|
}
|