getTasks method

  1. @override
Future<Either<Failure, List<TaskEntity>>> getTasks(
  1. String? projectId
)
override

Implementation

@override
Future<Either<Failure, List<TaskEntity>>> getTasks(String? projectId) async {
  try {
    final localTasks = await localDataSource.getTasks(projectId: projectId);
    if (localTasks.isNotEmpty) {
      return Right(localTasks.map((t) => t.toEntity()).toList());
    }

    final remoteTasks =
        await remoteDataSource.getTasks(projectId: projectId!);
    await localDataSource.saveTasks(remoteTasks);
    return Right(remoteTasks.map((t) => t.toEntity()).toList());
  } on ServerFailure catch (e) {
    return Left(e);
  } catch (e) {
    return Left(ServerFailure(message: 'Unexpected Error ${e.toString()}'));
  }
}