package co.smartreceipts.android.aws.cognito; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import co.smartreceipts.android.identity.apis.me.Cognito; public class LocalCognitoTokenStore { private static final String KEY_COGNITO_TOKEN = "key_cognito_token"; private static final String KEY_COGNITO_IDENTITY_ID = "key_cognito_identity_id"; private static final String KEY_COGNITO_TOKEN_EXPIRATION = "key_cognito_token_expiration"; private final SharedPreferences mSharedPreferences; public LocalCognitoTokenStore(@NonNull Context context) { this(PreferenceManager.getDefaultSharedPreferences(context)); } public LocalCognitoTokenStore(@NonNull SharedPreferences sharedPreferences) { mSharedPreferences = sharedPreferences; } @Nullable public Cognito getCognitoToken() { final String token = mSharedPreferences.getString(KEY_COGNITO_TOKEN, null); final String identityId = mSharedPreferences.getString(KEY_COGNITO_IDENTITY_ID, null); final long expirationTimeStamp = mSharedPreferences.getLong(KEY_COGNITO_TOKEN_EXPIRATION, -1); if (token == null || identityId == null) { return null; } else { return new Cognito(token, identityId, expirationTimeStamp); } } public void persist(@Nullable Cognito cognito) { final SharedPreferences.Editor editor = mSharedPreferences.edit(); editor.putString(KEY_COGNITO_TOKEN, cognito != null ? cognito.getCognitoToken() : null); editor.putString(KEY_COGNITO_IDENTITY_ID, cognito != null ? cognito.getIdentityId() : null); editor.putLong(KEY_COGNITO_TOKEN_EXPIRATION, cognito != null ? cognito.getCognitoTokenExpiresAt() : -1); editor.apply(); } }