diff --git a/packages/espressocash_api/lib/espressocash_api.dart b/packages/espressocash_api/lib/espressocash_api.dart index b0bae32f4..8e6d63555 100644 --- a/packages/espressocash_api/lib/espressocash_api.dart +++ b/packages/espressocash_api/lib/espressocash_api.dart @@ -2,6 +2,7 @@ export 'package:jupiter_aggregator/jupiter_aggregator.dart'; export 'src/client.dart'; export 'src/dto/ambassador_referral.dart'; +export 'src/dto/ambassador_stats.dart'; export 'src/dto/create_payment.dart'; export 'src/dto/dln_payment.dart'; export 'src/dto/durable_transactions.dart'; diff --git a/packages/espressocash_api/lib/src/client.dart b/packages/espressocash_api/lib/src/client.dart index c105146a1..c36705d59 100644 --- a/packages/espressocash_api/lib/src/client.dart +++ b/packages/espressocash_api/lib/src/client.dart @@ -181,6 +181,9 @@ abstract class EspressoCashClient { Future addAmbassadorReferral( @Body() AmbassadorReferralRequestDto request, ); + + @POST('/ambassador/stats') + Future getAmbassadorStats(); } extension EspressoCashClientExt on EspressoCashClient { diff --git a/packages/espressocash_api/lib/src/client.g.dart b/packages/espressocash_api/lib/src/client.g.dart index 8c761f7c8..fc3d3e3f1 100644 --- a/packages/espressocash_api/lib/src/client.g.dart +++ b/packages/espressocash_api/lib/src/client.g.dart @@ -893,6 +893,33 @@ class _EspressoCashClient implements EspressoCashClient { )))); } + @override + Future getAmbassadorStats() async { + const _extra = {}; + final queryParameters = {}; + final _headers = {}; + final Map? _data = null; + final _result = await _dio.fetch>( + _setStreamType(Options( + method: 'POST', + headers: _headers, + extra: _extra, + ) + .compose( + _dio.options, + '/ambassador/stats', + queryParameters: queryParameters, + data: _data, + ) + .copyWith( + baseUrl: _combineBaseUrls( + _dio.options.baseUrl, + baseUrl, + )))); + final value = AmbassadorStatsResponseDto.fromJson(_result.data!); + return value; + } + RequestOptions _setStreamType(RequestOptions requestOptions) { if (T != dynamic && !(requestOptions.responseType == ResponseType.bytes || diff --git a/packages/espressocash_api/lib/src/dto/ambassador_stats.dart b/packages/espressocash_api/lib/src/dto/ambassador_stats.dart new file mode 100644 index 000000000..a4bed823a --- /dev/null +++ b/packages/espressocash_api/lib/src/dto/ambassador_stats.dart @@ -0,0 +1,14 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'ambassador_stats.freezed.dart'; +part 'ambassador_stats.g.dart'; + +@freezed +class AmbassadorStatsResponseDto with _$AmbassadorStatsResponseDto { + const factory AmbassadorStatsResponseDto({ + required int referralCount, + }) = _AmbassadorStatsResponseDto; + + factory AmbassadorStatsResponseDto.fromJson(Map json) => + _$AmbassadorStatsResponseDtoFromJson(json); +} diff --git a/packages/espressocash_api/lib/src/dto/ambassador_stats.freezed.dart b/packages/espressocash_api/lib/src/dto/ambassador_stats.freezed.dart new file mode 100644 index 000000000..a5394c903 --- /dev/null +++ b/packages/espressocash_api/lib/src/dto/ambassador_stats.freezed.dart @@ -0,0 +1,175 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'ambassador_stats.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +AmbassadorStatsResponseDto _$AmbassadorStatsResponseDtoFromJson( + Map json) { + return _AmbassadorStatsResponseDto.fromJson(json); +} + +/// @nodoc +mixin _$AmbassadorStatsResponseDto { + int get referralCount => throw _privateConstructorUsedError; + + /// Serializes this AmbassadorStatsResponseDto to a JSON map. + Map toJson() => throw _privateConstructorUsedError; + + /// Create a copy of AmbassadorStatsResponseDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $AmbassadorStatsResponseDtoCopyWith + get copyWith => throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $AmbassadorStatsResponseDtoCopyWith<$Res> { + factory $AmbassadorStatsResponseDtoCopyWith(AmbassadorStatsResponseDto value, + $Res Function(AmbassadorStatsResponseDto) then) = + _$AmbassadorStatsResponseDtoCopyWithImpl<$Res, + AmbassadorStatsResponseDto>; + @useResult + $Res call({int referralCount}); +} + +/// @nodoc +class _$AmbassadorStatsResponseDtoCopyWithImpl<$Res, + $Val extends AmbassadorStatsResponseDto> + implements $AmbassadorStatsResponseDtoCopyWith<$Res> { + _$AmbassadorStatsResponseDtoCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of AmbassadorStatsResponseDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? referralCount = null, + }) { + return _then(_value.copyWith( + referralCount: null == referralCount + ? _value.referralCount + : referralCount // ignore: cast_nullable_to_non_nullable + as int, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$AmbassadorStatsResponseDtoImplCopyWith<$Res> + implements $AmbassadorStatsResponseDtoCopyWith<$Res> { + factory _$$AmbassadorStatsResponseDtoImplCopyWith( + _$AmbassadorStatsResponseDtoImpl value, + $Res Function(_$AmbassadorStatsResponseDtoImpl) then) = + __$$AmbassadorStatsResponseDtoImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({int referralCount}); +} + +/// @nodoc +class __$$AmbassadorStatsResponseDtoImplCopyWithImpl<$Res> + extends _$AmbassadorStatsResponseDtoCopyWithImpl<$Res, + _$AmbassadorStatsResponseDtoImpl> + implements _$$AmbassadorStatsResponseDtoImplCopyWith<$Res> { + __$$AmbassadorStatsResponseDtoImplCopyWithImpl( + _$AmbassadorStatsResponseDtoImpl _value, + $Res Function(_$AmbassadorStatsResponseDtoImpl) _then) + : super(_value, _then); + + /// Create a copy of AmbassadorStatsResponseDto + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? referralCount = null, + }) { + return _then(_$AmbassadorStatsResponseDtoImpl( + referralCount: null == referralCount + ? _value.referralCount + : referralCount // ignore: cast_nullable_to_non_nullable + as int, + )); + } +} + +/// @nodoc +@JsonSerializable() +class _$AmbassadorStatsResponseDtoImpl implements _AmbassadorStatsResponseDto { + const _$AmbassadorStatsResponseDtoImpl({required this.referralCount}); + + factory _$AmbassadorStatsResponseDtoImpl.fromJson( + Map json) => + _$$AmbassadorStatsResponseDtoImplFromJson(json); + + @override + final int referralCount; + + @override + String toString() { + return 'AmbassadorStatsResponseDto(referralCount: $referralCount)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$AmbassadorStatsResponseDtoImpl && + (identical(other.referralCount, referralCount) || + other.referralCount == referralCount)); + } + + @JsonKey(includeFromJson: false, includeToJson: false) + @override + int get hashCode => Object.hash(runtimeType, referralCount); + + /// Create a copy of AmbassadorStatsResponseDto + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$AmbassadorStatsResponseDtoImplCopyWith<_$AmbassadorStatsResponseDtoImpl> + get copyWith => __$$AmbassadorStatsResponseDtoImplCopyWithImpl< + _$AmbassadorStatsResponseDtoImpl>(this, _$identity); + + @override + Map toJson() { + return _$$AmbassadorStatsResponseDtoImplToJson( + this, + ); + } +} + +abstract class _AmbassadorStatsResponseDto + implements AmbassadorStatsResponseDto { + const factory _AmbassadorStatsResponseDto( + {required final int referralCount}) = _$AmbassadorStatsResponseDtoImpl; + + factory _AmbassadorStatsResponseDto.fromJson(Map json) = + _$AmbassadorStatsResponseDtoImpl.fromJson; + + @override + int get referralCount; + + /// Create a copy of AmbassadorStatsResponseDto + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$AmbassadorStatsResponseDtoImplCopyWith<_$AmbassadorStatsResponseDtoImpl> + get copyWith => throw _privateConstructorUsedError; +} diff --git a/packages/espressocash_api/lib/src/dto/ambassador_stats.g.dart b/packages/espressocash_api/lib/src/dto/ambassador_stats.g.dart new file mode 100644 index 000000000..b3d399227 --- /dev/null +++ b/packages/espressocash_api/lib/src/dto/ambassador_stats.g.dart @@ -0,0 +1,19 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'ambassador_stats.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +_$AmbassadorStatsResponseDtoImpl _$$AmbassadorStatsResponseDtoImplFromJson( + Map json) => + _$AmbassadorStatsResponseDtoImpl( + referralCount: (json['referralCount'] as num).toInt(), + ); + +Map _$$AmbassadorStatsResponseDtoImplToJson( + _$AmbassadorStatsResponseDtoImpl instance) => + { + 'referralCount': instance.referralCount, + };