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