From b9b47d0f05406b16dcf181e0e3243bd768c58dae Mon Sep 17 00:00:00 2001 From: Manuel Martin Date: Fri, 22 Nov 2019 10:19:47 +0100 Subject: [PATCH] Adds support for multiple accounts last sync time --- .../org/mozilla/vrbrowser/browser/Accounts.kt | 10 +++- .../vrbrowser/browser/SettingsStore.java | 47 +++++++++++++++++++ .../settings/FxAAccountOptionsView.java | 3 +- app/src/main/res/values/non_L10n.xml | 1 + 4 files changed, 59 insertions(+), 2 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/browser/Accounts.kt b/app/src/common/shared/org/mozilla/vrbrowser/browser/Accounts.kt index e8a46ba94..dcc78be64 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/browser/Accounts.kt +++ b/app/src/common/shared/org/mozilla/vrbrowser/browser/Accounts.kt @@ -72,6 +72,11 @@ class Accounts constructor(val context: Context) { Log.d(LOGTAG, "Account syncing has finished") isSyncing = false + + services.accountManager.accountProfile()?.email?.let { + SettingsStore.getInstance(context).setFxALastSync(it, getLastSynced(context)) + } + syncListeners.toMutableList().forEach { Handler(Looper.getMainLooper()).post { it.onIdle() @@ -332,7 +337,10 @@ class Accounts constructor(val context: Context) { } fun lastSync(): Long { - return getLastSynced(context) + services.accountManager.accountProfile()?.email?.let { + return SettingsStore.getInstance(context).getFxALastSync(it) + } + return 0 } fun devicesByCapability(capabilities: List): List { diff --git a/app/src/common/shared/org/mozilla/vrbrowser/browser/SettingsStore.java b/app/src/common/shared/org/mozilla/vrbrowser/browser/SettingsStore.java index 8a52d6384..aafcac515 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/browser/SettingsStore.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/browser/SettingsStore.java @@ -5,8 +5,10 @@ import android.graphics.Color; import android.os.StrictMode; import android.preference.PreferenceManager; +import android.util.Log; import org.json.JSONArray; +import org.json.JSONObject; import org.mozilla.geckoview.GeckoSessionSettings; import org.mozilla.telemetry.TelemetryHolder; import org.mozilla.vrbrowser.R; @@ -21,6 +23,8 @@ import androidx.annotation.NonNull; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Locale; @@ -81,6 +85,7 @@ SettingsStore getInstance(final @NonNull Context aContext) { public final static boolean BOOKMARKS_SYNC_DEFAULT = true; public final static boolean HISTORY_SYNC_DEFAULT = true; public final static boolean WHATS_NEW_DISPLAYED = false; + public final static long FXA_LAST_SYNC_NEVER = 0; // Enable telemetry by default (opt-out). public final static boolean CRASH_REPORTING_DEFAULT = false; @@ -647,5 +652,47 @@ public boolean isWhatsNewDisplayed() { return mPrefs.getBoolean(mContext.getString(R.string.settings_key_whats_new_displayed), WHATS_NEW_DISPLAYED); } + public void setFxALastSync(@NonNull String email, long timestamp) { + String json = mPrefs.getString( + mContext.getString(R.string.settings_key_fxa_last_sync), + new JSONObject().toString()); + + try { + JSONObject jsonObject = new JSONObject(json); + jsonObject.put(email, timestamp); + + SharedPreferences.Editor editor = mPrefs.edit(); + editor.putString(mContext.getString(R.string.settings_key_fxa_last_sync), jsonObject.toString()); + editor.commit(); + + } catch (Exception e) { + Log.d(LOGTAG, e.getMessage()); + } + } + + public long getFxALastSync(@NonNull String email) { + String json = mPrefs.getString( + mContext.getString(R.string.settings_key_fxa_last_sync), + null); + + try { + JSONObject jsonObject = new JSONObject(json); + Iterator iterator = jsonObject.keys(); + while (iterator.hasNext()) { + String key = iterator.next(); + if (key.equals(email)) { + return jsonObject.getLong(key); + } + } + + return FXA_LAST_SYNC_NEVER; + + } catch (Exception e) { + return FXA_LAST_SYNC_NEVER; + } + + + } + } diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/FxAAccountOptionsView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/FxAAccountOptionsView.java index 0f09b662b..8123721b3 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/FxAAccountOptionsView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/settings/FxAAccountOptionsView.java @@ -208,7 +208,8 @@ public void onAuthenticated(@NotNull OAuthAccount oAuthAccount, @NotNull AuthTyp @Override public void onProfileUpdated(@NotNull Profile profile) { - post(() -> mBinding.accountEmail.setText(profile.getEmail())); + mBinding.accountEmail.setText(profile.getEmail()); + mBinding.setLastSync(mAccounts.lastSync()); } @Override diff --git a/app/src/main/res/values/non_L10n.xml b/app/src/main/res/values/non_L10n.xml index 7a8202d93..ad8361a94 100644 --- a/app/src/main/res/values/non_L10n.xml +++ b/app/src/main/res/values/non_L10n.xml @@ -50,6 +50,7 @@ settings_key_history_sync settings_key_whats_new_displayed settings_key_ui_hardware_acceleration + settings_key_fxa_last_sync https://github.com/MozillaReality/FirefoxReality/wiki/Environments https://www.mozilla.org/privacy/firefox/ https://mixedreality.mozilla.org/fxr/report?src=browser-fxr&label=browser-firefox-reality&url=%1$s