TBR: TODOs: Show better times
"Last Updated" and "Created".
Also update the TodoList whenever a child Task is updated.
Note: Conflicts may potentially undo TodoList renames unless we "split"
the TodoList apart into separate name and lastUpdated fields.
Note that Time Ago will be stale.
https://github.com/vanadium/issues/issues/1296
Change-Id: Ie3c84206570b3535cfb5e618b975661e40089018
diff --git a/projects/todos/app/src/firebase/java/io/v/todos/persistence/firebase/FirebaseTodoList.java b/projects/todos/app/src/firebase/java/io/v/todos/persistence/firebase/FirebaseTodoList.java
index 936b064..ba3b3ca 100644
--- a/projects/todos/app/src/firebase/java/io/v/todos/persistence/firebase/FirebaseTodoList.java
+++ b/projects/todos/app/src/firebase/java/io/v/todos/persistence/firebase/FirebaseTodoList.java
@@ -24,6 +24,8 @@
private final ValueEventListener mTodoListListener;
private final ChildEventListener mTasksListener;
+ private TodoList mList;
+
public FirebaseTodoList(Context context, String todoListKey, final TodoListListener listener) {
super(context);
@@ -37,6 +39,7 @@
if (todoList == null) {
listener.onDelete();
} else {
+ mList = todoList;
listener.onUpdate(todoList);
}
}
@@ -64,16 +67,19 @@
@Override
public void addTask(Task task) {
mTasks.push().setValue(task);
+ mTodoList.setValue(new TodoList(mList.getName()));
}
@Override
public void updateTask(Task task) {
mTasks.child(task.getKey()).setValue(task);
+ mTodoList.setValue(new TodoList(mList.getName()));
}
@Override
public void deleteTask(String key) {
mTasks.child(key).removeValue();
+ mTodoList.setValue(new TodoList(mList.getName()));
}
@Override
diff --git a/projects/todos/app/src/main/java/io/v/todos/TaskViewHolder.java b/projects/todos/app/src/main/java/io/v/todos/TaskViewHolder.java
index b4f4ace..05d56fc 100644
--- a/projects/todos/app/src/main/java/io/v/todos/TaskViewHolder.java
+++ b/projects/todos/app/src/main/java/io/v/todos/TaskViewHolder.java
@@ -37,7 +37,7 @@
}
private String computeCreated(Task task) {
- return "" + task.getAddedAt();
+ return UIUtil.computeTimeAgo("Created", task.getAddedAt());
}
public void setShowDone(boolean showDone) {
diff --git a/projects/todos/app/src/main/java/io/v/todos/TodoListActivity.java b/projects/todos/app/src/main/java/io/v/todos/TodoListActivity.java
index 1791c87..0cc91f7 100644
--- a/projects/todos/app/src/main/java/io/v/todos/TodoListActivity.java
+++ b/projects/todos/app/src/main/java/io/v/todos/TodoListActivity.java
@@ -127,25 +127,21 @@
}
public void addTodoItem(String todo) {
- // TODO(alexfandrianto): Turns out these are all batch changes that change the parents updatedAt
mPersistence.addTask(new Task(todo));
}
public void updateTodoItem(String fbKey, String todo) {
- // TODO(alexfandrianto): Turns out these are all batch changes that change the parents updatedAt
Task task = snackoosList.findByKey(fbKey).copy();
task.setText(todo);
mPersistence.updateTask(task);
}
public void markAsDone(String fbKey) {
- // TODO(alexfandrianto): Turns out these are all batch changes that change the parents updatedAt
Task task = snackoosList.findByKey(fbKey).copy();
task.setDone(!task.getDone());
mPersistence.updateTask(task);
}
public void deleteTodoItem(String fbKey) {
- // TODO(alexfandrianto): Turns out these are all batch changes that change the parents updatedAt
mPersistence.deleteTask(fbKey);
}
diff --git a/projects/todos/app/src/main/java/io/v/todos/TodoListViewHolder.java b/projects/todos/app/src/main/java/io/v/todos/TodoListViewHolder.java
index f99beb2..788fe95 100644
--- a/projects/todos/app/src/main/java/io/v/todos/TodoListViewHolder.java
+++ b/projects/todos/app/src/main/java/io/v/todos/TodoListViewHolder.java
@@ -32,7 +32,7 @@
}
private String computeTimeAgo(TodoList todoList) {
- return "" + todoList.getUpdatedAt();
+ return UIUtil.computeTimeAgo("Last Updated", todoList.getUpdatedAt());
}
private String computeCompleted(TodoList todoList) {
diff --git a/projects/todos/app/src/main/java/io/v/todos/UIUtil.java b/projects/todos/app/src/main/java/io/v/todos/UIUtil.java
new file mode 100644
index 0000000..dd302d3
--- /dev/null
+++ b/projects/todos/app/src/main/java/io/v/todos/UIUtil.java
@@ -0,0 +1,16 @@
+// Copyright 2016 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package io.v.todos;
+
+import android.text.format.DateUtils;
+
+/**
+ * Created by alexfandrianto on 4/18/16.
+ */
+public class UIUtil {
+ public static String computeTimeAgo(String prefix, long startTime) {
+ return prefix + ": " + DateUtils.getRelativeTimeSpanString(startTime);
+ }
+}