Dbrant has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/309577

Change subject: Fix reading list fragment state when adding items.
......................................................................

Fix reading list fragment state when adding items.

- When adding an item to a reading list from the Feed, and then switching
  directly to the Reading Lists tab, the list was not being updated, since
  the fragment wasn't getting any sort of event to update itself. This
  patch introduces an interface that a NavTab fragment can implement if it
  wants to receive a notification when it's been switched to.
- Added Snackbars when adding a page to a reading list. The snackbar
  shown in PageActivity does not (yet) have an action to go to the
  selected reading list, since this will require activityResult logic
  (subsequent patch).

Change-Id: Iaa5b0da37873777c4b5f1c91503f390e49aecf0a
---
M app/src/main/java/org/wikipedia/MainFragment.java
M app/src/main/java/org/wikipedia/navtab/NavTabFragmentPagerAdapter.java
M app/src/main/java/org/wikipedia/page/PageActivity.java
M app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
M app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java
5 files changed, 53 insertions(+), 26 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/77/309577/1

diff --git a/app/src/main/java/org/wikipedia/MainFragment.java 
b/app/src/main/java/org/wikipedia/MainFragment.java
index 88dd198..3c4c4d8 100644
--- a/app/src/main/java/org/wikipedia/MainFragment.java
+++ b/app/src/main/java/org/wikipedia/MainFragment.java
@@ -69,8 +69,8 @@
 
 public class MainFragment extends Fragment implements BackPressedHandler, 
FeedFragment.Callback,
         NearbyFragment.Callback, HistoryFragment.Callback, 
