updateTask method
- TaskDataRequest taskData,
- String id
override
Implementation
@override
Future<Either<Failure, TaskEntity>> updateTask(
TaskDataRequest taskData, String id) async {
try {
if (await isConnected()) {
final response = await remoteDataSource.updateTask(taskData, id);
final tasks = await localDataSource.getTasks();
final taskIndex = tasks.indexWhere((task) => task.id == id);
if (taskIndex != -1) {
tasks[taskIndex] = response;
await localDataSource.saveTasks(tasks);
}
return Right(response.toEntity());
} else {
final tasks = await localDataSource.getTasks();
final taskIndex = tasks.indexWhere((task) => task.id == id);
final tempTask = TaskModelResponse(
id: tasks[taskIndex].id,
projectId: tasks[taskIndex].projectId,
description: tasks[taskIndex].description,
creatorId: tasks[taskIndex].creatorId,
createdAt: tasks[taskIndex].createdAt,
labels: tasks[taskIndex].labels,
url: tasks[taskIndex].url,
commentCount: tasks[taskIndex].commentCount,
isCompleted: tasks[taskIndex].isCompleted,
content: taskData.content ?? '',
order: tasks[taskIndex].order,
priority: taskData.priority ?? 1,
);
tasks[taskIndex] = tempTask;
await localDataSource.saveTasks(tasks);
await syncQueue.addOperation(SyncOperation(
type: 'update',
id: id,
data: taskData.toJson(),
entityType: 'task',
));
return Right(tempTask.toEntity());
}
} catch (e) {
return const Left(ServerFailure(message: 'Failed to update task'));
}
}