app/src/main/java/com/futsch1/medtimer/reminders/WeekendMode.java
package com.futsch1.medtimer.reminders;
import android.content.SharedPreferences;
import android.util.ArraySet;
import com.futsch1.medtimer.WeekendModePreferencesFragment;
import java.time.DayOfWeek;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Set;
public class WeekendMode {
private final SharedPreferences preferences;
public WeekendMode(SharedPreferences preferences) {
this.preferences = preferences;
}
public Instant adjustInstant(Instant instant) {
if (isWeekendModeEnabled()) {
int weekendTime = preferences.getInt(WeekendModePreferencesFragment.WEEKEND_TIME, 540);
Set<String> weekendDays = preferences.getStringSet(WeekendModePreferencesFragment.WEEKEND_DAYS, new ArraySet<>());
ZonedDateTime localDateTime = instant.atZone(ZoneId.systemDefault());
DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
int minutes = localDateTime.getMinute() + localDateTime.getHour() * 60;
int deltaMinutes = weekendTime - minutes;
if (weekendDays.contains(String.valueOf(dayOfWeek.getValue())) && deltaMinutes > 0) {
instant = instant.plusSeconds(deltaMinutes * 60L);
}
}
return instant;
}
private boolean isWeekendModeEnabled() {
return preferences.getBoolean(WeekendModePreferencesFragment.WEEKEND_MODE, false);
}
}