ReadingListsFragment.Callback,
-        SearchFragment.Callback, SearchResultsFragment.Callback,
-        LinkPreviewDialog.Callback {
+        SearchFragment.Callback, SearchResultsFragment.Callback, 
LinkPreviewDialog.Callback,
+        AddToReadingListDialog.Callback {
     @BindView(R.id.fragment_main_view_pager) ViewPager viewPager;
     @BindView(R.id.view_nav_view_pager_tab_layout) TabLayout tabLayout;
     private Unbinder unbinder;
@@ -396,6 +396,17 @@
     }
 
     @Override
+    public void showReadingListAddedMessage(@NonNull String message) {
+        FeedbackUtil.makeSnackbar(getActivity(), message, 
FeedbackUtil.LENGTH_DEFAULT)
+                .setAction(R.string.reading_list_added_view_button, new 
View.OnClickListener() {
+                    @Override
+                    public void onClick(View v) {
+                        viewPager.setCurrentItem(NavTab.READING_LISTS.code());
+                    }
+                }).show();
+    }
+
+    @Override
     public boolean onBackPressed() {
         Fragment fragment = ((NavTabFragmentPagerAdapter) 
viewPager.getAdapter()).getCurrentFragment();
         if (searchFragment.onBackPressed()) {
@@ -412,6 +423,10 @@
             NavTab tab = NavTab.of(position);
             callback.onTabChanged(tab);
         }
+        Fragment fragment = ((NavTabFragmentPagerAdapter) 
viewPager.getAdapter()).getCurrentFragment();
+        if (fragment instanceof 
NavTabFragmentPagerAdapter.NavTabChangedHandler) {
+            ((NavTabFragmentPagerAdapter.NavTabChangedHandler) 
fragment).onTabSelected();
+        }
     }
 
     private void showLinkPreview(PageTitle title, int entrySource, @Nullable 
Location location) {
diff --git 
a/app/src/main/java/org/wikipedia/navtab/NavTabFragmentPagerAdapter.java 
b/app/src/main/java/org/wikipedia/navtab/NavTabFragmentPagerAdapter.java
index 288e771..36c31ec 100644
--- a/app/src/main/java/org/wikipedia/navtab/NavTabFragmentPagerAdapter.java
+++ b/app/src/main/java/org/wikipedia/navtab/NavTabFragmentPagerAdapter.java
@@ -9,6 +9,10 @@
 public class NavTabFragmentPagerAdapter extends FragmentPagerAdapter {
     private Fragment currentFragment;
 
+    public interface NavTabChangedHandler {
+        void onTabSelected();
+    }
+
     public NavTabFragmentPagerAdapter(FragmentManager mgr) {
         super(mgr);
     }
diff --git a/app/src/main/java/org/wikipedia/page/PageActivity.java 
b/app/src/main/java/org/wikipedia/page/PageActivity.java
index 259980e..98a8fb0 100644
--- a/app/src/main/java/org/wikipedia/page/PageActivity.java
+++ b/app/src/main/java/org/wikipedia/page/PageActivity.java
@@ -18,7 +18,6 @@
 import android.support.annotation.VisibleForTesting;
 import android.support.design.widget.BottomSheetDialog;
 import android.support.design.widget.BottomSheetDialogFragment;
-import android.support.design.widget.Snackbar;
 import android.support.v4.app.Fragment;
 import android.support.v4.content.ContextCompat;
 import android.support.v7.app.AlertDialog;
@@ -86,8 +85,8 @@
 import static org.wikipedia.util.UriUtil.visitInExternalBrowser;
 
 public class PageActivity extends ThemedActionBarActivity implements 
PageFragment.Callback,
-        LinkPreviewDialog.Callback, SearchFragment.Callback,
-        SearchResultsFragment.Callback, WiktionaryDialog.Callback {
+        LinkPreviewDialog.Callback, SearchFragment.Callback, 
SearchResultsFragment.Callback,
+        WiktionaryDialog.Callback, AddToReadingListDialog.Callback {
 
     public static final String ACTION_PAGE_FOR_TITLE = 
"org.wikipedia.page_for_title";
     public static final String ACTION_SHOW_TAB_LIST = 
"org.wikipedia.show_tab_list";
@@ -216,10 +215,7 @@
     public boolean onOptionsItemSelected(MenuItem item) {
         switch (item.getItemId()) {
             case android.R.id.home:
-                if (shouldRecreateMainActivity()) {
-                    startActivity(getSupportParentActivityIntent());
-                }
-                finish();
+                goToParentActivity();
                 return true;
             default:
                 return super.onOptionsItemSelected(item);
@@ -439,15 +435,9 @@
         FeedbackUtil.showAddToListDialog(title, source, bottomSheetPresenter, 
listDialogDismissListener);
     }
 
-    public void showReadingListAddedSnackbar(String message) {
-        Snackbar snackbar = FeedbackUtil.makeSnackbar(this, message, 
FeedbackUtil.LENGTH_DEFAULT);
-        snackbar.setAction(R.string.reading_list_added_view_button, new 
View.OnClickListener() {
-            @Override
-            public void onClick(View v) {
-                // TODO: finish this activity with a result that signals 
MainActivity to show reading lists.
-            }
-        });
-        snackbar.show();
+    @Override
+    public void showReadingListAddedMessage(@NonNull String message) {
+        FeedbackUtil.makeSnackbar(this, message, 
FeedbackUtil.LENGTH_DEFAULT).show();
     }
 
     // Note: back button first handled in {@link #onOptionsItemSelected()};
@@ -660,6 +650,17 @@
         pageFragment.getShareHandler().showWiktionaryDefinition(term);
     }
 
+    private void goToParentActivity(@Nullable String result) {
+
+    }
+
+    private void goToParentActivity() {
+        if (shouldRecreateMainActivity()) {
+            startActivity(getSupportParentActivityIntent());
+        }
+        finish();
+    }
+
     @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
     private void showTabList() {
         if (isDestroyed()) {
diff --git 
a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java 
b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
index ec9ad49..527cd06 100644
--- a/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
+++ b/app/src/main/java/org/wikipedia/readinglist/AddToReadingListDialog.java
@@ -57,7 +57,7 @@
     }
 
     public interface Callback {
-        void showReadingListAddedMessage(@NonNull String message, boolean 
isOnboarding);
+        void showReadingListAddedMessage(@NonNull String message);
     }
 
     private PageTitle pageTitle;
@@ -66,7 +66,6 @@
     private View onboardingContainer;
     private View onboardingButton;
     private InvokeSource invokeSource;
-    private boolean isOnboarding;
     private CreateButtonClickListener createClickListener = new 
CreateButtonClickListener();
     private List<ReadingList> readingLists = new ArrayList<>();
     private DialogInterface.OnDismissListener dismissListener;
@@ -131,7 +130,7 @@
     }
 
     private void checkAndShowOnboarding() {
-        isOnboarding = 
WikipediaApp.getInstance().getOnboardingStateMachine().isReadingListTutorialEnabled();
+        boolean isOnboarding = 
WikipediaApp.getInstance().getOnboardingStateMachine().isReadingListTutorialEnabled();
         onboardingButton.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -204,14 +203,14 @@
                     Callback callback = callback();
                     if (contains) {
                         if (callback != null) {
-                            
callback.showReadingListAddedMessage(getString(R.string.reading_list_already_exists),
 isOnboarding);
+                            
callback.showReadingListAddedMessage(getString(R.string.reading_list_already_exists));
                         }
                     } else {
                         if (callback != null) {
                             
callback.showReadingListAddedMessage(TextUtils.isEmpty(readingList.getTitle())
                                     ? 
getString(R.string.reading_list_added_to_unnamed)
                                     : 
String.format(getString(R.string.reading_list_added_to_named),
-                                    readingList.getTitle()), isOnboarding);
+                                    readingList.getTitle()));
                         }
 
                         new 
ReadingListsFunnel(pageTitle.getSite()).logAddToList(readingList, 
readingLists.size(), invokeSource);
diff --git 
a/app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java 
b/app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java
index 2d27b4f..8a9702f 100644
--- a/app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java
+++ b/app/src/main/java/org/wikipedia/readinglist/ReadingListsFragment.java
@@ -25,6 +25,7 @@
 import org.wikipedia.analytics.ReadingListsFunnel;
 import org.wikipedia.concurrency.CallbackTask;
 import org.wikipedia.history.HistoryEntry;
+import org.wikipedia.navtab.NavTabFragmentPagerAdapter;
 import org.wikipedia.page.PageTitle;
 import org.wikipedia.readinglist.page.ReadingListPage;
 import org.wikipedia.readinglist.page.database.ReadingListDaoProxy;
@@ -40,7 +41,8 @@
 import butterknife.OnPageChange;
 import butterknife.Unbinder;
 
-public class ReadingListsFragment extends Fragment implements 
BackPressedHandler {
+public class ReadingListsFragment extends Fragment implements 
BackPressedHandler,
+        NavTabFragmentPagerAdapter.NavTabChangedHandler {
     public interface Callback {
         void onLoadPage(PageTitle title, HistoryEntry entry);
     }
@@ -125,7 +127,7 @@
     @Override
     public void onResume() {
         super.onResume();
-        pager.setCurrentItem(PAGE_READING_LISTS);
+        onTabSelected();
     }
 
     @Override
@@ -163,6 +165,12 @@
             default:
                 return super.onOptionsItemSelected(item);
         }
+    }
+
+    @Override
+    public void onTabSelected() {
+        pager.setCurrentItem(PAGE_READING_LISTS);
+        updateLists();
     }
 
     @OnPageChange(R.id.pager) void onListChanged() {
@@ -208,7 +216,7 @@
         }
     }
 
-    class ReadingListPagerAdapter extends PagerAdapter {
+    private class ReadingListPagerAdapter extends PagerAdapter {
         @Override
         public Object instantiateItem(ViewGroup collection, int position) {
             int resId;

-- 
To view, visit https://gerrit.wikimedia.org/r/309577
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iaa5b0da37873777c4b5f1c91503f390e49aecf0a
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dbrant <dbr...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to