That fuck shit the fascists are using
1package org.tm.archive.util;
2
3import android.content.Context;
4
5import androidx.annotation.PluralsRes;
6import androidx.annotation.StringRes;
7
8import org.tm.archive.R;
9
10import java.util.concurrent.TimeUnit;
11
12public final class ExpirationUtil {
13
14 private static final int SECONDS_IN_WEEK = (int) TimeUnit.DAYS.toSeconds(7);
15 private static final int SECONDS_IN_DAY = (int) TimeUnit.DAYS.toSeconds(1);
16 private static final int SECONDS_IN_HOUR = (int) TimeUnit.HOURS.toSeconds(1);
17 private static final int SECONDS_IN_MINUTE = (int) TimeUnit.MINUTES.toSeconds(1);
18
19 public static String getExpirationDisplayValue(Context context, int expirationTime) {
20 if (expirationTime <= 0) {
21 return context.getString(R.string.expiration_off);
22 }
23
24 String displayValue = "";
25
26 int secondsRemaining = expirationTime;
27
28 int weeks = secondsRemaining / SECONDS_IN_WEEK;
29 displayValue = getDisplayValue(context, displayValue, R.plurals.expiration_weeks, weeks);
30 secondsRemaining = secondsRemaining - weeks * SECONDS_IN_WEEK;
31
32 int days = secondsRemaining / SECONDS_IN_DAY;
33 displayValue = getDisplayValue(context, displayValue, R.plurals.expiration_days, days);
34 if (weeks > 0) {
35 return displayValue;
36 }
37 secondsRemaining = secondsRemaining - days * SECONDS_IN_DAY;
38
39 int hours = secondsRemaining / SECONDS_IN_HOUR;
40 displayValue = getDisplayValue(context, displayValue, R.plurals.expiration_hours, hours);
41 if (days > 0) {
42 return displayValue;
43 }
44 secondsRemaining = secondsRemaining - hours * SECONDS_IN_HOUR;
45
46 int minutes = secondsRemaining / SECONDS_IN_MINUTE;
47 displayValue = getDisplayValue(context, displayValue, R.plurals.expiration_minutes, minutes);
48 if (hours > 0) {
49 return displayValue;
50 }
51 secondsRemaining = secondsRemaining - minutes * SECONDS_IN_MINUTE;
52
53 displayValue = getDisplayValue(context, displayValue, R.plurals.expiration_seconds, secondsRemaining);
54
55 return displayValue;
56 }
57
58 private static String getDisplayValue(Context context, String currentValue, @PluralsRes int plurals, int duration) {
59 if (duration > 0) {
60 String durationString = context.getResources().getQuantityString(plurals, duration, duration);
61 if (currentValue.isEmpty()) {
62 return durationString;
63 } else {
64 return context.getString(R.string.expiration_combined, currentValue, durationString);
65 }
66 }
67 return currentValue;
68 }
69
70 public static String getExpirationAbbreviatedDisplayValue(Context context, int expirationTime) {
71 if (expirationTime <= 0) {
72 return context.getString(R.string.expiration_off);
73 }
74
75 String displayValue = "";
76
77 int secondsRemaining = expirationTime;
78
79 int weeks = secondsRemaining / SECONDS_IN_WEEK;
80 displayValue = getAbbreviatedDisplayValue(context, displayValue, R.string.expiration_weeks_abbreviated, weeks);
81 secondsRemaining = secondsRemaining - weeks * SECONDS_IN_WEEK;
82
83 int days = secondsRemaining / SECONDS_IN_DAY;
84 displayValue = getAbbreviatedDisplayValue(context, displayValue, R.string.expiration_days_abbreviated, days);
85 secondsRemaining = secondsRemaining - days * SECONDS_IN_DAY;
86
87 int hours = secondsRemaining / SECONDS_IN_HOUR;
88 displayValue = getAbbreviatedDisplayValue(context, displayValue, R.string.expiration_hours_abbreviated, hours);
89 secondsRemaining = secondsRemaining - hours * SECONDS_IN_HOUR;
90
91 int minutes = secondsRemaining / SECONDS_IN_MINUTE;
92 displayValue = getAbbreviatedDisplayValue(context, displayValue, R.string.expiration_minutes_abbreviated, minutes);
93 secondsRemaining = secondsRemaining - minutes * SECONDS_IN_MINUTE;
94
95 displayValue = getAbbreviatedDisplayValue(context, displayValue, R.string.expiration_seconds_abbreviated, secondsRemaining);
96
97 return displayValue;
98 }
99
100 private static String getAbbreviatedDisplayValue(Context context, String currentValue, @StringRes int abbreviation, int duration) {
101 if (duration > 0) {
102 String durationString = context.getString(abbreviation, duration);
103 if (currentValue.isEmpty()) {
104 return durationString;
105 } else {
106 return context.getString(R.string.expiration_combined, currentValue, durationString);
107 }
108 }
109 return currentValue;
110 }
111}