diff --git a/app/src/main/java/com/gianlu/aria2app/activities/SearchActivity.java b/app/src/main/java/com/gianlu/aria2app/activities/SearchActivity.java index 68bd84864..7896eed64 100644 --- a/app/src/main/java/com/gianlu/aria2app/activities/SearchActivity.java +++ b/app/src/main/java/com/gianlu/aria2app/activities/SearchActivity.java @@ -43,8 +43,10 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.snackbar.Snackbar; +import org.jetbrains.annotations.NotNull; import org.json.JSONException; +import java.util.Arrays; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -75,10 +77,10 @@ protected void onCreate(Bundle savedInstanceState) { rmv.linearLayoutManager(RecyclerView.VERTICAL, false); rmv.dividerDecoration(RecyclerView.VERTICAL); - final Button messageMore = findViewById(R.id.search_messageMore); + Button messageMore = findViewById(R.id.search_messageMore); messageMore.setOnClickListener(view -> { try { - startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://gianlu.xyz/projects/TorrentSearchEngine"))); + startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://swaggerhub.com/apis/devgianlu/torrent-search-engine"))); } catch (ActivityNotFoundException ex) { messageMore.setVisibility(View.GONE); } @@ -87,7 +89,7 @@ protected void onCreate(Bundle savedInstanceState) { searchApi = SearchApi.get(); } - private void showEnginesDialog(final List engines) { + private void showEnginesDialog(@NotNull List engines) { CharSequence[] enginesNames = new CharSequence[engines.size()]; for (int i = 0; i < engines.size(); i++) { @@ -99,7 +101,7 @@ private void showEnginesDialog(final List engines) { Set checkedEnginesSet = Prefs.getSet(PK.A2_SEARCH_ENGINES, null); if (checkedEnginesSet == null) { - for (int i = 0; i < checkedEngines.length; i++) checkedEngines[i] = true; + Arrays.fill(checkedEngines, true); } else { for (String checkedEngine : checkedEnginesSet) for (int i = 0; i < engines.size(); i++) @@ -146,7 +148,7 @@ public boolean onCreateOptionsMenu(Menu menu) { } @Override - public boolean onQueryTextSubmit(final String query) { + public boolean onQueryTextSubmit(@NotNull String query) { message.setVisibility(View.GONE); rmv.startLoading(); this.query = query; @@ -169,12 +171,14 @@ public boolean onClose() { rmv.hideList(); rmv.hideMessage(); searchView.setQuery(null, false); - this.query = null; return false; } @Override - public void onResult(List results, List missingEngines, @Nullable String nextPageToken) { + public void onResult(@Nullable String query, @NotNull List results, List missingEngines, @Nullable String nextPageToken) { + if (!Objects.equals(this.query, query)) + return; + message.setVisibility(View.GONE); rmv.loadListData(new SearchResultsAdapter(this, results, nextPageToken, this)); @@ -189,7 +193,7 @@ public void onException(@NonNull Exception ex) { } @Override - public boolean onOptionsItemSelected(MenuItem item) { + public boolean onOptionsItemSelected(@NotNull MenuItem item) { if (item.getItemId() == R.id.search_engines) { showProgress(R.string.gathering_information); searchApi.listSearchEngines(this, new SearchApi.OnResult>() { @@ -248,7 +252,7 @@ private void showMissingEnginesDialog(List missingEngines) showDialog(builder); } - private void showTorrentDialog(final Torrent torrent) { + private void showTorrentDialog(@NotNull Torrent torrent) { LinearLayout layout = (LinearLayout) getLayoutInflater().inflate(R.layout.dialog_torrent, null, false); SuperTextView engine = layout.findViewById(R.id.torrentDialog_engine); SuperTextView size = layout.findViewById(R.id.torrentDialog_size); diff --git a/app/src/main/java/com/gianlu/aria2app/adapters/SearchResultsAdapter.java b/app/src/main/java/com/gianlu/aria2app/adapters/SearchResultsAdapter.java index aa73fd8d6..2ce46d355 100644 --- a/app/src/main/java/com/gianlu/aria2app/adapters/SearchResultsAdapter.java +++ b/app/src/main/java/com/gianlu/aria2app/adapters/SearchResultsAdapter.java @@ -10,11 +10,11 @@ import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; +import com.gianlu.aria2app.R; import com.gianlu.aria2app.api.search.MissingSearchEngine; import com.gianlu.aria2app.api.search.SearchApi; import com.gianlu.aria2app.api.search.SearchEngine; import com.gianlu.aria2app.api.search.SearchResult; -import com.gianlu.aria2app.R; import com.gianlu.commonutils.misc.InfiniteRecyclerView; import java.util.ArrayList; @@ -75,7 +75,7 @@ protected void moreContent(int page, @NonNull ContentProvider prov } else { searchApi.search(token, SearchApi.RESULTS_PER_REQUEST, null, new SearchApi.OnSearch() { @Override - public void onResult(List results, List missingEngines, @Nullable String nextPageToken) { + public void onResult(@Nullable String query, @NonNull List results, List missingEngines, @Nullable String nextPageToken) { token = nextPageToken; provider.onMoreContent(results); diff --git a/app/src/main/java/com/gianlu/aria2app/api/search/SearchApi.java b/app/src/main/java/com/gianlu/aria2app/api/search/SearchApi.java index 867c6ab9d..539f98f02 100644 --- a/app/src/main/java/com/gianlu/aria2app/api/search/SearchApi.java +++ b/app/src/main/java/com/gianlu/aria2app/api/search/SearchApi.java @@ -108,7 +108,7 @@ public void run() { missingEngines.add(new MissingSearchEngine(SearchApi.this, missingEnginesArray.getJSONObject(i))); String newToken = CommonUtils.optString(obj, "token"); - post(() -> listener.onResult(results, missingEngines, newToken)); + post(() -> listener.onResult(query, results, missingEngines, newToken)); } catch (IOException | StatusCodeException | JSONException ex) { post(() -> listener.onException(ex)); } @@ -197,7 +197,7 @@ public void cacheSearchEngines() { @UiThread public interface OnSearch { - void onResult(List results, List missingEngines, @Nullable String nextPageToken); + void onResult(@Nullable String query, @NonNull List results, List missingEngines, @Nullable String nextPageToken); void onException(@NonNull Exception ex); }