fluffychat/lib/utils/voip/group_call_state.dart
2022-06-28 16:20:06 +05:30

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;
}