mirror of
https://github.com/aljazceru/Auto-GPT.git
synced 2025-12-29 11:54:29 +01:00
Add local persistence for deleted tasks
- Extended TaskService to manage a list of deleted tasks using shared_preferences. - Modified TaskViewModel to filter out tasks that have been marked as deleted locally. - Loaded the list of deleted tasks during app initialization in main.dart.
This commit is contained in:
@@ -42,6 +42,7 @@ class MyApp extends StatelessWidget {
|
||||
// Fetch services from providers
|
||||
final chatService = Provider.of<ChatService>(context, listen: false);
|
||||
final taskService = Provider.of<TaskService>(context, listen: false);
|
||||
taskService.loadDeletedTasks();
|
||||
|
||||
return MaterialApp(
|
||||
title: 'AutoGPT Flutter Client',
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
import 'package:auto_gpt_flutter_client/models/task_request_body.dart';
|
||||
import 'package:auto_gpt_flutter_client/models/task_response.dart';
|
||||
import 'package:auto_gpt_flutter_client/utils/rest_api_utility.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
/// Service class for performing task-related operations.
|
||||
class TaskService {
|
||||
final RestApiUtility api;
|
||||
List<String> _deletedTaskIds = [];
|
||||
|
||||
TaskService(this.api);
|
||||
|
||||
@@ -59,4 +61,21 @@ class TaskService {
|
||||
throw Exception('Failed to list task artifacts: $e');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> loadDeletedTasks() async {
|
||||
_deletedTaskIds =
|
||||
(await SharedPreferences.getInstance()).getStringList('deletedTasks') ??
|
||||
[];
|
||||
print("Deleted tasks fetched successfully!");
|
||||
}
|
||||
|
||||
void saveDeletedTask(String taskId) {
|
||||
_deletedTaskIds.add(taskId);
|
||||
SharedPreferences.getInstance()
|
||||
.then((prefs) => prefs.setStringList('deletedTasks', _deletedTaskIds));
|
||||
}
|
||||
|
||||
bool isTaskDeleted(String taskId) {
|
||||
return _deletedTaskIds.contains(taskId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,19 +35,21 @@ class TaskViewModel with ChangeNotifier {
|
||||
}
|
||||
|
||||
/// Deletes a task.
|
||||
void deleteTask(String id) async {
|
||||
// TODO: Protocol doesn't support deleting tasks, we need to manually manage this list
|
||||
|
||||
// Update local tasks list and notify listeners
|
||||
_tasks.removeWhere((task) => task.id == id);
|
||||
void deleteTask(String taskId) {
|
||||
_taskService.saveDeletedTask(taskId);
|
||||
tasks.removeWhere((task) => task.id == taskId);
|
||||
notifyListeners();
|
||||
print("Tasks deleted successfully!");
|
||||
}
|
||||
|
||||
/// Fetches tasks from the data source.
|
||||
void fetchTasks() async {
|
||||
try {
|
||||
final TaskResponse tasksResponse = await _taskService.listAllTasks();
|
||||
_tasks = tasksResponse.tasks;
|
||||
final tasksFromApi = tasksResponse.tasks;
|
||||
_tasks = tasksFromApi
|
||||
.where((task) => !_taskService.isTaskDeleted(task.id))
|
||||
.toList();
|
||||
|
||||
notifyListeners();
|
||||
print("Tasks fetched successfully!");
|
||||
|
||||
Reference in New Issue
Block a user