From 513cadee8ed662844e21e214d0ad3021b45681c4 Mon Sep 17 00:00:00 2001 From: Manuel Martin Date: Fri, 21 Feb 2020 23:58:41 +0100 Subject: [PATCH] Update the navigation bar bookmarked flag when bookmarks are updated (#2813) --- .../vrbrowser/ui/widgets/WindowWidget.java | 39 +++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java index 888cc09d3..a1e49b537 100644 --- a/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java +++ b/app/src/common/shared/org/mozilla/vrbrowser/ui/widgets/WindowWidget.java @@ -38,6 +38,7 @@ import org.mozilla.vrbrowser.R; import org.mozilla.vrbrowser.VRBrowserActivity; import org.mozilla.vrbrowser.VRBrowserApplication; +import org.mozilla.vrbrowser.browser.BookmarksStore; import org.mozilla.vrbrowser.browser.Media; import org.mozilla.vrbrowser.browser.PromptDelegate; import org.mozilla.vrbrowser.browser.SessionChangeListener; @@ -173,11 +174,13 @@ private void initialize(Context aContext) { setupListeners(mSession); mBookmarksView = new BookmarksView(aContext); - mBookmarksView.addBookmarksListener(mBookmarksListener); + mBookmarksView.addBookmarksListener(mBookmarksViewListener); mHistoryView = new HistoryView(aContext); mHistoryView.addHistoryListener(mHistoryListener); + SessionStore.get().getBookmarkStore().addListener(mBookmarksListener); + mHandle = ((WidgetManagerDelegate)aContext).newWidgetHandle(); mWidgetPlacement = new WidgetPlacement(aContext); mPlacementBeforeFullscreen = new WidgetPlacement(aContext); @@ -626,6 +629,8 @@ public void setActiveWindow(boolean active) { } else { mWidgetManager.getNavigationBar().removeNavigationBarListener(mNavigationBarListener); + updateBookmarked(); + } hideContextMenus(); @@ -917,9 +922,10 @@ public void releaseWidget() { mTexture.release(); mTexture = null; } - mBookmarksView.removeBookmarksListener(mBookmarksListener); + mBookmarksView.removeBookmarksListener(mBookmarksViewListener); mHistoryView.removeHistoryListener(mHistoryListener); mWidgetManager.getNavigationBar().removeNavigationBarListener(mNavigationBarListener); + SessionStore.get().getBookmarkStore().removeListener(mBookmarksListener); mPromptDelegate.detachFromWindow(); super.releaseWidget(); } @@ -1348,7 +1354,7 @@ public void onRemoveFromBookmarks(LibraryMenuWidget.LibraryContextMenuItem item) }); } - private BookmarksCallback mBookmarksListener = new BookmarksCallback() { + private BookmarksCallback mBookmarksViewListener = new BookmarksCallback() { @Override public void onShowContextMenu(@NonNull View view, @NonNull Bookmark item, boolean isLastVisibleItem) { showLibraryItemContextMenu( @@ -1447,6 +1453,33 @@ public void onHome() { } }; + private BookmarksStore.BookmarkListener mBookmarksListener = new BookmarksStore.BookmarkListener() { + @Override + public void onBookmarksUpdated() { + updateBookmarked(); + } + + @Override + public void onBookmarkAdded() { + updateBookmarked(); + } + }; + + private void updateBookmarked() { + SessionStore.get().getBookmarkStore().isBookmarked(mViewModel.getUrl().getValue().toString()).thenAcceptAsync(bookmarked -> { + if (bookmarked) { + mViewModel.setIsBookmarked(true); + + } else { + mViewModel.setIsBookmarked(false); + } + }, mUIThreadExecutor).exceptionally(throwable -> { + Log.d(LOGTAG, "Error checking bookmark: " + throwable.getLocalizedMessage()); + throwable.printStackTrace(); + return null; + }); + } + private void hideContextMenus() { if (mContextMenu != null) { if (!mContextMenu.isReleased()) {