diff options
author | cyBerta <cyberta@riseup.net> | 2024-01-24 21:59:27 +0100 |
---|---|---|
committer | cyBerta <cyberta@riseup.net> | 2024-01-24 22:13:21 +0100 |
commit | 5db48094b7cbc4bab12e2fe8476ff1404971e49c (patch) | |
tree | 0ea54ecd998225cec19cbc5c9d9632de0daf5efd /app/src/main/java/se/leap/bitmaskclient/base/utils/TimezoneHelper.java | |
parent | a43be4240f48bca2985a4cc3ddee124ff80bfb1a (diff) |
fix GatewaySelectorTest, introduce TimezoneHelper
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/base/utils/TimezoneHelper.java')
-rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/base/utils/TimezoneHelper.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/base/utils/TimezoneHelper.java b/app/src/main/java/se/leap/bitmaskclient/base/utils/TimezoneHelper.java new file mode 100644 index 00000000..c543368d --- /dev/null +++ b/app/src/main/java/se/leap/bitmaskclient/base/utils/TimezoneHelper.java @@ -0,0 +1,42 @@ +package se.leap.bitmaskclient.base.utils; + +import androidx.annotation.VisibleForTesting; + +import java.util.Calendar; + +public class TimezoneHelper { + + public interface TimezoneInterface { + int getCurrentTimezone(); + } + + private static TimezoneInterface instance = new DefaultTimezoneHelper(); + + @VisibleForTesting + public TimezoneHelper(TimezoneInterface timezoneInterface) { + instance = timezoneInterface; + } + + public static TimezoneInterface get() { + return instance; + } + + public static int timezoneDistance(int localTimezone, int remoteTimezone) { // Distance along the numberline of Prime Meridian centric, assumes UTC-11 through UTC+12 + int dist = Math.abs(localTimezone - remoteTimezone); + // Farther than 12 timezones and it's shorter around the "back" + if (dist > 12) + dist = 12 - (dist - 12); // Well i'll be. Absolute values make equations do funny things. + return dist; + } + + public static int getCurrentTimezone() { + return get().getCurrentTimezone(); + } + + public static class DefaultTimezoneHelper implements TimezoneInterface { + @Override + public int getCurrentTimezone() { + return Calendar.getInstance().get(Calendar.ZONE_OFFSET) / 3600000; + } + } +} |