Skip to content

Commit

Permalink
feat: raise-hand
Browse files Browse the repository at this point in the history
  • Loading branch information
Lucisokiu committed Oct 25, 2024
1 parent 4800b67 commit b5d7514
Show file tree
Hide file tree
Showing 7 changed files with 28 additions and 3 deletions.
8 changes: 7 additions & 1 deletion lib/core/webrtc/webrtc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -462,10 +462,13 @@ class WaterbusWebRTCManagerIpml extends WaterbusWebRTCManager {
}

@override
void toggleRaiseHand() {
Future<void> toggleRaiseHand() async {
if (_mParticipant == null) return;

_mParticipant!.isHandRaising = !_mParticipant!.isHandRaising;

_notify(CallbackEvents.shouldBeUpdateState);

_socketEmiter.setHandRaising(_mParticipant!.isHandRaising);
}

Expand Down Expand Up @@ -525,7 +528,10 @@ class WaterbusWebRTCManagerIpml extends WaterbusWebRTCManager {

@override
void setHandRaising({required String targetId, required bool isRaising}) {
if (_subscribers[targetId]?.isHandRaising == isRaising) return;

_subscribers[targetId]?.isHandRaising = isRaising;

_notify(CallbackEvents.shouldBeUpdateState);
}

Expand Down
2 changes: 1 addition & 1 deletion lib/core/webrtc/webrtc_interface.dart
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ abstract class WaterbusWebRTCManager {
Future<void> toggleSpeakerPhone({bool? forceValue});
Future<void> toggleVideo();
Future<void> switchCamera();
void toggleRaiseHand();
Future<void> toggleRaiseHand();
void setE2eeEnabled({required String targetId, required bool isEnabled});
void setVideoEnabled({required String targetId, required bool isEnabled});
void setCameraType({required String targetId, required CameraType type});
Expand Down
1 change: 0 additions & 1 deletion lib/core/websocket/socket_handler.dart
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,6 @@ class SocketHandlerImpl extends SocketHandler {

final String participantId = data['participantId'];
final bool isRaising = data['isRaising'];

_rtcManager.setHandRaising(
targetId: participantId,
isRaising: isRaising,
Expand Down
4 changes: 4 additions & 0 deletions lib/flutter_waterbus_sdk.dart
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,10 @@ class WaterbusSdk {
await _sdk.toggleAudio();
}

Future<void> toggleRaiseHand() async {
await _sdk.toggleRaiseHand();
}

Future<void> toggleSpeakerPhone() async {
await _sdk.toggleSpeakerPhone();
}
Expand Down
9 changes: 9 additions & 0 deletions lib/types/models/participant_sfu.dart
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ class ParticipantSFU extends Equatable {

return other.isVideoEnabled == isVideoEnabled &&
other.isAudioEnabled == isAudioEnabled &&
other.isHandRaising == isHandRaising &&
other.isSharingScreen == isSharingScreen &&
other.peerConnection == peerConnection &&
other.cameraSource == cameraSource &&
Expand All @@ -85,6 +86,7 @@ class ParticipantSFU extends Equatable {
int get hashCode {
return isVideoEnabled.hashCode ^
isAudioEnabled.hashCode ^
isHandRaising.hashCode ^
isSharingScreen.hashCode ^
peerConnection.hashCode ^
cameraSource.hashCode ^
Expand All @@ -96,6 +98,7 @@ class ParticipantSFU extends Equatable {
return [
isVideoEnabled,
isAudioEnabled,
isHandRaising,
isE2eeEnabled,
isSpeakerPhoneEnabled,
isSharingScreen,
Expand All @@ -110,6 +113,7 @@ class ParticipantSFU extends Equatable {
String? ownerId,
bool? isVideoEnabled,
bool? isAudioEnabled,
bool? isHandRaising,
bool? isE2eeEnabled,
bool? isSpeakerPhoneEnabled,
bool? isSharingScreen,
Expand All @@ -125,6 +129,7 @@ class ParticipantSFU extends Equatable {
ownerId: ownerId ?? this.ownerId,
isVideoEnabled: isVideoEnabled ?? this.isVideoEnabled,
isAudioEnabled: isAudioEnabled ?? this.isAudioEnabled,
isHandRaising: isHandRaising ?? this.isHandRaising,
isE2eeEnabled: isE2eeEnabled ?? this.isE2eeEnabled,
isSpeakerPhoneEnabled:
isSpeakerPhoneEnabled ?? this.isSpeakerPhoneEnabled,
Expand Down Expand Up @@ -192,6 +197,10 @@ extension ParticipantSFUX on ParticipantSFU {
}
}

Future<void> setHandRaising(bool isRaising) async {
isHandRaising = isRaising;
}

Future<void> dispose() async {
setScreenSharing(false);
cameraSource?.dispose();
Expand Down
5 changes: 5 additions & 0 deletions lib/waterbus_sdk_impl.dart
Original file line number Diff line number Diff line change
Expand Up @@ -257,6 +257,11 @@ class SdkCore extends WaterbusSdkInterface {
await _rtcManager.toggleAudio();
}

@override
Future<void> toggleRaiseHand() async {
await _rtcManager.toggleRaiseHand();
}

@override
Future<void> toggleSpeakerPhone() async {
await _rtcManager.toggleSpeakerPhone();
Expand Down
2 changes: 2 additions & 0 deletions lib/waterbus_sdk_interface.dart
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ abstract class WaterbusSdkInterface {
Future<bool> stopRecord();
Future<void> leaveRoom();

Future<void> toggleRaiseHand();

// white board
Future<void> startWhiteBoard();
Future<void> updateWhiteBoard(
Expand Down

0 comments on commit b5d7514

Please sign in to comment.