Migrated the [TaskModel] to use an enum to represent is priority

This commit is contained in:
Mariano Uvalle 2019-03-31 18:57:42 -06:00
parent ebd92b43e9
commit f38146507e
3 changed files with 53 additions and 12 deletions

View file

@ -22,7 +22,8 @@ class HomeBloc {
StreamTransformer<List<TaskModel>, List<TaskModel>>
prioritySortTransformer() {
return StreamTransformer.fromHandlers(handleData: (tasksList, sink) {
tasksList.sort((a, b) => b.priority.compareTo(a.priority));
tasksList
.sort((a, b) => b.ecodedPriority().compareTo(a.ecodedPriority()));
sink.add(tasksList);
});
}

View file

@ -3,7 +3,7 @@ import 'package:meta/meta.dart';
class TaskModel {
final String id;
final String text;
final int priority;
final TaskPriority priority;
final String ownerUsername;
final bool done;
final String event;
@ -20,7 +20,7 @@ class TaskModel {
TaskModel.fromFirestore(Map<String, dynamic> firestoreMap, {String id})
: id = id,
text = firestoreMap["text"],
priority = firestoreMap["priority"],
priority = decodedPriority(firestoreMap["priority"]),
ownerUsername = firestoreMap["ownerUsername"],
done = firestoreMap["done"],
event = firestoreMap["event"];
@ -28,7 +28,7 @@ class TaskModel {
Map<String, dynamic> toFirestoreMap() {
return <String, dynamic>{
"text": text,
"priority": priority,
"priority": ecodedPriority(),
"ownerUsername": ownerUsername,
"done": done,
"event": event,
@ -37,13 +37,13 @@ class TaskModel {
String getPriorityText() {
switch (priority) {
case 0:
case TaskPriority.low:
return 'Low';
break;
case 1:
case TaskPriority.medium:
return 'Medium';
break;
case 2:
case TaskPriority.high:
return 'High';
break;
default:
@ -51,6 +51,38 @@ class TaskModel {
}
}
static TaskPriority decodedPriority(int priority) {
switch (priority) {
case 0:
return TaskPriority.low;
break;
case 1:
return TaskPriority.medium;
break;
case 2:
return TaskPriority.high;
break;
default:
return TaskPriority.none;
}
}
int ecodedPriority() {
switch (priority) {
case TaskPriority.low:
return 0;
break;
case TaskPriority.medium:
return 1;
break;
case TaskPriority.high:
return 2;
break;
default:
return -1;
}
}
static TaskModel sample() {
return TaskModel(
id: '1',
@ -59,7 +91,7 @@ class TaskModel {
done: false,
ownerUsername: 'testUser',
event: 'testEvent',
priority: 1,
priority: TaskPriority.medium,
);
}
@ -84,3 +116,10 @@ class TaskModel {
done == other.done &&
event == other.event;
}
enum TaskPriority {
high,
medium,
low,
none,
}

View file

@ -1,15 +1,16 @@
import 'package:flutter/material.dart';
import './models/task_model.dart';
// TODO: migrate to enum https://github.com/AYM1607/do_more/issues/4
Color getColorFromPriority(int priority) {
Color getColorFromPriority(TaskPriority priority) {
switch (priority) {
case 0:
case TaskPriority.low:
return Color(0xFF06AD12);
break;
case 1:
case TaskPriority.medium:
return Color(0xFFF6A93B);
break;
case 2:
case TaskPriority.high:
return Color(0xFFF42850);
break;
default: