Refactored the task service to support the selection of an event, renamed to [CurrentSelectionService]. Created the event screen

This commit is contained in:
Mariano Uvalle 2019-04-06 18:11:42 -06:00
parent 7511e3c519
commit 7abee74b73
6 changed files with 52 additions and 25 deletions

View file

@ -0,0 +1,6 @@
import 'dart:async';
import '../resources/firestore_provider.dart';
import '../resources/firebase_storage_provider.dart';
class EventBloc {}

View file

@ -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<List<TaskModel>>();
@ -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<TaskModel>, List<TaskModel>> 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.

View file

@ -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<UserModel>();
@ -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<void> 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);

View file

@ -0,0 +1,5 @@
import 'package:flutter/material.dart';
class EventScreen extends StatelessWidget {
Widget build(BuildContext context) {}
}

View file

@ -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();

View file

@ -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();