mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-11-04 09:13:00 +00:00 
			
		
		
		
	Fix order of local search results
This commit is contained in:
		@@ -19,6 +19,7 @@ import static org.schabi.newpipe.database.history.model.SearchHistoryEntry.TABLE
 | 
			
		||||
@Dao
 | 
			
		||||
public interface SearchHistoryDAO extends HistoryDAO<SearchHistoryEntry> {
 | 
			
		||||
    String ORDER_BY_CREATION_DATE = " ORDER BY " + CREATION_DATE + " DESC";
 | 
			
		||||
    String ORDER_BY_MAX_CREATION_DATE = " ORDER BY MAX(" + CREATION_DATE + ") DESC";
 | 
			
		||||
 | 
			
		||||
    @Query("SELECT * FROM " + TABLE_NAME
 | 
			
		||||
            + " WHERE " + ID + " = (SELECT MAX(" + ID + ") FROM " + TABLE_NAME + ")")
 | 
			
		||||
@@ -36,16 +37,16 @@ public interface SearchHistoryDAO extends HistoryDAO<SearchHistoryEntry> {
 | 
			
		||||
    @Override
 | 
			
		||||
    Flowable<List<SearchHistoryEntry>> getAll();
 | 
			
		||||
 | 
			
		||||
    @Query("SELECT * FROM " + TABLE_NAME + " GROUP BY " + SEARCH + ORDER_BY_CREATION_DATE
 | 
			
		||||
            + " LIMIT :limit")
 | 
			
		||||
    Flowable<List<SearchHistoryEntry>> getUniqueEntries(int limit);
 | 
			
		||||
    @Query("SELECT " + SEARCH + " FROM " + TABLE_NAME + " GROUP BY " + SEARCH
 | 
			
		||||
            + ORDER_BY_MAX_CREATION_DATE + " LIMIT :limit")
 | 
			
		||||
    Flowable<List<String>> getUniqueEntries(int limit);
 | 
			
		||||
 | 
			
		||||
    @Query("SELECT * FROM " + TABLE_NAME
 | 
			
		||||
            + " WHERE " + SERVICE_ID + " = :serviceId" + ORDER_BY_CREATION_DATE)
 | 
			
		||||
    @Override
 | 
			
		||||
    Flowable<List<SearchHistoryEntry>> listByService(int serviceId);
 | 
			
		||||
 | 
			
		||||
    @Query("SELECT * FROM " + TABLE_NAME + " WHERE " + SEARCH + " LIKE :query || '%'"
 | 
			
		||||
            + " GROUP BY " + SEARCH + " LIMIT :limit")
 | 
			
		||||
    Flowable<List<SearchHistoryEntry>> getSimilarEntries(String query, int limit);
 | 
			
		||||
    @Query("SELECT " + SEARCH + " FROM " + TABLE_NAME + " WHERE " + SEARCH + " LIKE :query || '%'"
 | 
			
		||||
            + " GROUP BY " + SEARCH + ORDER_BY_MAX_CREATION_DATE + " LIMIT :limit")
 | 
			
		||||
    Flowable<List<String>> getSimilarEntries(String query, int limit);
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,10 @@
 | 
			
		||||
package org.schabi.newpipe.fragments.list.search;
 | 
			
		||||
 | 
			
		||||
import static androidx.recyclerview.widget.ItemTouchHelper.Callback.makeMovementFlags;
 | 
			
		||||
import static org.schabi.newpipe.ktx.ViewUtils.animate;
 | 
			
		||||
import static org.schabi.newpipe.util.ExtractorHelper.showMetaInfoInTextView;
 | 
			
		||||
import static java.util.Arrays.asList;
 | 
			
		||||
 | 
			
		||||
import android.app.Activity;
 | 
			
		||||
import android.content.Context;
 | 
			
		||||
import android.content.Intent;
 | 
			
		||||
@@ -36,7 +41,6 @@ import androidx.recyclerview.widget.ItemTouchHelper;
 | 
			
		||||
import androidx.recyclerview.widget.RecyclerView;
 | 
			
		||||
 | 
			
		||||
import org.schabi.newpipe.R;
 | 
			
		||||
import org.schabi.newpipe.database.history.model.SearchHistoryEntry;
 | 
			
		||||
import org.schabi.newpipe.databinding.FragmentSearchBinding;
 | 
			
		||||
import org.schabi.newpipe.error.ErrorActivity;
 | 
			
		||||
import org.schabi.newpipe.error.ErrorInfo;
 | 
			
		||||
@@ -68,12 +72,11 @@ import java.util.ArrayList;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import java.util.Queue;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
import java.util.concurrent.TimeUnit;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
 | 
			
		||||
import icepick.State;
 | 
			
		||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
 | 
			
		||||
@@ -84,11 +87,6 @@ import io.reactivex.rxjava3.disposables.Disposable;
 | 
			
		||||
import io.reactivex.rxjava3.schedulers.Schedulers;
 | 
			
		||||
import io.reactivex.rxjava3.subjects.PublishSubject;
 | 
			
		||||
 | 
			
		||||
import static androidx.recyclerview.widget.ItemTouchHelper.Callback.makeMovementFlags;
 | 
			
		||||
import static java.util.Arrays.asList;
 | 
			
		||||
import static org.schabi.newpipe.ktx.ViewUtils.animate;
 | 
			
		||||
import static org.schabi.newpipe.util.ExtractorHelper.showMetaInfoInTextView;
 | 
			
		||||
 | 
			
		||||
public class SearchFragment extends BaseListFragment<SearchInfo, ListExtractor.InfoItemsPage<?>>
 | 
			
		||||
        implements BackPressable {
 | 
			
		||||
    /*//////////////////////////////////////////////////////////////////////////
 | 
			
		||||
@@ -743,13 +741,10 @@ public class SearchFragment extends BaseListFragment<SearchInfo, ListExtractor.I
 | 
			
		||||
        return historyRecordManager
 | 
			
		||||
                .getRelatedSearches(query, similarQueryLimit, 25)
 | 
			
		||||
                .toObservable()
 | 
			
		||||
                .map(searchHistoryEntries -> {
 | 
			
		||||
                    final Set<SuggestionItem> result = new HashSet<>(); // remove duplicates
 | 
			
		||||
                    for (final SearchHistoryEntry entry : searchHistoryEntries) {
 | 
			
		||||
                        result.add(new SuggestionItem(true, entry.getSearch()));
 | 
			
		||||
                    }
 | 
			
		||||
                    return new ArrayList<>(result);
 | 
			
		||||
                });
 | 
			
		||||
                .map(searchHistoryEntries ->
 | 
			
		||||
                    searchHistoryEntries.stream()
 | 
			
		||||
                            .map(entry -> new SuggestionItem(true, entry))
 | 
			
		||||
                            .collect(Collectors.toList()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private Observable<List<SuggestionItem>> getRemoteSuggestionsObservable(final String query) {
 | 
			
		||||
 
 | 
			
		||||
@@ -244,9 +244,9 @@ public class HistoryRecordManager {
 | 
			
		||||
                .subscribeOn(Schedulers.io());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public Flowable<List<SearchHistoryEntry>> getRelatedSearches(final String query,
 | 
			
		||||
                                                                 final int similarQueryLimit,
 | 
			
		||||
                                                                 final int uniqueQueryLimit) {
 | 
			
		||||
    public Flowable<List<String>> getRelatedSearches(final String query,
 | 
			
		||||
                                                     final int similarQueryLimit,
 | 
			
		||||
                                                     final int uniqueQueryLimit) {
 | 
			
		||||
        return query.length() > 0
 | 
			
		||||
                ? searchHistoryTable.getSimilarEntries(query, similarQueryLimit)
 | 
			
		||||
                : searchHistoryTable.getUniqueEntries(uniqueQueryLimit);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user