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 get screenSharingStreams => groupCall.screenshareStreams; @override List 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; }