183 lines
8.9 KiB
Java
183 lines
8.9 KiB
Java
|
package com.discord.stores;
|
||
|
|
||
|
import android.content.Context;
|
||
|
import c.a.d.q;
|
||
|
import com.discord.models.domain.ModelSearchResponse;
|
||
|
import com.discord.models.message.Message;
|
||
|
import com.discord.stores.StoreSearch;
|
||
|
import com.discord.utilities.rx.ObservableExtensionsKt;
|
||
|
import com.discord.utilities.search.network.SearchFetcher;
|
||
|
import com.discord.utilities.search.network.SearchQuery;
|
||
|
import com.discord.utilities.search.network.state.QueryFetchState;
|
||
|
import com.discord.utilities.search.network.state.SearchState;
|
||
|
import com.discord.utilities.search.strings.SearchStringProvider;
|
||
|
import d0.g0.t;
|
||
|
import d0.t.o;
|
||
|
import d0.t.u;
|
||
|
import d0.z.d.m;
|
||
|
import j0.l.e.j;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.Collection;
|
||
|
import java.util.List;
|
||
|
import java.util.concurrent.TimeUnit;
|
||
|
import kotlin.jvm.functions.Function0;
|
||
|
import kotlin.jvm.functions.Function1;
|
||
|
import kotlin.jvm.internal.DefaultConstructorMarker;
|
||
|
import rx.Observable;
|
||
|
import rx.Subscription;
|
||
|
import rx.subjects.BehaviorSubject;
|
||
|
import rx.subjects.SerializedSubject;
|
||
|
/* compiled from: StoreSearchQuery.kt */
|
||
|
public final class StoreSearchQuery {
|
||
|
public static final Companion Companion = new Companion(null);
|
||
|
private static final SearchState SEARCH_STATE_NONE = new SearchState(QueryFetchState.NONE, null, null, null, null, false, 0, 126, null);
|
||
|
private SearchState currentSearchState;
|
||
|
private Subscription querySubscription;
|
||
|
private final SearchFetcher searchFetcher;
|
||
|
private final SerializedSubject<SearchState, SearchState> searchStateSubject;
|
||
|
|
||
|
/* compiled from: StoreSearchQuery.kt */
|
||
|
public static final class Companion {
|
||
|
private Companion() {
|
||
|
}
|
||
|
|
||
|
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
|
||
|
this();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public StoreSearchQuery(SearchFetcher searchFetcher) {
|
||
|
m.checkNotNullParameter(searchFetcher, "searchFetcher");
|
||
|
this.searchFetcher = searchFetcher;
|
||
|
SearchState searchState = SEARCH_STATE_NONE;
|
||
|
this.searchStateSubject = new SerializedSubject<>(BehaviorSubject.l0(searchState));
|
||
|
this.currentSearchState = searchState;
|
||
|
}
|
||
|
|
||
|
public static final /* synthetic */ Subscription access$getQuerySubscription$p(StoreSearchQuery storeSearchQuery) {
|
||
|
return storeSearchQuery.querySubscription;
|
||
|
}
|
||
|
|
||
|
public static final /* synthetic */ void access$handleError(StoreSearchQuery storeSearchQuery) {
|
||
|
storeSearchQuery.handleError();
|
||
|
}
|
||
|
|
||
|
public static final /* synthetic */ void access$handleResponse(StoreSearchQuery storeSearchQuery, SearchQuery searchQuery, ModelSearchResponse modelSearchResponse, boolean z2) {
|
||
|
storeSearchQuery.handleResponse(searchQuery, modelSearchResponse, z2);
|
||
|
}
|
||
|
|
||
|
public static final /* synthetic */ void access$performInitialLoad(StoreSearchQuery storeSearchQuery, StoreSearch.SearchTarget searchTarget, SearchQuery searchQuery) {
|
||
|
storeSearchQuery.performInitialLoad(searchTarget, searchQuery);
|
||
|
}
|
||
|
|
||
|
public static final /* synthetic */ void access$setQuerySubscription$p(StoreSearchQuery storeSearchQuery, Subscription subscription) {
|
||
|
storeSearchQuery.querySubscription = subscription;
|
||
|
}
|
||
|
|
||
|
private final void handleError() {
|
||
|
updateAndPublish(new SearchState(QueryFetchState.FAILED, null, null, null, null, false, 0, 126, null));
|
||
|
}
|
||
|
|
||
|
private final synchronized void handleResponse(SearchQuery searchQuery, ModelSearchResponse modelSearchResponse, boolean z2) {
|
||
|
SearchState searchState;
|
||
|
int totalResults;
|
||
|
List arrayList;
|
||
|
Integer errorCode = modelSearchResponse.getErrorCode();
|
||
|
if (errorCode == null) {
|
||
|
if (z2) {
|
||
|
totalResults = modelSearchResponse.getTotalResults();
|
||
|
arrayList = new ArrayList();
|
||
|
} else {
|
||
|
totalResults = this.currentSearchState.getTotalResults();
|
||
|
List<Message> hits = this.currentSearchState.getHits();
|
||
|
if (hits == null || (arrayList = u.toMutableList((Collection) hits)) == null) {
|
||
|
arrayList = new ArrayList();
|
||
|
}
|
||
|
}
|
||
|
List<com.discord.api.message.Message> hits2 = modelSearchResponse.getHits();
|
||
|
ArrayList arrayList2 = new ArrayList(o.collectionSizeOrDefault(hits2, 10));
|
||
|
for (com.discord.api.message.Message message : hits2) {
|
||
|
arrayList2.add(new Message(message));
|
||
|
}
|
||
|
arrayList.addAll(arrayList2);
|
||
|
searchState = new SearchState(QueryFetchState.COMPLETED, searchQuery, modelSearchResponse.getThreads(), modelSearchResponse.getMembers(), arrayList, totalResults > arrayList.size(), totalResults);
|
||
|
} else {
|
||
|
searchState = errorCode.intValue() == 111000 ? new SearchState(QueryFetchState.INDEXING, searchQuery, null, null, null, false, 0, 124, null) : new SearchState(QueryFetchState.FAILED, searchQuery, null, null, null, false, 0, 124, null);
|
||
|
}
|
||
|
updateAndPublish(searchState);
|
||
|
}
|
||
|
|
||
|
private final void makeQuery(SearchQuery searchQuery, StoreSearch.SearchTarget searchTarget, Long l, boolean z2) {
|
||
|
ObservableExtensionsKt.appSubscribe$default(this.searchFetcher.makeQuery(searchTarget, l, searchQuery), (Context) null, "makeQuery", new StoreSearchQuery$makeQuery$2(this), new StoreSearchQuery$makeQuery$1(this, searchQuery, z2), new StoreSearchQuery$makeQuery$3(this), (Function0) null, (Function0) null, 97, (Object) null);
|
||
|
}
|
||
|
|
||
|
public static /* synthetic */ void makeQuery$default(StoreSearchQuery storeSearchQuery, SearchQuery searchQuery, StoreSearch.SearchTarget searchTarget, Long l, boolean z2, int i, Object obj) {
|
||
|
if ((i & 4) != 0) {
|
||
|
l = null;
|
||
|
}
|
||
|
if ((i & 8) != 0) {
|
||
|
z2 = true;
|
||
|
}
|
||
|
storeSearchQuery.makeQuery(searchQuery, searchTarget, l, z2);
|
||
|
}
|
||
|
|
||
|
private final void performInitialLoad(StoreSearch.SearchTarget searchTarget, SearchQuery searchQuery) {
|
||
|
unsubscribe();
|
||
|
makeQuery$default(this, searchQuery, searchTarget, null, false, 12, null);
|
||
|
}
|
||
|
|
||
|
private final synchronized void unsubscribe() {
|
||
|
Subscription subscription = this.querySubscription;
|
||
|
if (subscription != null) {
|
||
|
subscription.unsubscribe();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private final synchronized void updateAndPublish(SearchState searchState) {
|
||
|
this.currentSearchState = searchState;
|
||
|
this.searchStateSubject.j.onNext(searchState);
|
||
|
}
|
||
|
|
||
|
public final void clear() {
|
||
|
unsubscribe();
|
||
|
updateAndPublish(SEARCH_STATE_NONE);
|
||
|
}
|
||
|
|
||
|
public final Observable<SearchState> getState() {
|
||
|
Observable<SearchState> r = this.searchStateSubject.r();
|
||
|
m.checkNotNullExpressionValue(r, "searchStateSubject\n .distinctUntilChanged()");
|
||
|
return r;
|
||
|
}
|
||
|
|
||
|
public final synchronized void loadMore(StoreSearch.SearchTarget searchTarget, long j) {
|
||
|
m.checkNotNullParameter(searchTarget, "searchTarget");
|
||
|
SearchQuery searchQuery = this.currentSearchState.getSearchQuery();
|
||
|
if (searchQuery == null) {
|
||
|
return;
|
||
|
}
|
||
|
if (this.currentSearchState.getQueryFetchState() == QueryFetchState.COMPLETED) {
|
||
|
if (this.currentSearchState.getHasMore()) {
|
||
|
unsubscribe();
|
||
|
updateAndPublish(new SearchState(QueryFetchState.LOADING_MORE, searchQuery, this.currentSearchState.getThreads(), this.currentSearchState.getThreadMembers(), this.currentSearchState.getHits(), false, this.currentSearchState.getTotalResults()));
|
||
|
makeQuery(searchQuery, searchTarget, Long.valueOf(j), false);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public final void parseAndQuery(StoreSearch storeSearch, StoreSearch.SearchTarget searchTarget, String str, SearchStringProvider searchStringProvider, boolean z2) {
|
||
|
m.checkNotNullParameter(storeSearch, "searchStore");
|
||
|
m.checkNotNullParameter(searchTarget, "searchTarget");
|
||
|
m.checkNotNullParameter(str, "queryString");
|
||
|
m.checkNotNullParameter(searchStringProvider, "searchStringProvider");
|
||
|
unsubscribe();
|
||
|
if (!t.isBlank(str)) {
|
||
|
updateAndPublish(new SearchState(QueryFetchState.IN_PROGRESS, null, null, null, null, false, 0, 126, null));
|
||
|
Observable Z = Observable.j0(new j(str).F(new StoreSearchQuery$parseAndQuery$1(searchStringProvider)), storeSearch.getStoreSearchData().get(), new StoreSearchQuery$parseAndQuery$2(storeSearch, searchTarget, z2)).k(q.c(StoreSearchQuery$parseAndQuery$3.INSTANCE, null, 1, TimeUnit.SECONDS)).Z(1);
|
||
|
m.checkNotNullExpressionValue(Z, "Observable\n .… )\n .take(1)");
|
||
|
ObservableExtensionsKt.appSubscribe$default(ObservableExtensionsKt.computationBuffered(Z), (Context) null, "parseAndQuery", (Function1) null, new StoreSearchQuery$parseAndQuery$4(this, searchTarget), (Function1) null, (Function0) null, (Function0) null, 117, (Object) null);
|
||
|
return;
|
||
|
}
|
||
|
updateAndPublish(new SearchState(QueryFetchState.NONE, null, null, null, null, false, 0, 126, null));
|
||
|
}
|
||
|
}
|