That fuck shit the fascists are using
at master 111 lines 4.3 kB view raw
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}