createTask method

  1. @override
Future<Either<Failure, TaskEntity>> createTask(
  1. TaskDataRequest taskData
)
override

Implementation

@override
Future<Either<Failure, TaskEntity>> createTask(
    TaskDataRequest taskData) async {
  try {
    if (await isConnected()) {
      final taskModel = await remoteDataSource.createTask(taskData);
      await localDataSource.saveTask(taskModel);
      return Right(taskModel.toEntity());
    } else {
      final tempTask = TaskModelResponse(
        id: const Uuid().v4(),
        projectId: taskData.projectId ?? '',
        description: '',
        creatorId: '',
        createdAt: '',
        labels: [],
        url: '',
        commentCount: 0,
        isCompleted: false,
        content: taskData.content ?? '',
        order: 1,
        priority: 1,
      );
      await localDataSource.saveTask(tempTask);
      await syncQueue.addOperation(SyncOperation(
        type: 'create',
        id: tempTask.id,
        data: taskData.toJson(),
        entityType: 'task',
      ));
      return Right(tempTask.toEntity());
    }
  } catch (e) {
    return const Left(ServerFailure(message: 'Failed to create task'));
  }
}