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.
|
description: Build all generated files for Dart & Flutter packages in this project.
|
||||||
|
|
||||||
generate:dart:
|
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.
|
description: Build all generated files for Dart packages in this project.
|
||||||
|
|
||||||
generate:flutter:
|
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.
|
description: Build all generated files for Flutter packages in this project.
|
||||||
|
|
||||||
test:all:
|
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.dart';
|
||||||
import 'package:stream_chat/src/core/http/token_manager.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/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_model.dart';
|
||||||
import 'package:stream_chat/src/core/models/channel_state.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/event.dart';
|
||||||
import 'package:stream_chat/src/core/models/filter.dart';
|
import 'package:stream_chat/src/core/models/filter.dart';
|
||||||
import 'package:stream_chat/src/core/models/member.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.
|
/// Requests channels with a given query from the API.
|
||||||
Future<List<Channel>> queryChannelsOnline({
|
Future<List<Channel>> queryChannelsOnline({
|
||||||
Filter? filter,
|
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:logging/logging.dart';
|
||||||
import 'package:stream_chat/src/core/api/attachment_file_uploader.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/channel_api.dart';
|
||||||
import 'package:stream_chat/src/core/api/device_api.dart';
|
import 'package:stream_chat/src/core/api/device_api.dart';
|
||||||
import 'package:stream_chat/src/core/api/general_api.dart';
|
import 'package:stream_chat/src/core/api/general_api.dart';
|
||||||
@@ -53,6 +54,11 @@ class StreamChatApi {
|
|||||||
/// Api dedicated to message operations
|
/// Api dedicated to message operations
|
||||||
MessageApi get message => _message ??= MessageApi(_client);
|
MessageApi get message => _message ??= MessageApi(_client);
|
||||||
|
|
||||||
|
CallApi? _call;
|
||||||
|
|
||||||
|
/// Api dedicated to guest operations
|
||||||
|
CallApi get call => _call ??= CallApi(_client);
|
||||||
|
|
||||||
ChannelApi? _channel;
|
ChannelApi? _channel;
|
||||||
|
|
||||||
/// Api dedicated to channel operations
|
/// 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