That fuck shit the fascists are using
1package org.tm.archive.lock;
2
3import androidx.annotation.StringRes;
4
5import org.signal.core.util.logging.Log;
6import org.tm.archive.R;
7
8import java.util.HashMap;
9import java.util.Map;
10import java.util.NavigableSet;
11import java.util.TreeSet;
12import java.util.concurrent.TimeUnit;
13
14/**
15 * Reminder intervals for Signal PINs.
16 */
17public class SignalPinReminders {
18
19 private static final String TAG = Log.tag(SignalPinReminders.class);
20
21 private static final long ONE_DAY = TimeUnit.DAYS.toMillis(1);
22 private static final long THREE_DAYS = TimeUnit.DAYS.toMillis(3);
23 private static final long ONE_WEEK = TimeUnit.DAYS.toMillis(7);
24 private static final long TWO_WEEKS = TimeUnit.DAYS.toMillis(14);
25 private static final long FOUR_WEEKS = TimeUnit.DAYS.toMillis(28);
26
27 private static final NavigableSet<Long> INTERVALS = new TreeSet<Long>() {{
28 add(ONE_DAY);
29 add(THREE_DAYS);
30 add(ONE_WEEK);
31 add(TWO_WEEKS);
32 add(FOUR_WEEKS);
33 }};
34
35 private static final Map<Long, Integer> STRINGS = new HashMap<Long, Integer>() {{
36 put(ONE_DAY, R.string.SignalPinReminders_well_remind_you_again_tomorrow);
37 put(THREE_DAYS, R.string.SignalPinReminders_well_remind_you_again_in_a_few_days);
38 put(ONE_WEEK, R.string.SignalPinReminders_well_remind_you_again_in_a_week);
39 put(TWO_WEEKS, R.string.SignalPinReminders_well_remind_you_again_in_a_couple_weeks);
40 put(FOUR_WEEKS, R.string.SignalPinReminders_well_remind_you_again_in_a_month);
41 }};
42
43 public static final long INITIAL_INTERVAL = INTERVALS.first();
44
45 public static long getNextInterval(long currentInterval) {
46 Long next = INTERVALS.higher(currentInterval);
47 return next != null ? next : INTERVALS.last();
48 }
49
50 public static long getPreviousInterval(long currentInterval) {
51 Long previous = INTERVALS.lower(currentInterval);
52 return previous != null ? previous : INTERVALS.first();
53 }
54
55 public static @StringRes int getReminderString(long interval) {
56 Integer stringRes = STRINGS.get(interval);
57
58 if (stringRes != null) {
59 return stringRes;
60 } else {
61 Log.w(TAG, "Couldn't find a string for interval " + interval);
62 return R.string.SignalPinReminders_well_remind_you_again_later;
63 }
64 }
65}