diff --git a/melos.yaml b/melos.yaml index 3291c18e..fbbfcb78 100644 --- a/melos.yaml +++ b/melos.yaml @@ -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 pub run build_runner build --delete-conflicting-outputs --enable-experiment=super-parameters,enhanced-enums" + run: melos exec -c 1 --depends-on="build_runner" --no-flutter -- "dart 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 --enable-experiment=super-parameters,enhanced-enums" + run: melos exec -c 1 --depends-on="build_runner" --flutter -- "flutter 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: diff --git a/packages/stream_chat/lib/src/client/client.dart b/packages/stream_chat/lib/src/client/client.dart index 4b0482a3..ea221701 100644 --- a/packages/stream_chat/lib/src/client/client.dart +++ b/packages/stream_chat/lib/src/client/client.dart @@ -590,12 +590,20 @@ class StreamChatClient { Future getCallToken(String callId) async => _chatApi.call.getCallToken(callId); - Future createCall( - String callId, - String callType, + Future createCall({ + required String callId, + required String callType, + required String channelType, + required String channelId, Map? options, - ) async { - return _chatApi.call.createCall(callId, callType, options); + }) async { + return _chatApi.call.createCall( + callId: callId, + callType: callType, + options: options, + channelType: channelType, + channelId: channelId, + ); } /// Requests channels with a given query from the API. 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 e2f767f5..6c542848 100644 --- a/packages/stream_chat/lib/src/core/api/call_api.dart +++ b/packages/stream_chat/lib/src/core/api/call_api.dart @@ -11,18 +11,28 @@ class CallApi { Future getCallToken(String callId) async { final response = await _client.post( '/calls/$callId', + data: {}, ); - return CallTokenPayload.fromJson(response.data); + // return response.data; + return CallTokenPayload.fromJson(response.data); } - Future createCall( - String callId, - String callType, + Future createCall({ + required String callId, + required String callType, + required String channelType, + required String channelId, Map? options, - ) async { - final response = await _client.post( - '/channels/$callType/$callId/call', - ); - return CreateCallPayload.fromJson(response.data); + }) async { + final response = + await _client.post(_getChannelUrl(channelId, channelType), data: { + 'id': '$callId', + 'type': '$callType', + }); + // return response.data; + return CreateCallPayload.fromJson(response.data); } + + String _getChannelUrl(String channelId, String channelType) => + '/channels/$channelType/$channelId/call'; } diff --git a/packages/stream_chat/lib/src/core/models/agora_payload.dart b/packages/stream_chat/lib/src/core/models/agora_payload.dart index 35bc93b7..c70ffe0b 100644 --- a/packages/stream_chat/lib/src/core/models/agora_payload.dart +++ b/packages/stream_chat/lib/src/core/models/agora_payload.dart @@ -3,11 +3,13 @@ import 'package:json_annotation/json_annotation.dart'; part 'agora_payload.g.dart'; -@JsonSerializable(includeIfNull: false) +@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/call_payload.dart b/packages/stream_chat/lib/src/core/models/call_payload.dart index 7754e5be..1da6e415 100644 --- a/packages/stream_chat/lib/src/core/models/call_payload.dart +++ b/packages/stream_chat/lib/src/core/models/call_payload.dart @@ -5,18 +5,21 @@ import 'package:json_annotation/json_annotation.dart'; part 'call_payload.g.dart'; -@JsonSerializable(includeIfNull: false) +@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}); + 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 index f23cfb45..239a68bf 100644 --- a/packages/stream_chat/lib/src/core/models/call_payload.g.dart +++ b/packages/stream_chat/lib/src/core/models/call_payload.g.dart @@ -17,19 +17,10 @@ CallPayload _$CallPayloadFromJson(Map json) => CallPayload( : HMSPayload.fromJson(json['hms'] as Map), ); -Map _$CallPayloadToJson(CallPayload instance) { - final val = { - '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; -} +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 index 520572d1..f944fd75 100644 --- a/packages/stream_chat/lib/src/core/models/call_token_payload.dart +++ b/packages/stream_chat/lib/src/core/models/call_token_payload.dart @@ -5,7 +5,7 @@ import 'package:json_annotation/json_annotation.dart'; part 'call_token_payload.g.dart'; -@JsonSerializable(includeIfNull: false) +@JsonSerializable() class CallTokenPayload extends Equatable { final String token; final int? agoraUid; @@ -15,6 +15,9 @@ class CallTokenPayload extends Equatable { 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 index df822920..09ab714e 100644 --- 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 @@ -13,18 +13,9 @@ CallTokenPayload _$CallTokenPayloadFromJson(Map json) => agoraAppId: json['agora_app_id'] as String?, ); -Map _$CallTokenPayloadToJson(CallTokenPayload instance) { - final val = { - '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; -} +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 index 47711e2d..5c030015 100644 --- a/packages/stream_chat/lib/src/core/models/create_call_payload.dart +++ b/packages/stream_chat/lib/src/core/models/create_call_payload.dart @@ -3,9 +3,9 @@ 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) + +@JsonSerializable() class CreateCallPayload extends Equatable { final CallPayload call; const CreateCallPayload({required this.call}); @@ -13,6 +13,8 @@ class CreateCallPayload extends Equatable { 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/hms_payload.dart b/packages/stream_chat/lib/src/core/models/hms_payload.dart index 5d5e3e96..1e77b475 100644 --- a/packages/stream_chat/lib/src/core/models/hms_payload.dart +++ b/packages/stream_chat/lib/src/core/models/hms_payload.dart @@ -3,7 +3,7 @@ import 'package:json_annotation/json_annotation.dart'; part 'hms_payload.g.dart'; -@JsonSerializable(includeIfNull: false) +@JsonSerializable() class HMSPayload extends Equatable { final String roomId; final String roomName; @@ -12,6 +12,8 @@ class HMSPayload extends Equatable { factory HMSPayload.fromJson(Map json) => _$HMSPayloadFromJson(json); + Map toJson() => _$HMSPayloadToJson(this); + @override List get props => [roomId, roomName]; } diff --git a/packages/stream_chat/lib/stream_chat.dart b/packages/stream_chat/lib/stream_chat.dart index 7f4c22ef..62137352 100644 --- a/packages/stream_chat/lib/stream_chat.dart +++ b/packages/stream_chat/lib/stream_chat.dart @@ -15,15 +15,21 @@ 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';