diff --git a/lib/src/blocs/event_bloc.dart b/lib/src/blocs/event_bloc.dart new file mode 100644 index 0000000..dedc3eb --- /dev/null +++ b/lib/src/blocs/event_bloc.dart @@ -0,0 +1,6 @@ +import 'dart:async'; + +import '../resources/firestore_provider.dart'; +import '../resources/firebase_storage_provider.dart'; + +class EventBloc {} diff --git a/lib/src/blocs/home_bloc.dart b/lib/src/blocs/home_bloc.dart index 04a3570..c6e2f76 100644 --- a/lib/src/blocs/home_bloc.dart +++ b/lib/src/blocs/home_bloc.dart @@ -5,7 +5,7 @@ import 'package:rxdart/rxdart.dart'; import '../models/task_model.dart'; import '../resources/firestore_provider.dart'; import '../services/auth_service.dart'; -import '../services/current_task_service.dart'; +import '../services/current_selection_service.dart'; export '../services/auth_service.dart' show FirebaseUser; @@ -20,7 +20,7 @@ class HomeBloc { final FirestoreProvider _repository = firestoreProvider; /// An instance of the current task service. - final CurrentTaskService _taskService = currentTaskService; + final CurrentSelectionService _selectionService = currentSelectionService; /// A subject of list of task model. final _tasks = BehaviorSubject>(); @@ -60,6 +60,7 @@ class HomeBloc { }); } + // TODO: Include the priority in the filtering. /// Returns a stream transformer that filters the task with the text from /// the search box. StreamTransformer, List> searchBoxTransformer() { @@ -114,7 +115,7 @@ class HomeBloc { /// Sets the global current task. void updateCurrentTask(TaskModel task) { - _taskService.setTask(task); + _selectionService.updateSelectedTask(task); } /// Updates the serach box text. diff --git a/lib/src/blocs/task_bloc.dart b/lib/src/blocs/task_bloc.dart index d982511..ef022c4 100644 --- a/lib/src/blocs/task_bloc.dart +++ b/lib/src/blocs/task_bloc.dart @@ -7,7 +7,7 @@ import '../models/task_model.dart'; import '../models/user_model.dart'; import '../resources/firestore_provider.dart'; import '../services/auth_service.dart'; -import '../services/current_task_service.dart'; +import '../services/current_selection_service.dart'; /// Business logic component that manages the state for the task screen. class TaskBloc extends Object with Validators { @@ -18,7 +18,7 @@ class TaskBloc extends Object with Validators { final FirestoreProvider _firestore = firestoreProvider; /// An instance of the current task service. - final CurrentTaskService _taskService = currentTaskService; + final CurrentSelectionService _selectionService = currentSelectionService; /// A subject of user model. final _user = BehaviorSubject(); @@ -33,7 +33,7 @@ class TaskBloc extends Object with Validators { TaskPriority priority = TaskPriority.high; /// The text of the current global task. - String get textInitialValue => _taskService.task.text; + String get textInitialValue => _selectionService.task.text; //Stream getters. /// An observable of the current user model. @@ -72,7 +72,7 @@ class TaskBloc extends Object with Validators { Future submit(isEdit) { if (isEdit) { return _firestore.updateTask( - _taskService.task.id, + _selectionService.task.id, text: _taskText.value, priority: TaskModel.ecodedPriority(priority), ); @@ -97,7 +97,7 @@ class TaskBloc extends Object with Validators { /// Grabs the data from the current global task and pipes it to the local /// streams. void populateWithCurrentTask() { - TaskModel currentTask = _taskService.task; + TaskModel currentTask = _selectionService.task; if (currentTask != null) { changeEventName(currentTask.event); changeTaskText(currentTask.text); diff --git a/lib/src/screens/event_screen.dart b/lib/src/screens/event_screen.dart new file mode 100644 index 0000000..1c346a8 --- /dev/null +++ b/lib/src/screens/event_screen.dart @@ -0,0 +1,5 @@ +import 'package:flutter/material.dart'; + +class EventScreen extends StatelessWidget { + Widget build(BuildContext context) {} +} diff --git a/lib/src/services/current_selection_service.dart b/lib/src/services/current_selection_service.dart new file mode 100644 index 0000000..7909cba --- /dev/null +++ b/lib/src/services/current_selection_service.dart @@ -0,0 +1,32 @@ +import '../models/event_model.dart'; +import '../models/task_model.dart'; + +/// A service that keeps track of the current user selection. +/// +/// When editing a task or when navigating to an event screen, the new screens +/// can grab the user selection for this service. +class CurrentSelectionService { + /// The current selected task. + TaskModel _selectedTask; + + /// The current selected event. + EventModel _selectedEvent; + + /// The current selected task. + TaskModel get task => _selectedTask; + + /// The current selected event. + EventModel get event => _selectedEvent; + + /// Updates the current selected task. + void updateSelectedTask(TaskModel newTask) { + _selectedTask = newTask; + } + + // Updates the current selected event. + void updateSelectedEvent(EventModel newEvent) { + _selectedEvent = newEvent; + } +} + +final currentSelectionService = CurrentSelectionService(); diff --git a/lib/src/services/current_task_service.dart b/lib/src/services/current_task_service.dart deleted file mode 100644 index 598eda0..0000000 --- a/lib/src/services/current_task_service.dart +++ /dev/null @@ -1,17 +0,0 @@ -import '../models/task_model.dart'; - -/// A service that keeps track of the current selected task. -class CurrentTaskService { - /// The current selected task. - TaskModel _currentTask; - - /// The current selected task. - TaskModel get task => _currentTask; - - /// Sets the current selected task. - void setTask(TaskModel newTask) { - _currentTask = newTask; - } -} - -final currentTaskService = CurrentTaskService();