Refactor TaskViewModel to use SharedPreferencesService

This commit is contained in:
hunteraraujo
2023-10-10 15:33:52 -07:00
parent 8972132eb0
commit 8245433d7f
2 changed files with 12 additions and 7 deletions

View File

@@ -102,8 +102,12 @@ class MyApp extends StatelessWidget {
create: (context) => ChatViewModel( create: (context) => ChatViewModel(
Provider.of<ChatService>(context, listen: false))), Provider.of<ChatService>(context, listen: false))),
ChangeNotifierProvider( ChangeNotifierProvider(
create: (context) => TaskViewModel( create: (context) => TaskViewModel(
Provider.of<TaskService>(context, listen: false))), Provider.of<TaskService>(context, listen: false),
Provider.of<SharedPreferencesService>(context,
listen: false),
),
),
ChangeNotifierProvider( ChangeNotifierProvider(
create: (context) => SkillTreeViewModel()), create: (context) => SkillTreeViewModel()),
ChangeNotifierProvider( ChangeNotifierProvider(

View File

@@ -1,6 +1,7 @@
import 'dart:convert'; import 'dart:convert';
import 'package:auto_gpt_flutter_client/models/task.dart'; import 'package:auto_gpt_flutter_client/models/task.dart';
import 'package:auto_gpt_flutter_client/models/test_suite.dart'; import 'package:auto_gpt_flutter_client/models/test_suite.dart';
import 'package:auto_gpt_flutter_client/services/shared_preferences_service.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:collection/collection.dart'; import 'package:collection/collection.dart';
import 'package:auto_gpt_flutter_client/services/task_service.dart'; import 'package:auto_gpt_flutter_client/services/task_service.dart';
@@ -10,6 +11,7 @@ import 'package:shared_preferences/shared_preferences.dart';
// TODO: How will all these functions work with test suites? // TODO: How will all these functions work with test suites?
class TaskViewModel with ChangeNotifier { class TaskViewModel with ChangeNotifier {
final TaskService _taskService; final TaskService _taskService;
final SharedPreferencesService _prefsService;
List<Task> _tasks = []; List<Task> _tasks = [];
List<TestSuite> _testSuites = []; List<TestSuite> _testSuites = [];
@@ -19,7 +21,7 @@ class TaskViewModel with ChangeNotifier {
Task? _selectedTask; Task? _selectedTask;
TestSuite? _selectedTestSuite; TestSuite? _selectedTestSuite;
TaskViewModel(this._taskService); TaskViewModel(this._taskService, this._prefsService);
/// Returns the currently selected task. /// Returns the currently selected task.
Task? get selectedTask => _selectedTask; Task? get selectedTask => _selectedTask;
@@ -107,10 +109,9 @@ class TaskViewModel with ChangeNotifier {
// Helper method to save test suites to SharedPreferences // Helper method to save test suites to SharedPreferences
Future<void> _saveTestSuitesToPrefs() async { Future<void> _saveTestSuitesToPrefs() async {
final prefs = await SharedPreferences.getInstance();
final testSuitesToStore = final testSuitesToStore =
_testSuites.map((testSuite) => jsonEncode(testSuite.toJson())).toList(); _testSuites.map((testSuite) => jsonEncode(testSuite.toJson())).toList();
prefs.setStringList('testSuites', testSuitesToStore); await _prefsService.setStringList('testSuites', testSuitesToStore);
} }
// Adds a new test suite and saves it to SharedPreferences // Adds a new test suite and saves it to SharedPreferences
@@ -123,8 +124,8 @@ class TaskViewModel with ChangeNotifier {
// Fetch test suites from SharedPreferences // Fetch test suites from SharedPreferences
Future<void> fetchTestSuites() async { Future<void> fetchTestSuites() async {
final prefs = await SharedPreferences.getInstance(); final storedTestSuites =
final storedTestSuites = prefs.getStringList('testSuites') ?? []; await _prefsService.getStringList('testSuites') ?? [];
_testSuites = storedTestSuites _testSuites = storedTestSuites
.map((testSuiteMap) => TestSuite.fromJson(jsonDecode(testSuiteMap))) .map((testSuiteMap) => TestSuite.fromJson(jsonDecode(testSuiteMap)))
.toList(); .toList();