pre merge commit

This commit is contained in:
Username1548
2025-03-10 22:25:30 +07:00
parent afac964e2e
commit f590c49def
18 changed files with 604 additions and 32 deletions

View File

@@ -1,20 +1,18 @@
import 'package:dio/dio.dart';
import 'package:eatvio_app/features/feed/models/plan_pagination_model.dart';
import 'package:eatvio_app/features/plans/models/chosen_plan_model.dart';
import 'package:retrofit/retrofit.dart';
part 'plan_service.g.dart';
@RestApi()
abstract class PlanService {
factory PlanService(Dio dio, {String baseUrl}) = _PlanService;
@GET('/api/plans/show/{slug}')
Future<PlanModel> getPlan(@Path('slug') String slug);
@POST('/api/plans/{slug}/like')
@POST('/api/plans/{slug}/like')
Future<void> likePlan({
@Path() required String slug,
});
@@ -28,4 +26,10 @@ abstract class PlanService {
Future<void> removeFromFavorite({
@Path() required String slug,
});
}
@POST('/api/plans/{slug}/choose')
Future<ChosenPlanModel> chosePlan({
@Path() required String slug,
@Body() required Map<String, dynamic> option,
});
}

View File

@@ -101,6 +101,37 @@ class _PlanService implements PlanService {
await _dio.fetch<void>(_options);
}
@override
Future<ChosenPlanModel> chosePlan({
required String slug,
required Map<String, dynamic> option,
}) async {
final _extra = <String, dynamic>{};
final queryParameters = <String, dynamic>{};
final _headers = <String, dynamic>{};
final _data = <String, dynamic>{};
_data.addAll(option);
final _options = _setStreamType<ChosenPlanModel>(
Options(method: 'POST', headers: _headers, extra: _extra)
.compose(
_dio.options,
'/api/plans/${slug}/choose',
queryParameters: queryParameters,
data: _data,
)
.copyWith(baseUrl: _combineBaseUrls(_dio.options.baseUrl, baseUrl)),
);
final _result = await _dio.fetch<Map<String, dynamic>>(_options);
late ChosenPlanModel _value;
try {
_value = ChosenPlanModel.fromJson(_result.data!);
} on Object catch (e, s) {
errorLogger?.logError(e, s, _options);
rethrow;
}
return _value;
}
RequestOptions _setStreamType<T>(RequestOptions requestOptions) {
if (T != dynamic &&
!(requestOptions.responseType == ResponseType.bytes ||