Skip to content

Update format settings #29

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
- name: Install project dependencies
run: flutter pub get
- name: Dart Format Check
run: dart format lib/ test/ --set-exit-if-changed
run: dart format -l 120 lib/ test/ --set-exit-if-changed
- name: Import Sorter Check
run: dart run import_sorter:main --no-comments --exit-if-changed
- name: Dart Analyze Check
Expand Down
12 changes: 4 additions & 8 deletions lib/src/context/chat_context.dart
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,7 @@ class ChatMessage {
factory ChatMessage.fromJsonString(String source, Participant? participant) =>
ChatMessage.fromMap(const JsonDecoder().convert(source), participant);

factory ChatMessage.fromMap(
Map<String, dynamic> map, Participant? participant) {
factory ChatMessage.fromMap(Map<String, dynamic> map, Participant? participant) {
return ChatMessage(
message: map['message'],
timestamp: map['timestamp'],
Expand All @@ -68,17 +67,15 @@ mixin ChatContextMixin on ChangeNotifier {
LocalParticipant? _localParticipant;
EventsListener<RoomEvent>? _listener;

void chatContextSetup(
EventsListener<RoomEvent>? listener, LocalParticipant? localParticipant) {
void chatContextSetup(EventsListener<RoomEvent>? listener, LocalParticipant? localParticipant) {
_listener = listener;
_localParticipant = localParticipant;
if (listener != null) {
_listener!.on<DataReceivedEvent>((event) {
Debug.event('ChatContext: DataReceivedEvent');

if (event.topic == 'lk-chat-topic') {
addMessageFromMap(
const Utf8Decoder().convert(event.data), event.participant);
addMessageFromMap(const Utf8Decoder().convert(event.data), event.participant);
}
});
} else {
Expand All @@ -96,8 +93,7 @@ mixin ChatContextMixin on ChangeNotifier {
participant: _localParticipant,
);
addMessage(msg);
_localParticipant?.publishData(const Utf8Encoder().convert(msg.toJson()),
topic: 'lk-chat-topic');
_localParticipant?.publishData(const Utf8Encoder().convert(msg.toJson()), topic: 'lk-chat-topic');
}

void addMessage(ChatMessage message) {
Expand Down
45 changes: 15 additions & 30 deletions lib/src/context/media_device_context.dart
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,7 @@ class MediaDeviceContext extends ChangeNotifier {

Future<void> loadDevices() async {
_loadDevices(await Hardware.instance.enumerateDevices());
_deviceChangeSub =
Hardware.instance.onDeviceChange.stream.listen(_loadDevices);
_deviceChangeSub = Hardware.instance.onDeviceChange.stream.listen(_loadDevices);
}

_loadDevices(List<MediaDevice> devices) {
Expand All @@ -76,14 +75,11 @@ class MediaDeviceContext extends ChangeNotifier {
_videoInputs = devices.where((d) => d.kind == 'videoinput').toList();

selectedAudioInputDeviceId ??=
Hardware.instance.selectedAudioInput?.deviceId ??
_audioInputs?.firstOrNull?.deviceId;
Hardware.instance.selectedAudioInput?.deviceId ?? _audioInputs?.firstOrNull?.deviceId;
selectedVideoInputDeviceId ??=
Hardware.instance.selectedVideoInput?.deviceId ??
_videoInputs?.firstOrNull?.deviceId;
Hardware.instance.selectedVideoInput?.deviceId ?? _videoInputs?.firstOrNull?.deviceId;
selectedAudioOutputDeviceId ??=
Hardware.instance.selectedAudioOutput?.deviceId ??
_audioOutputs?.firstOrNull?.deviceId;
Hardware.instance.selectedAudioOutput?.deviceId ?? _audioOutputs?.firstOrNull?.deviceId;
notifyListeners();
}

Expand Down Expand Up @@ -189,8 +185,7 @@ class MediaDeviceContext extends ChangeNotifier {
notifyListeners();
}

bool get isScreenShareEnabled =>
_room?.localParticipant?.isScreenShareEnabled() ?? false;
bool get isScreenShareEnabled => _room?.localParticipant?.isScreenShareEnabled() ?? false;

Future<void> enableScreenShare(context) async {
if (lkPlatformIsDesktop()) {
Expand Down Expand Up @@ -232,20 +227,16 @@ class MediaDeviceContext extends ChangeNotifier {
notificationTitle: 'Screen Sharing',
notificationText: 'LiveKit Example is sharing the screen.',
notificationImportance: AndroidNotificationImportance.normal,
notificationIcon: AndroidResource(
name: 'livekit_ic_launcher', defType: 'mipmap'),
notificationIcon: AndroidResource(name: 'livekit_ic_launcher', defType: 'mipmap'),
);
hasPermissions = await FlutterBackground.initialize(
androidConfig: androidConfig);
hasPermissions = await FlutterBackground.initialize(androidConfig: androidConfig);
}
if (hasPermissions &&
!FlutterBackground.isBackgroundExecutionEnabled) {
if (hasPermissions && !FlutterBackground.isBackgroundExecutionEnabled) {
await FlutterBackground.enableBackgroundExecution();
}
} catch (e) {
if (!isRetry) {
return await Future<void>.delayed(const Duration(seconds: 1),
() => requestBackgroundPermission(true));
return await Future<void>.delayed(const Duration(seconds: 1), () => requestBackgroundPermission(true));
}
Debug.log('could not publish video: $e');
}
Expand All @@ -265,13 +256,11 @@ class MediaDeviceContext extends ChangeNotifier {
}

if (lkPlatformIsWebMobile()) {
await context
.showErrorDialog('Screen share is not supported on mobile web');
await context.showErrorDialog('Screen share is not supported on mobile web');
return;
}

await _room?.localParticipant
?.setScreenShareEnabled(true, captureScreenAudio: true);
await _room?.localParticipant?.setScreenShareEnabled(true, captureScreenAudio: true);
notifyListeners();
}

Expand All @@ -284,23 +273,19 @@ class MediaDeviceContext extends ChangeNotifier {

bool? get isSpeakerOn => Hardware.instance.speakerOn;

void setSpeakerphoneOn(bool speakerOn,
{bool forceSpeakerOutput = false}) async {
await Hardware.instance
.setSpeakerphoneOn(speakerOn, forceSpeakerOutput: forceSpeakerOutput);
void setSpeakerphoneOn(bool speakerOn, {bool forceSpeakerOutput = false}) async {
await Hardware.instance.setSpeakerphoneOn(speakerOn, forceSpeakerOutput: forceSpeakerOutput);
notifyListeners();
}

CameraPosition? get currentPosition {
final track =
_room?.localParticipant?.videoTrackPublications.firstOrNull?.track;
final track = _room?.localParticipant?.videoTrackPublications.firstOrNull?.track;
if (track == null) return null;
return (track.currentOptions as CameraCaptureOptions).cameraPosition;
}

void switchCamera(CameraPosition newPosition) async {
final track =
_room?.localParticipant?.videoTrackPublications.firstOrNull?.track;
final track = _room?.localParticipant?.videoTrackPublications.firstOrNull?.track;
if (track == null) return;

try {
Expand Down
39 changes: 13 additions & 26 deletions lib/src/context/participant_context.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,27 +28,23 @@ class ParticipantContext extends ChangeNotifier {
return Provider.of<ParticipantContext?>(context);
}

ParticipantContext(this._participant)
: _listener = _participant.createListener() {
ParticipantContext(this._participant) : _listener = _participant.createListener() {
_listener
..on<SpeakingChangedEvent>((event) {
if (event.participant.identity == identity &&
isSpeaking != event.speaking) {
if (event.participant.identity == identity && isSpeaking != event.speaking) {
Debug.event(
'ParticipantContext: SpeakingChangedEvent identity = ${_participant.identity}, speaking = ${event.speaking}');
_isSpeaking = event.speaking;
notifyListeners();
}
})
..on<ParticipantNameUpdatedEvent>((event) {
Debug.event(
'ParticipantContext: ParticipantNameUpdatedEvent name = ${event.name}');
Debug.event('ParticipantContext: ParticipantNameUpdatedEvent name = ${event.name}');
notifyListeners();
})
..on<ParticipantMetadataUpdatedEvent>((event) {
if (event.metadata != _metadata) {
Debug.event(
'ParticipantContext: ParticipantMetadataUpdatedEvent metadata = ${event.metadata}');
Debug.event('ParticipantContext: ParticipantMetadataUpdatedEvent metadata = ${event.metadata}');

_metadata = event.metadata;
notifyListeners();
Expand All @@ -67,10 +63,8 @@ class ParticipantContext extends ChangeNotifier {
if (_permissions?.canPublish != event.permissions.canPublish ||
_permissions?.canSubscribe != event.permissions.canSubscribe ||
_permissions?.canPublishData != event.permissions.canPublishData ||
_permissions?.canUpdateMetadata !=
event.permissions.canUpdateMetadata ||
_permissions?.canPublishSources !=
event.permissions.canPublishSources) {
_permissions?.canUpdateMetadata != event.permissions.canUpdateMetadata ||
_permissions?.canPublishSources != event.permissions.canPublishSources) {
Debug.event(
'ParticipantContext: ParticipantPermissionsUpdatedEvent permissions canPublish = ${event.permissions.canPublish}, canSubscribe = ${event.permissions.canSubscribe}, canPublishData = ${event.permissions.canPublishData}, canUpdateMetadata = ${event.permissions.canUpdateMetadata}, canPublishSources = ${event.permissions.canPublishSources}');
_permissions = event.permissions;
Expand All @@ -86,23 +80,19 @@ class ParticipantContext extends ChangeNotifier {
notifyListeners();
})
..on<ParticipantAttributesChanged>((event) {
Debug.event(
'ParticipantContext: ParticipantAttributesChanged attributes = ${event.attributes}');
Debug.event('ParticipantContext: ParticipantAttributesChanged attributes = ${event.attributes}');
_attributes = event.attributes;
notifyListeners();
})
..on<TrackMutedEvent>((event) {
if (event.participant.identity == identity &&
event.publication.kind == TrackType.AUDIO) {
if (event.participant.identity == identity && event.publication.kind == TrackType.AUDIO) {
Debug.event('TrackContext: TrackMutedEvent for ${_participant.sid}');
notifyListeners();
}
})
..on<TrackUnmutedEvent>((event) {
if (event.participant.identity == identity &&
event.publication.kind == TrackType.AUDIO) {
Debug.event(
'TrackContext: TrackUnmutedEvent for ${_participant.sid}');
if (event.participant.identity == identity && event.publication.kind == TrackType.AUDIO) {
Debug.event('TrackContext: TrackUnmutedEvent for ${_participant.sid}');
notifyListeners();
}
});
Expand All @@ -124,14 +114,12 @@ class ParticipantContext extends ChangeNotifier {

bool get isLocal => _participant is LocalParticipant;

List<TrackPublication> get tracks =>
_participant.trackPublications.values.toList();
List<TrackPublication> get tracks => _participant.trackPublications.values.toList();

final Participant _participant;
final EventsListener<ParticipantEvent> _listener;

bool get isEncrypted =>
_participant.trackPublications.isNotEmpty && _participant.isEncrypted;
bool get isEncrypted => _participant.trackPublications.isNotEmpty && _participant.isEncrypted;

String get identity => _participant.identity;

Expand All @@ -144,8 +132,7 @@ class ParticipantContext extends ChangeNotifier {
String? _metadata;
String? get metadata => _metadata;

String get name =>
_participant.name == '' ? _participant.identity : _participant.name;
String get name => _participant.name == '' ? _participant.identity : _participant.name;

bool get isMuted => _participant.isMuted;

Expand Down
27 changes: 9 additions & 18 deletions lib/src/context/room_context.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@ import 'package:livekit_components/src/context/transcription_context.dart';
import '../debug/logger.dart';
import 'chat_context.dart';

class RoomContext extends ChangeNotifier
with ChatContextMixin, TranscriptionContextMixin {
class RoomContext extends ChangeNotifier with ChatContextMixin, TranscriptionContextMixin {
/// Get the [RoomContext] from the [context].
/// this method must be called under the [LivekitRoom] widget.
static RoomContext? of(BuildContext context) {
Expand Down Expand Up @@ -96,27 +95,22 @@ class RoomContext extends ChangeNotifier
notifyListeners();
})
..on<RoomMetadataChangedEvent>((event) {
Debug.event(
'RoomContext: RoomMetadataChangedEvent $roomName metadata = ${event.metadata}');
Debug.event('RoomContext: RoomMetadataChangedEvent $roomName metadata = ${event.metadata}');
_roomMetadata = event.metadata;
notifyListeners();
})
..on<RoomRecordingStatusChanged>((event) {
Debug.event(
'RoomContext: RoomRecordingStatusChanged activeRecording = ${event.activeRecording}');
Debug.event('RoomContext: RoomRecordingStatusChanged activeRecording = ${event.activeRecording}');
_activeRecording = event.activeRecording;
notifyListeners();
})
..on<ParticipantConnectedEvent>((event) {
Debug.event(
'RoomContext: ParticipantConnectedEvent $roomName participant = ${event.participant.identity}');
Debug.event('RoomContext: ParticipantConnectedEvent $roomName participant = ${event.participant.identity}');
_buildParticipants();
})
..on<ParticipantDisconnectedEvent>((event) {
Debug.event(
'RoomContext: ParticipantDisconnectedEvent $roomName participant = ${event.participant.identity}');
_participants
.removeWhere((p) => p.identity == event.participant.identity);
Debug.event('RoomContext: ParticipantDisconnectedEvent $roomName participant = ${event.participant.identity}');
_participants.removeWhere((p) => p.identity == event.participant.identity);
notifyListeners();
})
..on<TrackPublishedEvent>((event) {
Expand All @@ -130,13 +124,11 @@ class RoomContext extends ChangeNotifier
_buildParticipants();
})
..on<LocalTrackPublishedEvent>((event) {
Debug.event(
'RoomContext: LocalTrackPublishedEvent track = ${event.publication.sid}');
Debug.event('RoomContext: LocalTrackPublishedEvent track = ${event.publication.sid}');
_buildParticipants();
})
..on<LocalTrackUnpublishedEvent>((event) {
Debug.event(
'RoomContext: LocalTrackUnpublishedEvent track = ${event.publication.sid}');
Debug.event('RoomContext: LocalTrackUnpublishedEvent track = ${event.publication.sid}');
_buildParticipants();
})
..on<TrackMutedEvent>((event) {
Expand Down Expand Up @@ -320,8 +312,7 @@ class RoomContext extends ChangeNotifier

bool get microphoneOpened => isMicrophoneEnabled ?? _localAudioTrack != null;

bool? get isMicrophoneEnabled =>
_room.localParticipant?.isMicrophoneEnabled();
bool? get isMicrophoneEnabled => _room.localParticipant?.isMicrophoneEnabled();

Future<void> resetLocalTracks() async {
_localAudioTrack = null;
Expand Down
Loading
Loading