feat: add sendAudioEvent and isVoiceMessage method to msc extensions
This commit is contained in:
parent
4bc4b14124
commit
883785db86
|
|
@ -0,0 +1,41 @@
|
||||||
|
import 'package:matrix/matrix.dart';
|
||||||
|
|
||||||
|
extension AudioEventExtension on Event {
|
||||||
|
/// returns if the event is a voice message
|
||||||
|
bool get isVoiceMessage =>
|
||||||
|
content['org.matrix.msc2516.voice'] is Map<String, Object?> ||
|
||||||
|
content['org.matrix.msc3245.voice'] is Map<String, Object?>;
|
||||||
|
}
|
||||||
|
|
||||||
|
extension AudioEventRoomExtension on Room {
|
||||||
|
/// Sends an audio file with appropriate info to this room. Returns the event
|
||||||
|
/// ID generated by the server for this event.
|
||||||
|
Future<String?> sendAudioEvent(
|
||||||
|
MatrixAudioFile audioFile, {
|
||||||
|
Event? replyTo,
|
||||||
|
bool isVoiceMessage = false,
|
||||||
|
int? durationInMs,
|
||||||
|
List<int>? waveform,
|
||||||
|
Map<String, dynamic>? otherFileInfo,
|
||||||
|
}) {
|
||||||
|
final extraContent = <String, Map<String, Object?>>{};
|
||||||
|
if (durationInMs != null) {
|
||||||
|
otherFileInfo ??= {};
|
||||||
|
otherFileInfo['duration'] = durationInMs;
|
||||||
|
}
|
||||||
|
if (otherFileInfo != null) extraContent['info'] = otherFileInfo;
|
||||||
|
if (isVoiceMessage) {
|
||||||
|
// No content, this is only used to identify if the event is a voice message.
|
||||||
|
extraContent['org.matrix.msc3245.voice'] = <String, Object?>{};
|
||||||
|
}
|
||||||
|
extraContent['org.matrix.msc1767.audio'] = <String, Object?>{
|
||||||
|
'duration': durationInMs,
|
||||||
|
'waveform': waveform,
|
||||||
|
};
|
||||||
|
return sendFileEvent(
|
||||||
|
audioFile,
|
||||||
|
inReplyTo: replyTo,
|
||||||
|
extraContent: extraContent,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue