Merge pull request #3690 from jamierocks/ftb-search-edge

NOISSUE Fix edgecase where new searches won't be processed
This commit is contained in:
Petr Mrázek 2021-03-26 20:37:48 +00:00 committed by GitHub
commit 5400d4e613
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 19 deletions

View File

@ -106,21 +106,22 @@ void ListModel::getLogo(const QString &logo, const QString &logoUrl, LogoCallbac
void ListModel::searchWithTerm(const QString &term) void ListModel::searchWithTerm(const QString &term)
{ {
if(currentSearchTerm == term && currentSearchTerm.isNull() == term.isNull()) { if(searchState != Failed && currentSearchTerm == term && currentSearchTerm.isNull() == term.isNull()) {
// unless the search has failed, then there is no need to perform an identical search.
return; return;
} }
currentSearchTerm = term; currentSearchTerm = term;
if(jobPtr) { if(jobPtr) {
jobPtr->abort(); jobPtr->abort();
searchState = ResetRequested; jobPtr.reset();
return;
} }
else {
beginResetModel(); beginResetModel();
modpacks.clear(); modpacks.clear();
endResetModel(); endResetModel();
searchState = None; searchState = None;
}
performSearch(); performSearch();
} }
@ -154,15 +155,7 @@ void ListModel::searchRequestFailed(QString reason)
jobPtr.reset(); jobPtr.reset();
remainingPacks.clear(); remainingPacks.clear();
if(searchState == ResetRequested) { searchState = Failed;
beginResetModel();
modpacks.clear();
endResetModel();
performSearch();
} else {
searchState = Finished;
}
} }
void ListModel::requestPack() void ListModel::requestPack()

View File

@ -57,7 +57,8 @@ private:
None, None,
CanPossiblyFetchMore, CanPossiblyFetchMore,
ResetRequested, ResetRequested,
Finished Finished,
Failed,
} searchState = None; } searchState = None;
NetJobPtr jobPtr; NetJobPtr jobPtr;
int currentPack; int currentPack;