From 74e44e9843df9e617a40e28d752964f1f3f53067 Mon Sep 17 00:00:00 2001
From: Febon <32780971+Febon@users.noreply.github.com>
Date: Sun, 14 Jun 2020 21:15:44 +0300
Subject: [PATCH] Fixed habit list refresh problem
added a pop-app message when habit reser is executed and toggled off deleted repetitions
---
.../activities/habits/list/ListHabitsScreen.kt | 1 +
.../uhabits-android/src/main/res/values/strings.xml | 1 +
.../isoron/uhabits/core/commands/CommandParser.java | 3 +++
.../uhabits/core/commands/ResetHabitsCommand.java | 13 ++++++++++---
.../ui/screens/habits/list/ListHabitsBehavior.java | 6 +++---
5 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt
index d97ebbbae..770fe5748 100644
--- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt
+++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreen.kt
@@ -225,6 +225,7 @@ class ListHabitsScreen
is DeleteHabitsCommand -> return R.string.toast_habit_deleted
is EditHabitCommand -> return R.string.toast_habit_changed
is UnarchiveHabitsCommand -> return R.string.toast_habit_unarchived
+ is ResetHabitsCommand -> return R.string.toast_habit_reset
else -> return null
}
}
diff --git a/android/uhabits-android/src/main/res/values/strings.xml b/android/uhabits-android/src/main/res/values/strings.xml
index 075d3a647..e31a277d5 100644
--- a/android/uhabits-android/src/main/res/values/strings.xml
+++ b/android/uhabits-android/src/main/res/values/strings.xml
@@ -39,6 +39,7 @@
Habit changed back
Habits archived
Habits unarchived
+ Habits reset
Overview
diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/CommandParser.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/CommandParser.java
index 8a5919ce4..cdfe4e59c 100644
--- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/CommandParser.java
+++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/CommandParser.java
@@ -79,6 +79,9 @@ public class CommandParser
if (event.equals("Unarchive")) return gson
.fromJson(json, UnarchiveHabitsCommand.Record.class)
.toCommand(habitList);
+ if(event.equals("HabitReset")) return gson
+ .fromJson(json, ResetHabitsCommand.Record.class)
+ .toCommand(habitList);
throw new IllegalStateException("Unknown command");
}
diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/ResetHabitsCommand.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/ResetHabitsCommand.java
index c5a42b428..e3c5cfe16 100644
--- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/ResetHabitsCommand.java
+++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/commands/ResetHabitsCommand.java
@@ -4,6 +4,7 @@ import androidx.annotation.NonNull;
import org.isoron.uhabits.core.models.Habit;
import org.isoron.uhabits.core.models.HabitList;
+import org.isoron.uhabits.core.models.Repetition;
import org.isoron.uhabits.core.models.RepetitionList;
import java.util.Collections;
@@ -34,12 +35,18 @@ public class ResetHabitsCommand extends Command
if (selected != null) {
for (Habit h : selected) {
RepetitionList repetitionList = h.getRepetitions();
- repetitionList.removeAll();
+ Repetition rep;
+ while(repetitionList.getTotalCount() != 0) {
+ rep = repetitionList.getOldest();
+ repetitionList.toggle(rep.getTimestamp());
+ repetitionList.remove(rep);
+ }
}
+ habitList.update(selected);
} else {
for (Habit h : habitList) {
- RepetitionList repetitionList = h.getRepetitions();
- repetitionList.removeAll();
+ h.getRepetitions().removeAll();
+ habitList.update(h);
}
}
}
diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.java
index 9fcdbe190..460564e68 100644
--- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.java
+++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/habits/list/ListHabitsBehavior.java
@@ -26,7 +26,6 @@ import org.isoron.uhabits.core.models.*;
import org.isoron.uhabits.core.preferences.*;
import org.isoron.uhabits.core.tasks.*;
import org.isoron.uhabits.core.utils.*;
-
import java.io.*;
import java.util.*;
@@ -128,11 +127,12 @@ public class ListHabitsBehavior
}
public void onResetHabits()
{
- //ResetHabitsCommand rst = new ResetHabitsCommand(habitList);
- //rst.execute();
commandRunner.execute(new ResetHabitsCommand(habitList),
null);
habitList.repair();
+ HabitCardListCache hclc = new HabitCardListCache(habitList, commandRunner, taskRunner);
+ hclc.refreshAllHabits();
+
}
public void onSendBugReport()
{