From 2666fc4eceea1dbd8c97a74bc3753f2b8ec33876 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Thu, 20 Oct 2016 19:39:14 +0200 Subject: [PATCH] improve reminder rescheduling --- Habitica/AndroidManifest.xml | 10 ++++++---- Habitica/build.gradle | 2 +- .../android/habitica/helpers/TaskAlarmManager.java | 6 ++++++ .../habitica/receivers/TaskAlarmBootReceiver.java | 8 ++++++-- .../android/habitica/ui/activities/MainActivity.java | 8 ++++++++ 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index ed8a97fb5..59a8acd84 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -2,8 +2,8 @@ @@ -138,7 +138,9 @@ android:screenOrientation="portrait" /> - + @@ -150,7 +152,7 @@ - + diff --git a/Habitica/build.gradle b/Habitica/build.gradle index cd5619885..94f743cab 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -288,4 +288,4 @@ apply plugin: 'com.getkeepsafe.dexcount' apply plugin: 'com.android.application' //or apply plugin: 'java' apply plugin: 'me.tatarka.retrolambda' apply plugin: 'com.jakewharton.hugo' -apply plugin: 'com.google.gms.google-services' \ No newline at end of file +apply plugin: 'com.google.gms.google-services' diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskAlarmManager.java b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskAlarmManager.java index 1d06f1725..2e999575c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskAlarmManager.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/TaskAlarmManager.java @@ -16,6 +16,8 @@ import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; +import android.support.v7.preference.PreferenceManager; import android.util.Log; import java.util.Calendar; @@ -109,6 +111,10 @@ public class TaskAlarmManager { for (Task task : tasks) { this.setAlarmsForTask(task); } + + SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit(); + editor.putLong("lastReminderSchedule", new Date().getTime()); + editor.apply(); } private RemindersItem setTimeForDailyReminder(RemindersItem remindersItem, Task task) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/TaskAlarmBootReceiver.java b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/TaskAlarmBootReceiver.java index 17470cc04..39ec50a51 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/TaskAlarmBootReceiver.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/TaskAlarmBootReceiver.java @@ -5,12 +5,16 @@ import com.habitrpg.android.habitica.helpers.TaskAlarmManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; +import android.support.v7.preference.PreferenceManager; + +import java.util.Date; public class TaskAlarmBootReceiver extends BroadcastReceiver { @Override - public void onReceive(Context arg0, Intent arg1) { - TaskAlarmManager taskAlarmManager = TaskAlarmManager.getInstance(arg0); + public void onReceive(Context context, Intent arg1) { + TaskAlarmManager taskAlarmManager = TaskAlarmManager.getInstance(context); taskAlarmManager.scheduleAllSavedAlarms(); } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index c74803f33..f9d1675c4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -84,6 +84,7 @@ import com.habitrpg.android.habitica.events.commands.UnlockPathCommand; import com.habitrpg.android.habitica.events.commands.UpdateUserCommand; import com.habitrpg.android.habitica.helpers.AmplitudeManager; import com.habitrpg.android.habitica.helpers.LanguageHelper; +import com.habitrpg.android.habitica.helpers.TaskAlarmManager; import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManager; import com.habitrpg.android.habitica.ui.AvatarView; import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel; @@ -183,6 +184,8 @@ public class MainActivity extends BaseActivity implements Action1, Ha public HabitRPGUser user; @Inject protected HostConfig hostConfig; + @Inject + protected SharedPreferences sharedPreferences; @BindView(R.id.floating_menu_wrapper) FrameLayout floatingMenuWrapper; @BindView(R.id.toolbar) @@ -303,6 +306,11 @@ public class MainActivity extends BaseActivity implements Action1, Ha } } + if (this.sharedPreferences.getLong("lastReminderSchedule", 0) > new Date().getTime() - 86400000) { + TaskAlarmManager taskAlarmManager = TaskAlarmManager.getInstance(this); + taskAlarmManager.scheduleAllSavedAlarms(); + } + //after the activity has been stopped and is thereafter resumed, //a state can arise in which the active fragment no longer has a //reference to the tabLayout (and all its adapters are null).