diff --git a/packages/stream_chat/lib/src/core/api/responses.dart b/packages/stream_chat/lib/src/core/api/responses.dart index 72142778..ddeb4b0f 100644 --- a/packages/stream_chat/lib/src/core/api/responses.dart +++ b/packages/stream_chat/lib/src/core/api/responses.dart @@ -499,7 +499,7 @@ class OGAttachmentResponse extends _BaseResponse { } /// Payload for Agora call. -@JsonSerializable() +@JsonSerializable(createToJson: false) class AgoraPayload { /// Create a new instance. const AgoraPayload({required this.channel}); @@ -510,13 +510,10 @@ class AgoraPayload { /// The Agora channel. final String channel; - - /// Convert this object to a json. - Map toJson() => _$AgoraPayloadToJson(this); } /// Model containing the information about a call. -@JsonSerializable() +@JsonSerializable(createToJson: false) class CallPayload extends Equatable { /// Create a new instance. const CallPayload({ @@ -542,61 +539,40 @@ class CallPayload extends Equatable { /// 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}); - +@JsonSerializable(createToJson: false) +class CallTokenPayload extends _BaseResponse { /// Create a new instance from a [json]. - factory CallTokenPayload.fromJson(Map json) => + static CallTokenPayload fromJson(Map json) => _$CallTokenPayloadFromJson(json); /// The token to use for the call. - final String token; + String? token; - /// The uid specific to Agora. - final int? agoraUid; + /// The user id specific to Agora. + 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 appId specific to Agora. + String? agoraAppId; } /// The response to [CallApi.createCall] -@JsonSerializable() -class CreateCallPayload extends Equatable { - /// Creates a new instance. - const CreateCallPayload({required this.call}); - +@JsonSerializable(createToJson: false) +class CreateCallPayload extends _BaseResponse { /// Create a new instance from a [json]. - factory CreateCallPayload.fromJson(Map json) => + static 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]; + CallPayload? call; } /// Payload for 100ms call. -@JsonSerializable() +@JsonSerializable(createToJson: false) class HMSPayload extends Equatable { /// Create a new instance. const HMSPayload({required this.roomId, required this.roomName}); @@ -611,9 +587,6 @@ class HMSPayload extends Equatable { /// 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 c82769c1..6cc2158e 100644 --- a/packages/stream_chat/lib/src/core/api/responses.g.dart +++ b/packages/stream_chat/lib/src/core/api/responses.g.dart @@ -302,11 +302,6 @@ 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, @@ -318,45 +313,21 @@ CallPayload _$CallPayloadFromJson(Map json) => CallPayload( : 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, - }; + CallTokenPayload() + ..duration = json['duration'] as String? + ..token = json['token'] as String? + ..agoraUid = json['agora_uid'] as int? + ..agoraAppId = json['agora_app_id'] as String?; CreateCallPayload _$CreateCallPayloadFromJson(Map json) => - CreateCallPayload( - call: CallPayload.fromJson(json['call'] as Map), - ); - -Map _$CreateCallPayloadToJson(CreateCallPayload instance) => - { - 'call': instance.call.toJson(), - }; + CreateCallPayload() + ..duration = json['duration'] as String? + ..call = json['call'] == null + ? null + : CallPayload.fromJson(json['call'] as Map); 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/test/src/core/api/responses_test.dart b/packages/stream_chat/test/src/core/api/responses_test.dart index 8a73fccd..75a374fb 100644 --- a/packages/stream_chat/test/src/core/api/responses_test.dart +++ b/packages/stream_chat/test/src/core/api/responses_test.dart @@ -4340,5 +4340,63 @@ void main() { expect(response.members, isA>()); expect(response.message, isA()); }); + + test('AgoraPayload', () { + const jsonExample = ''' + {"channel":"test"} + '''; + final response = AgoraPayload.fromJson(json.decode(jsonExample)); + expect(response.channel, isA()); + }); + + test('CallPayload', () { + const jsonExample = ''' + {"id":"test", + "provider": "test", + "agora": {"channel":"test"}, + "hms":{"room_id":"test", "room_name":"test"} + } + '''; + final response = CallPayload.fromJson(json.decode(jsonExample)); + expect(response.agora, isA()); + expect(response.hms, isA()); + expect(response.id, isA()); + expect(response.provider, isA()); + }); + }); + + test('CallTokenPayload', () { + const jsonExample = ''' + {"duration": "3ms", + "agora_app_id":"test", + "agora_uid": 12, + "token": "token"} + '''; + final response = CallTokenPayload.fromJson(json.decode(jsonExample)); + expect(response.agoraAppId, isA()); + expect(response.agoraUid, isA()); + expect(response.token, isA()); + }); + + test('CreateCallPayload', () { + const jsonExample = ''' + {"call": + {"id":"test", + "provider": "test", + "agora": {"channel":"test"}, + "hms":{"room_id":"test", "room_name":"test"} + }} + '''; + final response = CreateCallPayload.fromJson(json.decode(jsonExample)); + expect(response.call, isA()); + }); + + test('HMSPayload', () { + const jsonExample = ''' + {"room_id":"test", "room_name":"test"} + '''; + final response = HMSPayload.fromJson(json.decode(jsonExample)); + expect(response.roomId, isA()); + expect(response.roomName, isA()); }); }