Solian/lib/models/call.dart

75 lines
1.9 KiB
Dart
Raw Normal View History

2024-06-01 12:18:25 +00:00
import 'package:livekit_client/livekit_client.dart';
2024-05-18 10:17:16 +00:00
import 'package:solian/models/channel.dart';
class Call {
int id;
DateTime createdAt;
DateTime updatedAt;
DateTime? deletedAt;
DateTime? endedAt;
String externalId;
int founderId;
int channelId;
2024-08-02 09:14:23 +00:00
List<dynamic> participants;
2024-05-18 10:17:16 +00:00
Channel channel;
Call({
required this.id,
required this.createdAt,
required this.updatedAt,
2024-05-28 16:14:41 +00:00
required this.deletedAt,
required this.endedAt,
2024-05-18 10:17:16 +00:00
required this.externalId,
required this.founderId,
required this.channelId,
2024-08-02 09:14:23 +00:00
required this.participants,
2024-05-18 10:17:16 +00:00
required this.channel,
});
factory Call.fromJson(Map<String, dynamic> json) => Call(
id: json['id'],
createdAt: DateTime.parse(json['created_at']),
updatedAt: DateTime.parse(json['updated_at']),
deletedAt: json['deleted_at'],
endedAt:
json['ended_at'] != null ? DateTime.parse(json['ended_at']) : null,
externalId: json['external_id'],
founderId: json['founder_id'],
channelId: json['channel_id'],
2024-08-02 09:14:23 +00:00
participants: json['participants'] ?? List.empty(),
2024-05-18 10:17:16 +00:00
channel: Channel.fromJson(json['channel']),
);
Map<String, dynamic> toJson() => {
'id': id,
'created_at': createdAt.toIso8601String(),
'updated_at': updatedAt.toIso8601String(),
'deleted_at': deletedAt,
'ended_at': endedAt?.toIso8601String(),
'external_id': externalId,
'founder_id': founderId,
'channel_id': channelId,
2024-08-02 09:14:23 +00:00
'participants': participants,
2024-05-18 10:17:16 +00:00
'channel': channel.toJson(),
};
}
2024-06-01 12:18:25 +00:00
enum ParticipantStatsType {
unknown,
localAudioSender,
localVideoSender,
remoteAudioReceiver,
remoteVideoReceiver,
}
class ParticipantTrack {
ParticipantTrack(
{required this.participant,
required this.videoTrack,
required this.isScreenShare});
2024-08-02 09:14:23 +00:00
2024-06-01 12:18:25 +00:00
VideoTrack? videoTrack;
Participant participant;
bool isScreenShare;
}