From a17b62d0d17ee4122fac4093a155c584bc818367 Mon Sep 17 00:00:00 2001 From: Manuel Martin Date: Wed, 6 Nov 2019 14:35:03 +0100 Subject: [PATCH] Better update of binding states Revert "Use Future instead of SyncListener to sync History/Bookmarks sync states (#2171)" This reverts commit 1e9e4a857be27209ff2153ed2feab2241913fb68. Revert "Revert "Use Future instead of SyncListener to sync History/Bookmarks sync states (#2171)"" This reverts commit 3299a6503e6bf1cffea6bd9fc7913a8da1af06e2. --- .../vrbrowser/ui/views/BookmarksView.java | 25 ++++++++++--------- .../vrbrowser/ui/views/HistoryView.java | 25 ++++++++++--------- 2 files changed, 26 insertions(+), 24 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/views/BookmarksView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/views/BookmarksView.java index 664fcb147..a58f359c9 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/views/BookmarksView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/views/BookmarksView.java @@ -241,19 +241,12 @@ public void removeBookmarksListener(@NonNull BookmarksCallback listener) { private SyncStatusObserver mSyncListener = new SyncStatusObserver() { @Override public void onStarted() { - boolean isSyncEnabled = mAccounts.isEngineEnabled(SyncEngine.Bookmarks.INSTANCE); - mBinding.setIsSyncEnabled(isSyncEnabled); - mBinding.setIsSyncing(true); - mBinding.executePendingBindings(); + updateSyncBindings(true); } @Override public void onIdle() { - mBinding.setIsSyncing(false); - if (mAccounts.isEngineEnabled(SyncEngine.Bookmarks.INSTANCE)) { - mBinding.setLastSync(mAccounts.lastSync()); - } - mBinding.executePendingBindings(); + updateSyncBindings(false); // This shouldn't be necessary but for some reason the buttons stays hovered after the sync. // I guess Android is after enabling it it's state is restored to the latest one (hovered) @@ -264,12 +257,20 @@ public void onIdle() { @Override public void onError(@Nullable Exception e) { - mBinding.setIsSyncing(false); - mBinding.setIsSyncEnabled(mAccounts.isEngineEnabled(SyncEngine.Bookmarks.INSTANCE)); - mBinding.executePendingBindings(); + updateSyncBindings(false); } }; + private void updateSyncBindings(boolean isSyncing) { + boolean isSyncEnabled = mAccounts.isEngineEnabled(SyncEngine.Bookmarks.INSTANCE); + mBinding.setIsSyncEnabled(isSyncEnabled); + if (isSyncEnabled) { + mBinding.setIsSyncing(isSyncing); + mBinding.setLastSync(mAccounts.lastSync()); + } + mBinding.executePendingBindings(); + } + private AccountObserver mAccountListener = new AccountObserver() { @Override diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/views/HistoryView.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/views/HistoryView.java index 23ad5d0dd..3d8d985ad 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/views/HistoryView.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/views/HistoryView.java @@ -234,19 +234,12 @@ public void removeHistoryListener(@NonNull HistoryCallback listener) { private SyncStatusObserver mSyncListener = new SyncStatusObserver() { @Override public void onStarted() { - boolean isSyncEnabled = mAccounts.isEngineEnabled(SyncEngine.History.INSTANCE); - mBinding.setIsSyncEnabled(isSyncEnabled); - mBinding.setIsSyncing(true); - mBinding.executePendingBindings(); + updateSyncBindings(true); } @Override public void onIdle() { - mBinding.setIsSyncing(false); - if (mAccounts.isEngineEnabled(SyncEngine.History.INSTANCE)) { - mBinding.setLastSync(mAccounts.lastSync()); - } - mBinding.executePendingBindings(); + updateSyncBindings(false); // This shouldn't be necessary but for some reason the buttons stays hovered after the sync. // I guess Android is after enabling it it's state is restored to the latest one (hovered) @@ -257,12 +250,20 @@ public void onIdle() { @Override public void onError(@Nullable Exception e) { - mBinding.setIsSyncing(false); - mBinding.setIsSyncEnabled(mAccounts.isEngineEnabled(SyncEngine.History.INSTANCE)); - mBinding.executePendingBindings(); + updateSyncBindings(false); } }; + private void updateSyncBindings(boolean isSyncing) { + boolean isSyncEnabled = mAccounts.isEngineEnabled(SyncEngine.History.INSTANCE); + mBinding.setIsSyncEnabled(isSyncEnabled); + if (isSyncEnabled) { + mBinding.setIsSyncing(isSyncing); + mBinding.setLastSync(mAccounts.lastSync()); + } + mBinding.executePendingBindings(); + } + private AccountObserver mAccountListener = new AccountObserver() { @Override