|
38 | 38 | import org.mozilla.vrbrowser.R; |
39 | 39 | import org.mozilla.vrbrowser.VRBrowserActivity; |
40 | 40 | import org.mozilla.vrbrowser.VRBrowserApplication; |
| 41 | +import org.mozilla.vrbrowser.browser.BookmarksStore; |
41 | 42 | import org.mozilla.vrbrowser.browser.Media; |
42 | 43 | import org.mozilla.vrbrowser.browser.PromptDelegate; |
43 | 44 | import org.mozilla.vrbrowser.browser.SessionChangeListener; |
@@ -173,11 +174,13 @@ private void initialize(Context aContext) { |
173 | 174 | setupListeners(mSession); |
174 | 175 |
|
175 | 176 | mBookmarksView = new BookmarksView(aContext); |
176 | | - mBookmarksView.addBookmarksListener(mBookmarksListener); |
| 177 | + mBookmarksView.addBookmarksListener(mBookmarksViewListener); |
177 | 178 |
|
178 | 179 | mHistoryView = new HistoryView(aContext); |
179 | 180 | mHistoryView.addHistoryListener(mHistoryListener); |
180 | 181 |
|
| 182 | + SessionStore.get().getBookmarkStore().addListener(mBookmarksListener); |
| 183 | + |
181 | 184 | mHandle = ((WidgetManagerDelegate)aContext).newWidgetHandle(); |
182 | 185 | mWidgetPlacement = new WidgetPlacement(aContext); |
183 | 186 | mPlacementBeforeFullscreen = new WidgetPlacement(aContext); |
@@ -626,6 +629,8 @@ public void setActiveWindow(boolean active) { |
626 | 629 |
|
627 | 630 | } else { |
628 | 631 | mWidgetManager.getNavigationBar().removeNavigationBarListener(mNavigationBarListener); |
| 632 | + updateBookmarked(); |
| 633 | + |
629 | 634 | } |
630 | 635 |
|
631 | 636 | hideContextMenus(); |
@@ -917,9 +922,10 @@ public void releaseWidget() { |
917 | 922 | mTexture.release(); |
918 | 923 | mTexture = null; |
919 | 924 | } |
920 | | - mBookmarksView.removeBookmarksListener(mBookmarksListener); |
| 925 | + mBookmarksView.removeBookmarksListener(mBookmarksViewListener); |
921 | 926 | mHistoryView.removeHistoryListener(mHistoryListener); |
922 | 927 | mWidgetManager.getNavigationBar().removeNavigationBarListener(mNavigationBarListener); |
| 928 | + SessionStore.get().getBookmarkStore().removeListener(mBookmarksListener); |
923 | 929 | mPromptDelegate.detachFromWindow(); |
924 | 930 | super.releaseWidget(); |
925 | 931 | } |
@@ -1348,7 +1354,7 @@ public void onRemoveFromBookmarks(LibraryMenuWidget.LibraryContextMenuItem item) |
1348 | 1354 | }); |
1349 | 1355 | } |
1350 | 1356 |
|
1351 | | - private BookmarksCallback mBookmarksListener = new BookmarksCallback() { |
| 1357 | + private BookmarksCallback mBookmarksViewListener = new BookmarksCallback() { |
1352 | 1358 | @Override |
1353 | 1359 | public void onShowContextMenu(@NonNull View view, @NonNull Bookmark item, boolean isLastVisibleItem) { |
1354 | 1360 | showLibraryItemContextMenu( |
@@ -1447,6 +1453,33 @@ public void onHome() { |
1447 | 1453 | } |
1448 | 1454 | }; |
1449 | 1455 |
|
| 1456 | + private BookmarksStore.BookmarkListener mBookmarksListener = new BookmarksStore.BookmarkListener() { |
| 1457 | + @Override |
| 1458 | + public void onBookmarksUpdated() { |
| 1459 | + updateBookmarked(); |
| 1460 | + } |
| 1461 | + |
| 1462 | + @Override |
| 1463 | + public void onBookmarkAdded() { |
| 1464 | + updateBookmarked(); |
| 1465 | + } |
| 1466 | + }; |
| 1467 | + |
| 1468 | + private void updateBookmarked() { |
| 1469 | + SessionStore.get().getBookmarkStore().isBookmarked(mViewModel.getUrl().getValue().toString()).thenAcceptAsync(bookmarked -> { |
| 1470 | + if (bookmarked) { |
| 1471 | + mViewModel.setIsBookmarked(true); |
| 1472 | + |
| 1473 | + } else { |
| 1474 | + mViewModel.setIsBookmarked(false); |
| 1475 | + } |
| 1476 | + }, mUIThreadExecutor).exceptionally(throwable -> { |
| 1477 | + Log.d(LOGTAG, "Error checking bookmark: " + throwable.getLocalizedMessage()); |
| 1478 | + throwable.printStackTrace(); |
| 1479 | + return null; |
| 1480 | + }); |
| 1481 | + } |
| 1482 | + |
1450 | 1483 | private void hideContextMenus() { |
1451 | 1484 | if (mContextMenu != null) { |
1452 | 1485 | if (!mContextMenu.isReleased()) { |
|
0 commit comments