Skip to content

Commit 51b796c

Browse files
authored
Minor refactoring (#808)
* Move transcription segment * Use uuidv4 for visualizer id
1 parent ebdf340 commit 51b796c

File tree

6 files changed

+64
-47
lines changed

6 files changed

+64
-47
lines changed

lib/livekit_client.dart

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@ library livekit_client;
1717

1818
export 'src/constants.dart';
1919
export 'src/core/room.dart';
20-
export 'src/events.dart';
21-
export 'src/exceptions.dart';
20+
export 'src/data_stream/stream_reader.dart';
21+
export 'src/data_stream/stream_writer.dart';
2222
export 'src/e2ee/e2ee_manager.dart';
2323
export 'src/e2ee/events.dart';
24-
export 'src/e2ee/options.dart';
2524
export 'src/e2ee/key_provider.dart';
25+
export 'src/e2ee/options.dart';
26+
export 'src/events.dart';
27+
export 'src/exceptions.dart';
2628
export 'src/extensions.dart' show WidgetsBindingCompatible;
2729
export 'src/hardware/hardware.dart';
2830
export 'src/livekit.dart';
@@ -36,28 +38,25 @@ export 'src/publication/local.dart';
3638
export 'src/publication/remote.dart';
3739
export 'src/publication/track_publication.dart';
3840
export 'src/support/platform.dart';
41+
export 'src/track/audio_visualizer.dart';
3942
export 'src/track/local/audio.dart';
4043
export 'src/track/local/local.dart';
4144
export 'src/track/local/video.dart';
4245
export 'src/track/options.dart';
46+
export 'src/track/processor.dart';
47+
export 'src/track/processor_native.dart'
48+
if (dart.library.js_interop) 'src/track/processor_web.dart';
4349
export 'src/track/remote/audio.dart';
4450
export 'src/track/remote/remote.dart';
4551
export 'src/track/remote/video.dart';
4652
export 'src/track/track.dart';
47-
48-
export 'src/track/processor.dart';
49-
export 'src/track/processor_native.dart'
50-
if (dart.library.js_interop) 'src/track/processor_web.dart';
51-
52-
export 'src/track/audio_visualizer.dart';
53+
export 'src/types/data_stream.dart';
5354
export 'src/types/other.dart';
5455
export 'src/types/participant_permissions.dart';
56+
export 'src/types/rpc.dart';
57+
export 'src/types/transcription_segment.dart';
5558
export 'src/types/video_dimensions.dart';
5659
export 'src/types/video_encoding.dart';
5760
export 'src/types/video_parameters.dart';
58-
export 'src/types/rpc.dart';
5961
export 'src/widgets/screen_select_dialog.dart';
6062
export 'src/widgets/video_track_renderer.dart';
61-
export 'src/data_stream/stream_reader.dart';
62-
export 'src/data_stream/stream_writer.dart';
63-
export 'src/types/data_stream.dart';

lib/src/core/room.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import '../track/track.dart';
4747
import '../types/data_stream.dart';
4848
import '../types/other.dart';
4949
import '../types/rpc.dart';
50+
import '../types/transcription_segment.dart';
5051
import '../utils.dart';
5152
import 'engine.dart';
5253

lib/src/events.dart

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
// See the License for the specific language governing permissions and
1313
// limitations under the License.
1414

15-
import 'package:livekit_client/src/track/processor.dart';
1615
import 'core/engine.dart';
1716
import 'core/room.dart';
1817
import 'core/signal_client.dart';
@@ -23,9 +22,11 @@ import 'publication/local.dart';
2322
import 'publication/remote.dart';
2423
import 'publication/track_publication.dart';
2524
import 'stats/stats.dart';
25+
import 'track/processor.dart';
2626
import 'track/track.dart';
2727
import 'types/other.dart';
2828
import 'types/participant_permissions.dart';
29+
import 'types/transcription_segment.dart';
2930

3031
/// Base type for all LiveKit events.
3132
mixin LiveKitEvent {}
@@ -460,23 +461,6 @@ class ParticipantPermissionsUpdatedEvent with RoomEvent, ParticipantEvent {
460461
'(participant: ${participant}, permissions: ${permissions})';
461462
}
462463

463-
class TranscriptionSegment {
464-
final String id;
465-
final String text;
466-
final DateTime firstReceivedTime;
467-
final DateTime lastReceivedTime;
468-
final bool isFinal;
469-
final String language;
470-
const TranscriptionSegment({
471-
required this.id,
472-
required this.text,
473-
required this.firstReceivedTime,
474-
required this.lastReceivedTime,
475-
required this.isFinal,
476-
required this.language,
477-
});
478-
}
479-
480464
/// Transcription event received from the server.
481465
class TranscriptionEvent with RoomEvent, ParticipantEvent {
482466
final Participant participant;

lib/src/track/audio_visualizer.dart

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@ import 'package:livekit_client/src/support/disposable.dart';
22
import '../events.dart' show AudioVisualizerEvent;
33
import '../managers/event.dart' show EventsEmittable;
44
import 'local/local.dart' show AudioTrack;
5+
import 'package:uuid/uuid.dart' as uuid;
56

6-
import 'audio_visualizer_native.dart'
7-
if (dart.library.js_interop) 'audio_visualizer_web.dart';
7+
import 'audio_visualizer_native.dart' if (dart.library.js_interop) 'audio_visualizer_web.dart';
8+
9+
final _uuid = uuid.Uuid();
810

911
class AudioVisualizerOptions {
1012
final bool centeredBands;
@@ -17,12 +19,13 @@ class AudioVisualizerOptions {
1719
});
1820
}
1921

20-
abstract class AudioVisualizer extends DisposableChangeNotifier
21-
with EventsEmittable<AudioVisualizerEvent> {
22+
abstract class AudioVisualizer extends DisposableChangeNotifier with EventsEmittable<AudioVisualizerEvent> {
23+
// Unique Id for each visualizer
24+
final String visualizerId = _uuid.v4();
25+
2226
Future<void> start();
2327
Future<void> stop();
2428
}
2529

26-
AudioVisualizer createVisualizer(AudioTrack track,
27-
{AudioVisualizerOptions? options}) =>
30+
AudioVisualizer createVisualizer(AudioTrack track, {AudioVisualizerOptions? options}) =>
2831
createVisualizerImpl(track, options: options);

lib/src/track/audio_visualizer_native.dart

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
import 'dart:async';
22

33
import 'package:flutter/services.dart';
4-
54
import 'package:flutter_webrtc/flutter_webrtc.dart';
65

7-
import 'package:livekit_client/src/events.dart' show AudioVisualizerEvent;
8-
import 'package:livekit_client/src/track/local/local.dart';
6+
import '../events.dart' show AudioVisualizerEvent;
97
import '../support/native.dart' show Native;
8+
import '../track/local/local.dart';
109
import 'audio_visualizer.dart';
1110

1211
class AudioVisualizerNative extends AudioVisualizer {
13-
final String visualizerId = '${DateTime.now().millisecondsSinceEpoch}';
1412
EventChannel? _eventChannel;
1513
StreamSubscription? _streamSubscription;
14+
1615
final AudioTrack? _audioTrack;
17-
MediaStreamTrack get mediaStreamTrack => _audioTrack!.mediaStreamTrack;
1816
final AudioVisualizerOptions visualizerOptions;
17+
18+
MediaStreamTrack get mediaStreamTrack => _audioTrack!.mediaStreamTrack;
19+
1920
AudioVisualizerNative(this._audioTrack, {required this.visualizerOptions}) {
2021
onDispose(() async {
2122
await events.dispose();
@@ -56,11 +57,6 @@ class AudioVisualizerNative extends AudioVisualizer {
5657
await Native.stopVisualizer(mediaStreamTrack.id!,
5758
visualizerId: visualizerId);
5859

59-
events.emit(AudioVisualizerEvent(
60-
track: _audioTrack!,
61-
event: [],
62-
));
63-
6460
await _streamSubscription?.cancel();
6561
_streamSubscription = null;
6662
_eventChannel = null;
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Copyright 2025 LiveKit, Inc.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
import 'package:flutter/foundation.dart';
16+
17+
@immutable
18+
class TranscriptionSegment {
19+
final String id;
20+
final String text;
21+
final DateTime firstReceivedTime;
22+
final DateTime lastReceivedTime;
23+
final bool isFinal;
24+
final String language;
25+
26+
const TranscriptionSegment({
27+
required this.id,
28+
required this.text,
29+
required this.firstReceivedTime,
30+
required this.lastReceivedTime,
31+
required this.isFinal,
32+
required this.language,
33+
});
34+
}

0 commit comments

Comments
 (0)