38 lines
1.0 KiB
Dart
38 lines
1.0 KiB
Dart
import 'package:dartz/dartz.dart';
|
|
|
|
import '../../core/core.dart';
|
|
import '../../domain/domain.dart';
|
|
import '../data_sources/data_sources.dart';
|
|
import '../models/order/order_response_model.dart';
|
|
|
|
class OrderRepositoryImpl extends OrderRepository {
|
|
final OrderRemoteDataSource remoteDataSource;
|
|
final UserLocalDataSource localDataSource;
|
|
final NetworkInfo networkInfo;
|
|
|
|
OrderRepositoryImpl({
|
|
required this.remoteDataSource,
|
|
required this.localDataSource,
|
|
required this.networkInfo,
|
|
});
|
|
|
|
@override
|
|
Future<Either<Failure, OrderResponseModel>> getOrders(FilterProductParams params) async {
|
|
if (!await networkInfo.isConnected) {
|
|
return Left(NetworkFailure());
|
|
}
|
|
|
|
if (!await localDataSource.isTokenAvailable()) {
|
|
return Left(AuthenticationFailure());
|
|
}
|
|
|
|
try {
|
|
final String token = await localDataSource.getToken();
|
|
final response = await remoteDataSource.getOrders(params, token);
|
|
return Right(response);
|
|
} on Failure catch (failure) {
|
|
return Left(failure);
|
|
}
|
|
}
|
|
}
|