diff options
author | Antonio Zugaldia <antonio@mapbox.com> | 2019-04-11 15:19:17 -0400 |
---|---|---|
committer | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2019-04-18 16:07:43 +0200 |
commit | be6d9ad35bb1d37f230b481740465de2ad04673d (patch) | |
tree | edc565f73d3cbfc69a51f6802a2187540f81f493 | |
parent | 24667c49ad4cb6b233a094346754624738db487d (diff) | |
download | qtlocation-mapboxgl-be6d9ad35bb1d37f230b481740465de2ad04673d.tar.gz |
keep track of the userid value
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccounts.java | 42 |
1 files changed, 36 insertions, 6 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccounts.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccounts.java index 20cbdc26a1..93cc50f909 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccounts.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/MapboxAccounts.java @@ -9,11 +9,17 @@ import com.mapbox.mapboxsdk.constants.MapboxConstants; import java.util.Calendar; +/** + * This class wraps the functionality provided by MapboxAccounts and manages its state + * using Android's SharedPreferences for storage. This class is meant for internal SDK + * usage only. + */ class MapboxAccounts { // TODO: Move to Constants? Repeated in FileSource. private static final String MAPBOX_SHARED_PREFERENCES = "MapboxSharedPreferences"; + private final static String PREFERENCE_USER_ID = "com.mapbox.mapboxsdk.accounts.userid"; private final static String PREFERENCE_TIMESTAMP = "com.mapbox.mapboxsdk.accounts.timestamp"; private final static String PREFERENCE_SKU_TOKEN = "com.mapbox.mapboxsdk.accounts.skutoken"; @@ -23,19 +29,39 @@ class MapboxAccounts { private String skuToken; MapboxAccounts() { + String userId = validateUserId(); + validateRotation(userId); + } + + private String validateUserId() { + SharedPreferences sharedPreferences = getSharedPreferences(); + String userId = sharedPreferences.getString(PREFERENCE_USER_ID, ""); + if (TextUtils.isEmpty(userId)) { + userId = generateUserId(); + SharedPreferences.Editor editor = getSharedPreferences().edit(); + editor.putString(PREFERENCE_USER_ID, userId); + editor.apply(); + } + + return userId; + } + + private void validateRotation(String userId) { SharedPreferences sharedPreferences = getSharedPreferences(); timestamp = sharedPreferences.getLong(PREFERENCE_TIMESTAMP, 0L); skuToken = sharedPreferences.getString(PREFERENCE_SKU_TOKEN, ""); if (timestamp == 0L || TextUtils.isEmpty(skuToken)) { - skuToken = generateSkuToken(); - timestamp = persistToken(skuToken); + skuToken = generateSkuToken(userId); + timestamp = persistRotation(skuToken); } } String getSkuToken() { if (isExpired()) { - skuToken = generateSkuToken(); - timestamp = persistToken(skuToken); + SharedPreferences sharedPreferences = getSharedPreferences(); + String userId = sharedPreferences.getString(PREFERENCE_USER_ID, ""); + skuToken = generateSkuToken(userId); + timestamp = persistRotation(skuToken); } return skuToken; @@ -45,7 +71,7 @@ class MapboxAccounts { return (getNow() - timestamp > ONE_HOUR_MILLIS); } - private long persistToken(String skuToken) { + private long persistRotation(String skuToken) { long now = getNow(); SharedPreferences.Editor editor = getSharedPreferences().edit(); editor.putLong(PREFERENCE_TIMESTAMP, now); @@ -62,7 +88,11 @@ class MapboxAccounts { return Calendar.getInstance(MapboxConstants.MAPBOX_LOCALE).getTimeInMillis(); } - private @NonNull String generateSkuToken() { + private @NonNull String generateUserId() { + return "placeholder"; // TODO + } + + private @NonNull String generateSkuToken(String userId) { return "placeholder"; // TODO } } |