createProject method

  1. @override
Future<Either<Failure, Project>> createProject(
  1. String name
)
override

Implementation

@override
Future<Either<Failure, Project>> createProject(String name) async {
  try {
    if (await isConnected()) {
      final response = await remoteDataSource.createProjects(name);
      await localDataSource.saveProject(response);
      return Right(response.toEntity());
    } else {
      final tempProject = ProjectModelResponse(
        id: const Uuid().v4(),
        name: name,
        commentCount: 0,
        order: 0,
        color: '',
        isShared: false,
        isFavorite: false,
        isInboxProject: false,
        isTeamInbox: false,
        viewStyle: '',
        url: '',
      );
      await localDataSource.saveProject(tempProject);
      await syncQueue.addOperation(SyncOperation(
        type: 'create',
        id: tempProject.id,
        data: tempProject.toJson(),
        entityType: 'project',
      ));
      return Right(tempProject.toEntity());
    }
  } catch (e) {
    return Left(ServerFailure(message: e.toString()));
  }
}