TBR: Reintroducing "Just now"

TODO(rosswang): We will want to revisit our capitalization
scheme. e.g. "Last Updated: 4 days ago". I did try "Last Updated: just
now" but that looks weird.

Change-Id: I47e9dca6a8e7fb6ad491c0cbe8401a4a9b4a5e5d
diff --git a/app/src/main/java/io/v/todos/TaskViewHolder.java b/app/src/main/java/io/v/todos/TaskViewHolder.java
index 89e8262..4b032fb 100644
--- a/app/src/main/java/io/v/todos/TaskViewHolder.java
+++ b/app/src/main/java/io/v/todos/TaskViewHolder.java
@@ -35,6 +35,6 @@
     }
 
     private String computeCreated(Task task) {
-        return UIUtil.computeTimeAgo("Created", task.addedAt);
+        return UIUtil.computeTimeAgo(getCardView().getContext(), "Created", task.addedAt);
     }
 }
diff --git a/app/src/main/java/io/v/todos/TodoListViewHolder.java b/app/src/main/java/io/v/todos/TodoListViewHolder.java
index 0394188..a70cb8f 100644
--- a/app/src/main/java/io/v/todos/TodoListViewHolder.java
+++ b/app/src/main/java/io/v/todos/TodoListViewHolder.java
@@ -34,7 +34,8 @@
     }
 
     private String computeTimeAgo(ListMetadata listMetadata) {
-        return UIUtil.computeTimeAgo("Last Updated", listMetadata.updatedAt);
+        return UIUtil.computeTimeAgo(getCardView().getContext(), "Last Updated",
+                listMetadata.updatedAt);
     }
 
     private String computeCompleted(ListMetadata listMetadata) {
diff --git a/app/src/main/java/io/v/todos/UIUtil.java b/app/src/main/java/io/v/todos/UIUtil.java
index 779d093..9fcb33c 100644
--- a/app/src/main/java/io/v/todos/UIUtil.java
+++ b/app/src/main/java/io/v/todos/UIUtil.java
@@ -11,15 +11,21 @@
 import android.view.WindowManager;
 import android.widget.EditText;
 
-/**
- * Created by alexfandrianto on 4/18/16.
- */
-public class UIUtil {
-    public static String computeTimeAgo(String prefix, long startTime) {
-        return prefix + ": " + DateUtils.getRelativeTimeSpanString(startTime);
+public final class UIUtil {
+    private UIUtil() {
+    }
+
+    private static final long JUST_NOW_DURATION = 60 * 1000 - 1;
+
+    public static String computeTimeAgo(Context context, String prefix, long startTime) {
+        long now = System.currentTimeMillis();
+        return prefix + ": " + (now - startTime > JUST_NOW_DURATION ?
+                DateUtils.getRelativeTimeSpanString(startTime, now, DateUtils.MINUTE_IN_MILLIS) :
+                context.getString(R.string.just_now));
     }
 
     private static AlertDialog lastDialog;
+
     public static AlertDialog getLastDialog() {
         return lastDialog;
     }
@@ -74,6 +80,8 @@
 
     public static abstract class DialogResponseListener {
         public abstract void handleResponse(String response);
-        public void handleDelete() {}
+
+        public void handleDelete() {
+        }
     }
 }
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 7cd0203..b63528a 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -9,6 +9,7 @@
     <string name="init_persistence">Initializing&#8230;</string>
     <string name="no_lists">No todo lists.\nPress \'+\' to add lists.</string>
     <string name="no_tasks">No tasks.\nPress \'+\' to add tasks.</string>
+    <string name="just_now">Just now</string>
     <!-- Errors -->
     <string name="err_init">Unable to initialize persistence</string>
     <string name="err_sync">Unable to sync</string>