diff --git a/lib/src/blocs/home_bloc.dart b/lib/src/blocs/home_bloc.dart index 09486e9..14f91e5 100644 --- a/lib/src/blocs/home_bloc.dart +++ b/lib/src/blocs/home_bloc.dart @@ -22,7 +22,8 @@ class HomeBloc { StreamTransformer, List> 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); }); } diff --git a/lib/src/models/task_model.dart b/lib/src/models/task_model.dart index 371ffc3..58655a6 100644 --- a/lib/src/models/task_model.dart +++ b/lib/src/models/task_model.dart @@ -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 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 toFirestoreMap() { return { "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, +} diff --git a/lib/src/utils.dart b/lib/src/utils.dart index 21e5ca3..398b23a 100644 --- a/lib/src/utils.dart +++ b/lib/src/utils.dart @@ -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: