Dbrant has submitted this change and it was merged.

Change subject: Recent searches
......................................................................


Recent searches

Store recent search strings in a DB table and display them,
most recently used appearing first.

Change-Id: Icdb28e25c8d7037e7887ed249d47fe5bdbd4d53e
---
M wikipedia/AndroidManifest.xml
M wikipedia/res/layout/fragment_search.xml
A wikipedia/res/layout/fragment_search_recent.xml
A wikipedia/res/layout/item_search_recent.xml
M wikipedia/src/main/java/org/wikipedia/WikipediaApp.java
M wikipedia/src/main/java/org/wikipedia/data/DBOpenHelper.java
M wikipedia/src/main/java/org/wikipedia/history/HistoryFragment.java
A wikipedia/src/main/java/org/wikipedia/search/RecentSearch.java
A wikipedia/src/main/java/org/wikipedia/search/RecentSearchContentProvider.java
A 
wikipedia/src/main/java/org/wikipedia/search/RecentSearchPersistanceHelper.java
A wikipedia/src/main/java/org/wikipedia/search/RecentSearchPersister.java
A wikipedia/src/main/java/org/wikipedia/search/RecentSearchesFragment.java
M wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
13 files changed, 420 insertions(+), 32 deletions(-)

Approvals:
  Dbrant: Looks good to me, approved



diff --git a/wikipedia/AndroidManifest.xml b/wikipedia/AndroidManifest.xml
index 488eb9f..a454ac6 100644
--- a/wikipedia/AndroidManifest.xml
+++ b/wikipedia/AndroidManifest.xml
@@ -117,6 +117,11 @@
                 />
 
         <provider
+                android:authorities="${applicationId}.recentsearches"
+                android:name=".search.RecentSearchContentProvider"
+                />
+
+        <provider
                 android:authorities="${applicationId}.savedpages"
                 android:name=".savedpages.SavedPageContentProvider"
                 />
diff --git a/wikipedia/res/layout/fragment_search.xml 
b/wikipedia/res/layout/fragment_search.xml
index a3f2501..62b5349 100644
--- a/wikipedia/res/layout/fragment_search.xml
+++ b/wikipedia/res/layout/fragment_search.xml
@@ -58,20 +58,9 @@
 
     </LinearLayout>
 
-    <LinearLayout
+    <fragment android:layout_width="match_parent" 
android:layout_height="match_parent"
         android:id="@+id/search_panel_recent"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:padding="16dp"
-        android:orientation="vertical">
+        android:name="org.wikipedia.search.RecentSearchesFragment"
+        tools:layout="@layout/fragment_search_recent"/>
 
-        <TextView
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/search_recent_header" />
-
-        <!-- recent search list will go here -->
-
-    </LinearLayout>
-
-</FrameLayout>
\ No newline at end of file
+</FrameLayout>
diff --git a/wikipedia/res/layout/fragment_search_recent.xml 
b/wikipedia/res/layout/fragment_search_recent.xml
new file mode 100644
index 0000000..3b253b7
--- /dev/null
+++ b/wikipedia/res/layout/fragment_search_recent.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
+              android:orientation="vertical"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent"
+              android:id="@+id/recent_searches_container">
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_margin="8dp"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="@string/search_recent_header" />
+
+    <ListView
+        android:id="@+id/recent_searches_list"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        />
+</LinearLayout>
diff --git a/wikipedia/res/layout/item_search_recent.xml 
b/wikipedia/res/layout/item_search_recent.xml
new file mode 100644
index 0000000..ab40214
--- /dev/null
+++ b/wikipedia/res/layout/item_search_recent.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android";
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <TextView xmlns:android="http://schemas.android.com/apk/res/android";
+        style="?android:textAppearanceMedium"
+        android:id="@+id/text1"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:paddingTop="8dp"
+        android:paddingBottom="8dp"
+        android:paddingLeft="16dp"
+        android:paddingRight="16dp" />
+</LinearLayout>
diff --git a/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java 
b/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java
index 7afb693..d48f010 100644
--- a/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java
+++ b/wikipedia/src/main/java/org/wikipedia/WikipediaApp.java
@@ -37,6 +37,8 @@
 import org.wikipedia.pageimages.PageImagePersister;
 import org.wikipedia.savedpages.SavedPage;
 import org.wikipedia.savedpages.SavedPagePersister;
+import org.wikipedia.search.RecentSearch;
+import org.wikipedia.search.RecentSearchPersister;
 import org.wikipedia.settings.PrefKeys;
 import org.wikipedia.zero.WikipediaZeroHandler;
 import java.util.ArrayList;
@@ -353,6 +355,8 @@
                 persister = new HistoryEntryPersister(this);
             } else if (cls.equals(PageImage.class)) {
                 persister = new PageImagePersister(this);
+            } else if (cls.equals(RecentSearch.class)) {
+                persister = new RecentSearchPersister(this);
             } else if (cls.equals(SavedPage.class)) {
                 persister = new SavedPagePersister(this);
             } else if (cls.equals(EditSummary.class)) {
diff --git a/wikipedia/src/main/java/org/wikipedia/data/DBOpenHelper.java 
b/wikipedia/src/main/java/org/wikipedia/data/DBOpenHelper.java
index 9808d3d..eb91d60 100644
--- a/wikipedia/src/main/java/org/wikipedia/data/DBOpenHelper.java
+++ b/wikipedia/src/main/java/org/wikipedia/data/DBOpenHelper.java
@@ -7,11 +7,12 @@
 import org.wikipedia.editing.summaries.EditSummary;
 import org.wikipedia.history.HistoryEntry;
 import org.wikipedia.pageimages.PageImage;
+import org.wikipedia.search.RecentSearch;
 
 public class DBOpenHelper  extends SQLiteOpenHelper{
 
     private static final String DATABASE_NAME = "wikipedia.db";
-    private static final int DATABASE_VERSION = 4;
+    private static final int DATABASE_VERSION = 5;
 
     public DBOpenHelper(Context context) {
         super(context, DATABASE_NAME, null, DATABASE_VERSION);
@@ -20,6 +21,7 @@
     private PersistanceHelper[] persistanceHelpers = {
             HistoryEntry.PERSISTANCE_HELPER,
             PageImage.PERSISTANCE_HELPER,
+            RecentSearch.PERSISTANCE_HELPER,
             SavedPage.PERSISTANCE_HELPER,
             EditSummary.PERSISTANCE_HELPER
     };
diff --git a/wikipedia/src/main/java/org/wikipedia/history/HistoryFragment.java 
b/wikipedia/src/main/java/org/wikipedia/history/HistoryFragment.java
index 723dd7d..2ffa277 100644
--- a/wikipedia/src/main/java/org/wikipedia/history/HistoryFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/history/HistoryFragment.java
@@ -91,14 +91,14 @@
                     }
                 });
 
-            historyEntryList.setOnItemClickListener(new 
AdapterView.OnItemClickListener() {
-                @Override
-                public void onItemClick(AdapterView<?> parent, View view, int 
position, long id) {
-                    HistoryEntry oldEntry = (HistoryEntry) view.getTag();
-                    HistoryEntry newEntry = new 
HistoryEntry(oldEntry.getTitle(), HistoryEntry.SOURCE_HISTORY);
-                    app.getBus().post(new 
NewWikiPageNavigationEvent(oldEntry.getTitle(), newEntry));
-                }
-            });
+        historyEntryList.setOnItemClickListener(new 
AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int 
position, long id) {
+                HistoryEntry oldEntry = (HistoryEntry) view.getTag();
+                HistoryEntry newEntry = new HistoryEntry(oldEntry.getTitle(), 
HistoryEntry.SOURCE_HISTORY);
+                app.getBus().post(new 
NewWikiPageNavigationEvent(oldEntry.getTitle(), newEntry));
+            }
+        });
 
         getActivity().getSupportLoaderManager().initLoader(0, null, this);
         getActivity().getSupportLoaderManager().restartLoader(0, null, this);
diff --git a/wikipedia/src/main/java/org/wikipedia/search/RecentSearch.java 
b/wikipedia/src/main/java/org/wikipedia/search/RecentSearch.java
new file mode 100644
index 0000000..ea907d2
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/search/RecentSearch.java
@@ -0,0 +1,78 @@
+package org.wikipedia.search;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+import java.util.Date;
+
+public class RecentSearch implements Parcelable {
+    public static final RecentSearchPersistanceHelper PERSISTANCE_HELPER = new 
RecentSearchPersistanceHelper();
+
+    private final String text;
+    private final Date timestamp;
+
+    public RecentSearch(String text) {
+        this(text, new Date());
+    }
+
+    public RecentSearch(String text, Date timestamp) {
+        this.text = text;
+        this.timestamp = timestamp;
+    }
+
+    public String getText() {
+        return text;
+    }
+
+    public Date getTimestamp() {
+        return timestamp;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (!(o instanceof RecentSearch)) {
+            return false;
+        }
+        RecentSearch other = (RecentSearch) o;
+        return text.equals(other.text);
+    }
+
+    @Override
+    public int hashCode() {
+        return text.hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "RecentSearch{"
+                + "text=" + text
+                + ", timestamp=" + timestamp.getTime()
+                + '}';
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeString(getText());
+        dest.writeLong(getTimestamp().getTime());
+    }
+
+    private RecentSearch(Parcel in) {
+        this.text = in.readString();
+        this.timestamp = new Date(in.readLong());
+    }
+
+    public static final Creator<RecentSearch> CREATOR
+            = new Creator<RecentSearch>() {
+        public RecentSearch createFromParcel(Parcel in) {
+            return new RecentSearch(in);
+        }
+
+        public RecentSearch[] newArray(int size) {
+            return new RecentSearch[size];
+        }
+    };
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/RecentSearchContentProvider.java 
b/wikipedia/src/main/java/org/wikipedia/search/RecentSearchContentProvider.java
new file mode 100644
index 0000000..0b5bdb2
--- /dev/null
+++ 
b/wikipedia/src/main/java/org/wikipedia/search/RecentSearchContentProvider.java
@@ -0,0 +1,16 @@
+package org.wikipedia.search;
+
+import org.wikipedia.WikipediaApp;
+import org.wikipedia.data.DBOpenHelper;
+import org.wikipedia.data.SQLiteContentProvider;
+
+public class RecentSearchContentProvider extends 
SQLiteContentProvider<RecentSearch> {
+    public RecentSearchContentProvider() {
+        super(RecentSearch.PERSISTANCE_HELPER);
+    }
+
+    @Override
+    protected DBOpenHelper getDbOpenHelper() {
+        return 
((WikipediaApp)getContext().getApplicationContext()).getDbOpenHelper();
+    }
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/RecentSearchPersistanceHelper.java
 
b/wikipedia/src/main/java/org/wikipedia/search/RecentSearchPersistanceHelper.java
new file mode 100644
index 0000000..d783fde
--- /dev/null
+++ 
b/wikipedia/src/main/java/org/wikipedia/search/RecentSearchPersistanceHelper.java
@@ -0,0 +1,66 @@
+package org.wikipedia.search;
+
+import org.wikipedia.data.PersistanceHelper;
+import android.content.ContentValues;
+import android.database.Cursor;
+import java.util.Date;
+
+public class RecentSearchPersistanceHelper extends 
PersistanceHelper<RecentSearch> {
+
+    private static final int DB_VER_INTRODUCED = 5;
+
+    private static final int COL_INDEX_TEXT = 1;
+    private static final int COL_INDEX_TIMESTAMP = 2;
+
+    @Override
+    public RecentSearch fromCursor(Cursor c) {
+        // Carefully, get them back by using position only
+        String title = c.getString(COL_INDEX_TEXT);
+        Date timestamp = new Date(c.getLong(COL_INDEX_TIMESTAMP));
+        return new RecentSearch(title, timestamp);
+    }
+
+    @Override
+    protected ContentValues toContentValues(RecentSearch obj) {
+        ContentValues contentValues = new ContentValues();
+        contentValues.put("text", obj.getText());
+        contentValues.put("timestamp", obj.getTimestamp().getTime());
+        return contentValues;
+    }
+
+    @Override
+    public String getTableName() {
+        return "recentsearches";
+    }
+
+    @Override
+    protected int getDBVersionIntroducedAt() {
+        return DB_VER_INTRODUCED;
+    }
+
+    @Override
+    public Column[] getColumnsAdded(int version) {
+        switch (version) {
+            case DB_VER_INTRODUCED:
+                return new Column[] {
+                        new Column("_id", "integer primary key"),
+                        new Column("text", "string"),
+                        new Column("timestamp", "integer"),
+                };
+            default:
+                return new Column[0];
+        }
+    }
+
+    @Override
+    protected String getPrimaryKeySelection() {
+        return "text = ?";
+    }
+
+    @Override
+    protected String[] getPrimaryKeySelectionArgs(RecentSearch obj) {
+        return new String[] {
+                obj.getText(),
+        };
+    }
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/RecentSearchPersister.java 
b/wikipedia/src/main/java/org/wikipedia/search/RecentSearchPersister.java
new file mode 100644
index 0000000..a162d86
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/search/RecentSearchPersister.java
@@ -0,0 +1,19 @@
+package org.wikipedia.search;
+
+import org.wikipedia.data.ContentPersister;
+import org.wikipedia.data.SQLiteContentProvider;
+import android.content.Context;
+
+public class RecentSearchPersister extends ContentPersister<RecentSearch> {
+    public RecentSearchPersister(Context context) {
+        // lolJava
+        super(
+                context.getContentResolver().acquireContentProviderClient(
+                        SQLiteContentProvider.getAuthorityForTable(
+                                RecentSearch.PERSISTANCE_HELPER.getTableName()
+                        )
+                ),
+                RecentSearch.PERSISTANCE_HELPER
+        );
+    }
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/RecentSearchesFragment.java 
b/wikipedia/src/main/java/org/wikipedia/search/RecentSearchesFragment.java
new file mode 100644
index 0000000..942b9f1
--- /dev/null
+++ b/wikipedia/src/main/java/org/wikipedia/search/RecentSearchesFragment.java
@@ -0,0 +1,134 @@
+package org.wikipedia.search;
+
+import org.wikipedia.R;
+import android.content.Context;
+import android.database.Cursor;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.LoaderManager;
+import android.support.v4.content.CursorLoader;
+import android.support.v4.content.Loader;
+import android.support.v4.widget.CursorAdapter;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ListView;
+import android.widget.TextView;
+
+/** Displays a list of recent searches */
+public class RecentSearchesFragment extends Fragment implements 
LoaderManager.LoaderCallbacks<Cursor> {
+
+    private SearchArticlesFragment searchFragment;
+    private View container;
+    private ListView recentSearchesList;
+    private RecentSearchesAdapter adapter;
+
+    public RecentSearchesFragment() {
+    }
+
+    @Override
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) {
+        View rootView = inflater.inflate(R.layout.fragment_search_recent, 
container, false);
+        searchFragment = 
(SearchArticlesFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.search_fragment);
+        this.container = rootView.findViewById(R.id.recent_searches_container);
+        recentSearchesList = (ListView) 
rootView.findViewById(R.id.recent_searches_list);
+        return rootView;
+    }
+
+    public void show() {
+        container.setVisibility(View.VISIBLE);
+    }
+
+    public void hide() {
+        container.setVisibility(View.GONE);
+    }
+
+    public boolean isShowing() {
+        return container.getVisibility() == View.VISIBLE;
+    }
+
+    @Override
+    public void onActivityCreated(Bundle savedInstanceState) {
+        super.onActivityCreated(savedInstanceState);
+        adapter = new RecentSearchesAdapter(getActivity(), null, true);
+        recentSearchesList.setAdapter(adapter);
+
+        recentSearchesList.setOnItemClickListener(new 
AdapterView.OnItemClickListener() {
+            @Override
+            public void onItemClick(AdapterView<?> parent, View view, int 
position, long id) {
+                RecentSearch entry = (RecentSearch) view.getTag();
+                searchFragment.switchToTitleSearch(entry.getText());
+            }
+        });
+
+        getActivity().getSupportLoaderManager().initLoader(0, null, this);
+        getActivity().getSupportLoaderManager().restartLoader(0, null, this);
+    }
+
+    @Override
+    public void onDestroyView() {
+        getActivity().getSupportLoaderManager().destroyLoader(0);
+        super.onDestroyView();
+    }
+
+    @Override
+    public Loader<Cursor> onCreateLoader(int i, Bundle bundle) {
+        if (!isAdded()) {
+            return null;
+        }
+        return new CursorLoader(
+                getActivity(),
+                RecentSearch.PERSISTANCE_HELPER.getBaseContentURI(),
+                null,
+                null,
+                null,
+                "timestamp DESC");
+    }
+
+    @Override
+    public void onLoadFinished(Loader<Cursor> cursorLoaderLoader, Cursor 
cursorLoader) {
+        if (!isAdded()) {
+            return;
+        }
+        adapter.swapCursor(cursorLoader);
+        getActivity().supportInvalidateOptionsMenu();
+    }
+
+    @Override
+    public void onLoaderReset(Loader<Cursor> cursorLoaderLoader) {
+        adapter.changeCursor(null);
+    }
+
+    public void updateList() {
+        adapter.notifyDataSetChanged();
+    }
+
+    private class RecentSearchesAdapter extends CursorAdapter {
+        public RecentSearchesAdapter(Context context, Cursor c, boolean 
autoRequery) {
+            super(context, c, autoRequery);
+        }
+
+        @Override
+        public View newView(Context context, Cursor cursor, ViewGroup 
viewGroup) {
+            return 
getActivity().getLayoutInflater().inflate(R.layout.item_search_recent, 
viewGroup, false);
+        }
+
+        @Override
+        public void bindView(View view, Context context, Cursor cursor) {
+            TextView textView = (TextView) view.findViewById(R.id.text1);
+            RecentSearch entry = getEntry(cursor);
+            textView.setText(entry.getText());
+            view.setTag(entry);
+        }
+
+        @Override
+        public CharSequence convertToString(Cursor cursor) {
+            return getEntry(cursor).getText();
+        }
+
+        public RecentSearch getEntry(Cursor cursor) {
+            return RecentSearch.PERSISTANCE_HELPER.fromCursor(cursor);
+        }
+    }
+}
diff --git 
a/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java 
b/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
index b00be54..855bdae 100644
--- a/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/search/SearchArticlesFragment.java
@@ -4,6 +4,7 @@
 import org.wikipedia.R;
 import org.wikipedia.Utils;
 import org.wikipedia.WikipediaApp;
+import org.wikipedia.concurrency.SaneAsyncTask;
 import org.wikipedia.events.NewWikiPageNavigationEvent;
 import org.wikipedia.events.WikipediaZeroStateChangeEvent;
 import org.wikipedia.history.HistoryEntry;
@@ -16,6 +17,7 @@
 import android.support.v4.view.MenuItemCompat;
 import android.support.v7.widget.SearchView;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -61,16 +63,12 @@
     private View searchContainerView;
 
     /**
-     * View that contains the "recent searches" list.
-     */
-    private View recentSearchContainer;
-
-    /**
      * View that contains the two types of search result fragments (Title and 
Full), as well
      * as the buttons to switch between the two.
      */
     private View searchTypesContainer;
 
+    private RecentSearchesFragment recentSearchesFragment;
     private TitleSearchFragment titleSearchFragment;
     private FullSearchFragment fullSearchFragment;
 
@@ -103,7 +101,7 @@
             }
         });
 
-        recentSearchContainer = 
parentLayout.findViewById(R.id.search_panel_recent);
+        recentSearchesFragment = 
(RecentSearchesFragment)getActivity().getSupportFragmentManager().findFragmentById(R.id.search_panel_recent);
         searchTypesContainer = 
parentLayout.findViewById(R.id.search_panel_types);
 
         buttonTitleSearch = 
parentLayout.findViewById(R.id.button_search_title);
@@ -170,6 +168,15 @@
         outState.putString(ARG_LAST_SEARCHED_TEXT, lastSearchedText);
     }
 
+    public void switchToTitleSearch(String queryText) {
+        if (getActivePanel() == PANEL_TITLE_SEARCH) {
+            return;
+        }
+        showPanel(PANEL_TITLE_SEARCH);
+        startSearch(queryText, true);
+        searchView.setQuery(queryText, false);
+    }
+
     /**
      * Show a particular panel, which can be one of:
      * - PANEL_RECENT_SEARCHES
@@ -179,14 +186,14 @@
      * @param panel Which panel to show.
      */
     private void showPanel(int panel) {
-        recentSearchContainer.setVisibility(View.GONE);
         searchTypesContainer.setVisibility(View.GONE);
+        recentSearchesFragment.hide();
         titleSearchFragment.hide();
         fullSearchFragment.hide();
 
         switch (panel) {
             case PANEL_RECENT_SEARCHES:
-                recentSearchContainer.setVisibility(View.VISIBLE);
+                recentSearchesFragment.show();
                 break;
             case PANEL_TITLE_SEARCH:
                 searchTypesContainer.setVisibility(View.VISIBLE);
@@ -282,6 +289,7 @@
         // hide ourselves
         searchContainerView.setVisibility(View.GONE);
         Utils.hideSoftKeyboard(getActivity());
+        addRecentSearch(lastSearchedText);
     }
 
     /**
@@ -377,4 +385,35 @@
         closeSearch();
         app.getBus().post(new NewWikiPageNavigationEvent(title, historyEntry));
     }
+
+    private void addRecentSearch(String title) {
+        if (isValidQuery(title)) {
+            new SaveRecentSearchTask(new RecentSearch(title)).execute();
+        }
+    }
+
+    private final class SaveRecentSearchTask extends SaneAsyncTask<Void> {
+        private final RecentSearch entry;
+        public SaveRecentSearchTask(RecentSearch entry) {
+            super(SINGLE_THREAD);
+            this.entry = entry;
+        }
+
+        @Override
+        public Void performTask() throws Throwable {
+            app.getPersister(RecentSearch.class).upsert(entry);
+            return null;
+        }
+
+        @Override
+        public void onFinish(Void result) {
+            super.onFinish(result);
+            recentSearchesFragment.updateList();
+        }
+
+        @Override
+        public void onCatch(Throwable caught) {
+            Log.w("SaveRecentSearchTask", "Caught " + caught.getMessage(), 
caught);
+        }
+    }
 }

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

Gerrit-MessageType: merged
Gerrit-Change-Id: Icdb28e25c8d7037e7887ed249d47fe5bdbd4d53e
Gerrit-PatchSet: 5
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: BearND <[email protected]>
Gerrit-Reviewer: BearND <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Dbrant <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to