third party video integration
This commit is contained in:
committed by
Salvatore Giordano
parent
ceab9175ce
commit
c9281e0c89
+2
-2
@@ -54,11 +54,11 @@ scripts:
|
||||
description: Build all generated files for Dart & Flutter packages in this project.
|
||||
|
||||
generate:dart:
|
||||
run: melos exec -c 1 --depends-on="build_runner" --no-flutter -- "dart run build_runner build --delete-conflicting-outputs"
|
||||
run: melos exec -c 1 --depends-on="build_runner" --no-flutter -- "dart pub run build_runner build --delete-conflicting-outputs --enable-experiment=super-parameters,enhanced-enums"
|
||||
description: Build all generated files for Dart packages in this project.
|
||||
|
||||
generate:flutter:
|
||||
run: melos exec -c 1 --depends-on="build_runner" --flutter -- "flutter pub run build_runner build --delete-conflicting-outputs"
|
||||
run: melos exec -c 1 --depends-on="build_runner" --flutter -- "flutter pub run build_runner build --delete-conflicting-outputs --enable-experiment=super-parameters,enhanced-enums"
|
||||
description: Build all generated files for Flutter packages in this project.
|
||||
|
||||
test:all:
|
||||
|
||||
@@ -17,8 +17,10 @@ import 'package:stream_chat/src/core/http/stream_http_client.dart';
|
||||
import 'package:stream_chat/src/core/http/token.dart';
|
||||
import 'package:stream_chat/src/core/http/token_manager.dart';
|
||||
import 'package:stream_chat/src/core/models/attachment_file.dart';
|
||||
import 'package:stream_chat/src/core/models/call_token_payload.dart';
|
||||
import 'package:stream_chat/src/core/models/channel_model.dart';
|
||||
import 'package:stream_chat/src/core/models/channel_state.dart';
|
||||
import 'package:stream_chat/src/core/models/create_call_payload.dart';
|
||||
import 'package:stream_chat/src/core/models/event.dart';
|
||||
import 'package:stream_chat/src/core/models/filter.dart';
|
||||
import 'package:stream_chat/src/core/models/member.dart';
|
||||
@@ -585,6 +587,17 @@ class StreamChatClient {
|
||||
}
|
||||
}
|
||||
|
||||
Future<CallTokenPayload> getCallToken(String callId) async =>
|
||||
_chatApi.call.getCallToken(callId);
|
||||
|
||||
Future<CreateCallPayload> createCall(
|
||||
String callId,
|
||||
String callType,
|
||||
Map<String, Object?>? options,
|
||||
) async {
|
||||
return _chatApi.call.createCall(callId, callType, options);
|
||||
}
|
||||
|
||||
/// Requests channels with a given query from the API.
|
||||
Future<List<Channel>> queryChannelsOnline({
|
||||
Filter? filter,
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
import 'package:stream_chat/src/core/http/stream_http_client.dart';
|
||||
import 'package:stream_chat/src/core/models/call_token_payload.dart';
|
||||
import 'package:stream_chat/src/core/models/create_call_payload.dart';
|
||||
|
||||
class CallApi {
|
||||
/// Initialize a new call api
|
||||
CallApi(this._client);
|
||||
|
||||
final StreamHttpClient _client;
|
||||
|
||||
Future<CallTokenPayload> getCallToken(String callId) async {
|
||||
final response = await _client.post(
|
||||
'/calls/$callId',
|
||||
);
|
||||
return CallTokenPayload.fromJson(response.data);
|
||||
}
|
||||
|
||||
Future<CreateCallPayload> createCall(
|
||||
String callId,
|
||||
String callType,
|
||||
Map<String, Object?>? options,
|
||||
) async {
|
||||
final response = await _client.post(
|
||||
'/channels/$callType/$callId/call',
|
||||
);
|
||||
return CreateCallPayload.fromJson(response.data);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:stream_chat/src/core/api/attachment_file_uploader.dart';
|
||||
import 'package:stream_chat/src/core/api/call_api.dart';
|
||||
import 'package:stream_chat/src/core/api/channel_api.dart';
|
||||
import 'package:stream_chat/src/core/api/device_api.dart';
|
||||
import 'package:stream_chat/src/core/api/general_api.dart';
|
||||
@@ -53,6 +54,11 @@ class StreamChatApi {
|
||||
/// Api dedicated to message operations
|
||||
MessageApi get message => _message ??= MessageApi(_client);
|
||||
|
||||
CallApi? _call;
|
||||
|
||||
/// Api dedicated to guest operations
|
||||
CallApi get call => _call ??= CallApi(_client);
|
||||
|
||||
ChannelApi? _channel;
|
||||
|
||||
/// Api dedicated to channel operations
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'agora_payload.g.dart';
|
||||
|
||||
@JsonSerializable(includeIfNull: false)
|
||||
class AgoraPayload {
|
||||
final String channel;
|
||||
const AgoraPayload({required this.channel});
|
||||
|
||||
factory AgoraPayload.fromJson(Map<String, dynamic> json) =>
|
||||
_$AgoraPayloadFromJson(json);
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'agora_payload.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
AgoraPayload _$AgoraPayloadFromJson(Map<String, dynamic> json) => AgoraPayload(
|
||||
channel: json['channel'] as String,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$AgoraPayloadToJson(AgoraPayload instance) =>
|
||||
<String, dynamic>{
|
||||
'channel': instance.channel,
|
||||
};
|
||||
@@ -0,0 +1,22 @@
|
||||
import 'package:stream_chat/src/core/models/agora_payload.dart';
|
||||
import 'package:stream_chat/src/core/models/hms_payload.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'call_payload.g.dart';
|
||||
|
||||
@JsonSerializable(includeIfNull: false)
|
||||
class CallPayload extends Equatable {
|
||||
final String id;
|
||||
final String provider;
|
||||
final AgoraPayload? agora;
|
||||
final HMSPayload? hms;
|
||||
|
||||
const CallPayload({required this.id, required this.provider, this.agora, this.hms});
|
||||
|
||||
factory CallPayload.fromJson(Map<String, dynamic> json) =>
|
||||
_$CallPayloadFromJson(json);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [id, provider, agora, hms];
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'call_payload.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
CallPayload _$CallPayloadFromJson(Map<String, dynamic> json) => CallPayload(
|
||||
id: json['id'] as String,
|
||||
provider: json['provider'] as String,
|
||||
agora: json['agora'] == null
|
||||
? null
|
||||
: AgoraPayload.fromJson(json['agora'] as Map<String, dynamic>),
|
||||
hms: json['hms'] == null
|
||||
? null
|
||||
: HMSPayload.fromJson(json['hms'] as Map<String, dynamic>),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$CallPayloadToJson(CallPayload instance) {
|
||||
final val = <String, dynamic>{
|
||||
'id': instance.id,
|
||||
'provider': instance.provider,
|
||||
};
|
||||
|
||||
void writeNotNull(String key, dynamic value) {
|
||||
if (value != null) {
|
||||
val[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
writeNotNull('agora', instance.agora?.toJson());
|
||||
writeNotNull('hms', instance.hms?.toJson());
|
||||
return val;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
|
||||
|
||||
part 'call_token_payload.g.dart';
|
||||
|
||||
@JsonSerializable(includeIfNull: false)
|
||||
class CallTokenPayload extends Equatable {
|
||||
final String token;
|
||||
final int? agoraUid;
|
||||
final String? agoraAppId;
|
||||
const CallTokenPayload({required this.token, this.agoraUid, this.agoraAppId});
|
||||
|
||||
factory CallTokenPayload.fromJson(Map<String, dynamic> json) =>
|
||||
_$CallTokenPayloadFromJson(json);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [token, agoraAppId, agoraUid];
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'call_token_payload.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
CallTokenPayload _$CallTokenPayloadFromJson(Map<String, dynamic> json) =>
|
||||
CallTokenPayload(
|
||||
token: json['token'] as String,
|
||||
agoraUid: json['agora_uid'] as int?,
|
||||
agoraAppId: json['agora_app_id'] as String?,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$CallTokenPayloadToJson(CallTokenPayload instance) {
|
||||
final val = <String, dynamic>{
|
||||
'token': instance.token,
|
||||
};
|
||||
|
||||
void writeNotNull(String key, dynamic value) {
|
||||
if (value != null) {
|
||||
val[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
writeNotNull('agora_uid', instance.agoraUid);
|
||||
writeNotNull('agora_app_id', instance.agoraAppId);
|
||||
return val;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:stream_chat/src/core/models/call_payload.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
|
||||
part 'create_call_payload.g.dart';
|
||||
@JsonSerializable(includeIfNull: false)
|
||||
class CreateCallPayload extends Equatable {
|
||||
final CallPayload call;
|
||||
const CreateCallPayload({required this.call});
|
||||
|
||||
factory CreateCallPayload.fromJson(Map<String, dynamic> json) =>
|
||||
_$CreateCallPayloadFromJson(json);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [call];
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'create_call_payload.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
CreateCallPayload _$CreateCallPayloadFromJson(Map<String, dynamic> json) =>
|
||||
CreateCallPayload(
|
||||
call: CallPayload.fromJson(json['call'] as Map<String, dynamic>),
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$CreateCallPayloadToJson(CreateCallPayload instance) =>
|
||||
<String, dynamic>{
|
||||
'call': instance.call.toJson(),
|
||||
};
|
||||
@@ -0,0 +1,17 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:json_annotation/json_annotation.dart';
|
||||
|
||||
part 'hms_payload.g.dart';
|
||||
|
||||
@JsonSerializable(includeIfNull: false)
|
||||
class HMSPayload extends Equatable {
|
||||
final String roomId;
|
||||
final String roomName;
|
||||
const HMSPayload({required this.roomId, required this.roomName});
|
||||
|
||||
factory HMSPayload.fromJson(Map<String, dynamic> json) =>
|
||||
_$HMSPayloadFromJson(json);
|
||||
|
||||
@override
|
||||
List<Object?> get props => [roomId, roomName];
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'hms_payload.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// JsonSerializableGenerator
|
||||
// **************************************************************************
|
||||
|
||||
HMSPayload _$HMSPayloadFromJson(Map<String, dynamic> json) => HMSPayload(
|
||||
roomId: json['room_id'] as String,
|
||||
roomName: json['room_name'] as String,
|
||||
);
|
||||
|
||||
Map<String, dynamic> _$HMSPayloadToJson(HMSPayload instance) =>
|
||||
<String, dynamic>{
|
||||
'room_id': instance.roomId,
|
||||
'room_name': instance.roomName,
|
||||
};
|
||||
Reference in New Issue
Block a user