From a5d0c74fd644076437feff635bcfaba43751c8c0 Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Thu, 25 Aug 2022 12:30:50 +0200 Subject: [PATCH] refactor: clean up and add docs --- .../stream_chat/lib/src/client/client.dart | 4 +- .../lib/src/core/api/call_api.dart | 10 +- .../lib/src/core/api/responses.dart | 122 ++++++++++++++++++ .../lib/src/core/api/responses.g.dart | 63 +++++++++ .../lib/src/core/models/agora_payload.dart | 15 --- .../lib/src/core/models/agora_payload.g.dart | 16 --- .../lib/src/core/models/call_payload.dart | 25 ---- .../lib/src/core/models/call_payload.g.dart | 26 ---- .../src/core/models/call_token_payload.dart | 23 ---- .../src/core/models/call_token_payload.g.dart | 21 --- .../src/core/models/create_call_payload.dart | 20 --- .../core/models/create_call_payload.g.dart | 17 --- .../lib/src/core/models/hms_payload.dart | 19 --- .../lib/src/core/models/hms_payload.g.dart | 18 --- packages/stream_chat/lib/stream_chat.dart | 6 - 15 files changed, 193 insertions(+), 212 deletions(-) delete mode 100644 packages/stream_chat/lib/src/core/models/agora_payload.dart delete mode 100644 packages/stream_chat/lib/src/core/models/agora_payload.g.dart delete mode 100644 packages/stream_chat/lib/src/core/models/call_payload.dart delete mode 100644 packages/stream_chat/lib/src/core/models/call_payload.g.dart delete mode 100644 packages/stream_chat/lib/src/core/models/call_token_payload.dart delete mode 100644 packages/stream_chat/lib/src/core/models/call_token_payload.g.dart delete mode 100644 packages/stream_chat/lib/src/core/models/create_call_payload.dart delete mode 100644 packages/stream_chat/lib/src/core/models/create_call_payload.g.dart delete mode 100644 packages/stream_chat/lib/src/core/models/hms_payload.dart delete mode 100644 packages/stream_chat/lib/src/core/models/hms_payload.g.dart diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index ea221701..0654f837 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -17,10 +17,8 @@ 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'; @@ -587,9 +585,11 @@ class StreamChatClient { } } + /// Returns a token associated with the [callId]. Future getCallToken(String callId) async => _chatApi.call.getCallToken(callId); + /// Creates a new call. Future createCall({ required String callId, required String callType, diff --git a/packages/stream_chat/lib/src/core/api/call_api.dart b/packages/stream_chat/lib/src/core/api/call_api.dart index 6c542848..d7deff1e 100644 --- a/packages/stream_chat/lib/src/core/api/call_api.dart +++ b/packages/stream_chat/lib/src/core/api/call_api.dart @@ -1,13 +1,14 @@ +import 'package:stream_chat/src/core/api/responses.dart'; 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'; +/// Defines the api dedicated to video call operations class CallApi { /// Initialize a new call api CallApi(this._client); final StreamHttpClient _client; + /// Returns a token dedicated to the [callId] Future getCallToken(String callId) async { final response = await _client.post( '/calls/$callId', @@ -17,6 +18,7 @@ class CallApi { return CallTokenPayload.fromJson(response.data); } + /// Creates a new call Future createCall({ required String callId, required String callType, @@ -26,8 +28,8 @@ class CallApi { }) async { final response = await _client.post(_getChannelUrl(channelId, channelType), data: { - 'id': '$callId', - 'type': '$callType', + 'id': callId, + 'type': callType, }); // return response.data; return CreateCallPayload.fromJson(response.data); diff --git a/packages/stream_chat/lib/src/core/api/responses.dart b/packages/stream_chat/lib/src/core/api/responses.dart index d608c5aa..72142778 100644 --- a/packages/stream_chat/lib/src/core/api/responses.dart +++ b/packages/stream_chat/lib/src/core/api/responses.dart @@ -1,5 +1,7 @@ +import 'package:equatable/equatable.dart'; import 'package:json_annotation/json_annotation.dart'; import 'package:stream_chat/src/client/client.dart'; +import 'package:stream_chat/src/core/api/call_api.dart'; import 'package:stream_chat/src/core/error/error.dart'; import 'package:stream_chat/src/core/models/banned_user.dart'; import 'package:stream_chat/src/core/models/channel_model.dart'; @@ -495,3 +497,123 @@ class OGAttachmentResponse extends _BaseResponse { static OGAttachmentResponse fromJson(Map json) => _$OGAttachmentResponseFromJson(json); } + +/// Payload for Agora call. +@JsonSerializable() +class AgoraPayload { + /// Create a new instance. + const AgoraPayload({required this.channel}); + + /// Create a new instance from a [json]. + factory AgoraPayload.fromJson(Map json) => + _$AgoraPayloadFromJson(json); + + /// The Agora channel. + final String channel; + + /// Convert this object to a json. + Map toJson() => _$AgoraPayloadToJson(this); +} + +/// Model containing the information about a call. +@JsonSerializable() +class CallPayload extends Equatable { + /// Create a new instance. + const CallPayload({ + required this.id, + required this.provider, + this.agora, + this.hms, + }); + + /// Create a new instance from a [json]. + factory CallPayload.fromJson(Map json) => + _$CallPayloadFromJson(json); + + /// The call id. + final String id; + + /// The call provider. + final String provider; + + /// The payload specific to Agora. + final AgoraPayload? agora; + + /// The payload specific to 100ms. + final HMSPayload? hms; + + /// Convert this object to a json. + Map toJson() => _$CallPayloadToJson(this); + + @override + List get props => [id, provider, agora, hms]; +} + +/// The response to [CallApi.getCallToken] +@JsonSerializable() +class CallTokenPayload extends Equatable { + /// Create a new instance. + const CallTokenPayload({required this.token, this.agoraUid, this.agoraAppId}); + + /// Create a new instance from a [json]. + factory CallTokenPayload.fromJson(Map json) => + _$CallTokenPayloadFromJson(json); + + /// The token to use for the call. + final String token; + + /// The uid specific to Agora. + final int? agoraUid; + + /// The appId specific to 100ms. + final String? agoraAppId; + + /// Convert this object to a json. + Map toJson() => _$CallTokenPayloadToJson(this); + + @override + List get props => [token, agoraAppId, agoraUid]; +} + +/// The response to [CallApi.createCall] +@JsonSerializable() +class CreateCallPayload extends Equatable { + /// Creates a new instance. + const CreateCallPayload({required this.call}); + + /// Create a new instance from a [json]. + factory CreateCallPayload.fromJson(Map json) => + _$CreateCallPayloadFromJson(json); + + /// The call object. + final CallPayload call; + + /// Convert this object to a json. + Map toJson() => _$CreateCallPayloadToJson(this); + + @override + List get props => [call]; +} + +/// Payload for 100ms call. +@JsonSerializable() +class HMSPayload extends Equatable { + /// Create a new instance. + const HMSPayload({required this.roomId, required this.roomName}); + + /// Create a new instance from a [json]. + factory HMSPayload.fromJson(Map json) => + _$HMSPayloadFromJson(json); + + /// The id of the 100ms room. + final String roomId; + + /// The name of the 100ms room. + final String roomName; + + /// Convert this object to a json. + Map toJson() => _$HMSPayloadToJson(this); + + @override + List get props => [roomId, roomName]; +} diff --git a/packages/stream_chat/lib/src/core/api/responses.g.dart b/packages/stream_chat/lib/src/core/api/responses.g.dart index 991b39f6..c82769c1 100644 --- a/packages/stream_chat/lib/src/core/api/responses.g.dart +++ b/packages/stream_chat/lib/src/core/api/responses.g.dart @@ -297,3 +297,66 @@ OGAttachmentResponse _$OGAttachmentResponseFromJson( ..title = json['title'] as String? ..titleLink = json['title_link'] as String? ..type = json['type'] as String?; + +AgoraPayload _$AgoraPayloadFromJson(Map json) => AgoraPayload( + channel: json['channel'] as String, + ); + +Map _$AgoraPayloadToJson(AgoraPayload instance) => + { + 'channel': instance.channel, + }; + +CallPayload _$CallPayloadFromJson(Map json) => CallPayload( + id: json['id'] as String, + provider: json['provider'] as String, + agora: json['agora'] == null + ? null + : AgoraPayload.fromJson(json['agora'] as Map), + hms: json['hms'] == null + ? null + : HMSPayload.fromJson(json['hms'] as Map), + ); + +Map _$CallPayloadToJson(CallPayload instance) => + { + 'id': instance.id, + 'provider': instance.provider, + 'agora': instance.agora?.toJson(), + 'hms': instance.hms?.toJson(), + }; + +CallTokenPayload _$CallTokenPayloadFromJson(Map json) => + CallTokenPayload( + token: json['token'] as String, + agoraUid: json['agora_uid'] as int?, + agoraAppId: json['agora_app_id'] as String?, + ); + +Map _$CallTokenPayloadToJson(CallTokenPayload instance) => + { + 'token': instance.token, + 'agora_uid': instance.agoraUid, + 'agora_app_id': instance.agoraAppId, + }; + +CreateCallPayload _$CreateCallPayloadFromJson(Map json) => + CreateCallPayload( + call: CallPayload.fromJson(json['call'] as Map), + ); + +Map _$CreateCallPayloadToJson(CreateCallPayload instance) => + { + 'call': instance.call.toJson(), + }; + +HMSPayload _$HMSPayloadFromJson(Map json) => HMSPayload( + roomId: json['room_id'] as String, + roomName: json['room_name'] as String, + ); + +Map _$HMSPayloadToJson(HMSPayload instance) => + { + 'room_id': instance.roomId, + 'room_name': instance.roomName, + }; diff --git a/packages/stream_chat/lib/src/core/models/agora_payload.dart b/packages/stream_chat/lib/src/core/models/agora_payload.dart deleted file mode 100644 index c70ffe0b..00000000 --- a/packages/stream_chat/lib/src/core/models/agora_payload.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'package:equatable/equatable.dart'; -import 'package:json_annotation/json_annotation.dart'; - -part 'agora_payload.g.dart'; - -@JsonSerializable() -class AgoraPayload { - final String channel; - const AgoraPayload({required this.channel}); - - factory AgoraPayload.fromJson(Map json) => - _$AgoraPayloadFromJson(json); - - Map toJson() => _$AgoraPayloadToJson(this); -} diff --git a/packages/stream_chat/lib/src/core/models/agora_payload.g.dart b/packages/stream_chat/lib/src/core/models/agora_payload.g.dart deleted file mode 100644 index ff4df843..00000000 --- a/packages/stream_chat/lib/src/core/models/agora_payload.g.dart +++ /dev/null @@ -1,16 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'agora_payload.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -AgoraPayload _$AgoraPayloadFromJson(Map json) => AgoraPayload( - channel: json['channel'] as String, - ); - -Map _$AgoraPayloadToJson(AgoraPayload instance) => - { - 'channel': instance.channel, - }; diff --git a/packages/stream_chat/lib/src/core/models/call_payload.dart b/packages/stream_chat/lib/src/core/models/call_payload.dart deleted file mode 100644 index 1da6e415..00000000 --- a/packages/stream_chat/lib/src/core/models/call_payload.dart +++ /dev/null @@ -1,25 +0,0 @@ -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() -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 json) => - _$CallPayloadFromJson(json); - - Map toJson() => _$CallPayloadToJson(this); - - @override - List get props => [id, provider, agora, hms]; -} diff --git a/packages/stream_chat/lib/src/core/models/call_payload.g.dart b/packages/stream_chat/lib/src/core/models/call_payload.g.dart deleted file mode 100644 index 239a68bf..00000000 --- a/packages/stream_chat/lib/src/core/models/call_payload.g.dart +++ /dev/null @@ -1,26 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'call_payload.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -CallPayload _$CallPayloadFromJson(Map json) => CallPayload( - id: json['id'] as String, - provider: json['provider'] as String, - agora: json['agora'] == null - ? null - : AgoraPayload.fromJson(json['agora'] as Map), - hms: json['hms'] == null - ? null - : HMSPayload.fromJson(json['hms'] as Map), - ); - -Map _$CallPayloadToJson(CallPayload instance) => - { - 'id': instance.id, - 'provider': instance.provider, - 'agora': instance.agora?.toJson(), - 'hms': instance.hms?.toJson(), - }; diff --git a/packages/stream_chat/lib/src/core/models/call_token_payload.dart b/packages/stream_chat/lib/src/core/models/call_token_payload.dart deleted file mode 100644 index f944fd75..00000000 --- a/packages/stream_chat/lib/src/core/models/call_token_payload.dart +++ /dev/null @@ -1,23 +0,0 @@ -import 'package:equatable/equatable.dart'; -import 'package:json_annotation/json_annotation.dart'; - - - -part 'call_token_payload.g.dart'; - -@JsonSerializable() -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 json) => - _$CallTokenPayloadFromJson(json); - - - Map toJson() => _$CallTokenPayloadToJson(this); - - @override - List get props => [token, agoraAppId, agoraUid]; -} diff --git a/packages/stream_chat/lib/src/core/models/call_token_payload.g.dart b/packages/stream_chat/lib/src/core/models/call_token_payload.g.dart deleted file mode 100644 index 09ab714e..00000000 --- a/packages/stream_chat/lib/src/core/models/call_token_payload.g.dart +++ /dev/null @@ -1,21 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'call_token_payload.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -CallTokenPayload _$CallTokenPayloadFromJson(Map json) => - CallTokenPayload( - token: json['token'] as String, - agoraUid: json['agora_uid'] as int?, - agoraAppId: json['agora_app_id'] as String?, - ); - -Map _$CallTokenPayloadToJson(CallTokenPayload instance) => - { - 'token': instance.token, - 'agora_uid': instance.agoraUid, - 'agora_app_id': instance.agoraAppId, - }; diff --git a/packages/stream_chat/lib/src/core/models/create_call_payload.dart b/packages/stream_chat/lib/src/core/models/create_call_payload.dart deleted file mode 100644 index 5c030015..00000000 --- a/packages/stream_chat/lib/src/core/models/create_call_payload.dart +++ /dev/null @@ -1,20 +0,0 @@ -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() -class CreateCallPayload extends Equatable { - final CallPayload call; - const CreateCallPayload({required this.call}); - - factory CreateCallPayload.fromJson(Map json) => - _$CreateCallPayloadFromJson(json); - - Map toJson() => _$CreateCallPayloadToJson(this); - - @override - List get props => [call]; -} diff --git a/packages/stream_chat/lib/src/core/models/create_call_payload.g.dart b/packages/stream_chat/lib/src/core/models/create_call_payload.g.dart deleted file mode 100644 index 3c849797..00000000 --- a/packages/stream_chat/lib/src/core/models/create_call_payload.g.dart +++ /dev/null @@ -1,17 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'create_call_payload.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -CreateCallPayload _$CreateCallPayloadFromJson(Map json) => - CreateCallPayload( - call: CallPayload.fromJson(json['call'] as Map), - ); - -Map _$CreateCallPayloadToJson(CreateCallPayload instance) => - { - 'call': instance.call.toJson(), - }; diff --git a/packages/stream_chat/lib/src/core/models/hms_payload.dart b/packages/stream_chat/lib/src/core/models/hms_payload.dart deleted file mode 100644 index 1e77b475..00000000 --- a/packages/stream_chat/lib/src/core/models/hms_payload.dart +++ /dev/null @@ -1,19 +0,0 @@ -import 'package:equatable/equatable.dart'; -import 'package:json_annotation/json_annotation.dart'; - -part 'hms_payload.g.dart'; - -@JsonSerializable() -class HMSPayload extends Equatable { - final String roomId; - final String roomName; - const HMSPayload({required this.roomId, required this.roomName}); - - factory HMSPayload.fromJson(Map json) => - _$HMSPayloadFromJson(json); - - Map toJson() => _$HMSPayloadToJson(this); - - @override - List get props => [roomId, roomName]; -} diff --git a/packages/stream_chat/lib/src/core/models/hms_payload.g.dart b/packages/stream_chat/lib/src/core/models/hms_payload.g.dart deleted file mode 100644 index 3c55f56f..00000000 --- a/packages/stream_chat/lib/src/core/models/hms_payload.g.dart +++ /dev/null @@ -1,18 +0,0 @@ -// GENERATED CODE - DO NOT MODIFY BY HAND - -part of 'hms_payload.dart'; - -// ************************************************************************** -// JsonSerializableGenerator -// ************************************************************************** - -HMSPayload _$HMSPayloadFromJson(Map json) => HMSPayload( - roomId: json['room_id'] as String, - roomName: json['room_name'] as String, - ); - -Map _$HMSPayloadToJson(HMSPayload instance) => - { - 'room_id': instance.roomId, - 'room_name': instance.roomName, - }; diff --git a/packages/stream_chat/lib/stream_chat.dart b/packages/stream_chat/lib/stream_chat.dart index 62137352..7f4c22ef 100644 --- a/packages/stream_chat/lib/stream_chat.dart +++ b/packages/stream_chat/lib/stream_chat.dart @@ -15,21 +15,15 @@ export './src/core/api/responses.dart'; export './src/core/api/stream_chat_api.dart' show PushProvider; export './src/core/error/error.dart'; export './src/core/models/action.dart'; -export './src/core/models/agora_payload.dart'; export './src/core/models/attachment.dart'; export './src/core/models/attachment_file.dart'; -export './src/core/models/call_payload.dart'; -export './src/core/models/call_token_payload.dart'; export './src/core/models/channel_config.dart'; export './src/core/models/channel_model.dart'; export './src/core/models/channel_state.dart'; export './src/core/models/command.dart'; -export './src/core/models/create_call_payload.dart'; export './src/core/models/device.dart'; export './src/core/models/event.dart'; export './src/core/models/filter.dart' show Filter; -export './src/core/models/hms_payload.dart'; -export './src/core/models/hms_payload.dart'; export './src/core/models/member.dart'; export './src/core/models/message.dart'; export './src/core/models/mute.dart';