fix the refresh button not actually forcing a cache reset on server mods

This commit is contained in:
HJfod 2024-04-22 13:45:10 +03:00
parent adcd42e42b
commit 3b58ed3ae2
2 changed files with 13 additions and 13 deletions
loader/src/ui/mods/sources

View file

@ -104,12 +104,12 @@ ListenerResult InvalidateCacheFilter::handle(MiniFunction<Callback> fn, Invalida
InvalidateCacheFilter::InvalidateCacheFilter(ModListSource* src) : m_source(src) {}
typename ModListSource::PageLoadTask ModListSource::loadPage(size_t page, bool update) {
if (!update && m_cachedPages.contains(page)) {
typename ModListSource::PageLoadTask ModListSource::loadPage(size_t page, bool forceUpdate) {
if (!forceUpdate && m_cachedPages.contains(page)) {
return PageLoadTask::immediate(Ok(m_cachedPages.at(page)));
}
m_cachedPages.erase(page);
return this->fetchPage(page, PER_PAGE).map(
return this->fetchPage(page, PER_PAGE, forceUpdate).map(
[this, page](Result<ProvidedMods, LoadPageError>* result) -> Result<Page, LoadPageError> {
if (result->isOk()) {
auto data = result->unwrap();
@ -178,7 +178,7 @@ void InstalledModListSource::resetQuery() {
};
}
InstalledModListSource::ProviderTask InstalledModListSource::fetchPage(size_t page, size_t pageSize) {
InstalledModListSource::ProviderTask InstalledModListSource::fetchPage(size_t page, size_t pageSize, bool forceUpdate) {
m_query.page = page;
m_query.pageSize = pageSize;
@ -277,10 +277,10 @@ void ServerModListSource::resetQuery() {
}
}
ServerModListSource::ProviderTask ServerModListSource::fetchPage(size_t page, size_t pageSize) {
ServerModListSource::ProviderTask ServerModListSource::fetchPage(size_t page, size_t pageSize, bool forceUpdate) {
m_query.page = page;
m_query.pageSize = pageSize;
return server::getMods(m_query).map(
return server::getMods(m_query, !forceUpdate).map(
[](Result<server::ServerModsList, server::ServerError>* result) -> ProviderTask::Value {
if (result->isOk()) {
auto list = result->unwrap();
@ -355,7 +355,7 @@ bool ServerModListSource::wantsRestart() const {
}
void ModPackListSource::resetQuery() {}
ModPackListSource::ProviderTask ModPackListSource::fetchPage(size_t page, size_t pageSize) {
ModPackListSource::ProviderTask ModPackListSource::fetchPage(size_t page, size_t pageSize, bool forceUpdate) {
return ProviderTask::immediate(Err(LoadPageError("Coming soon ;)")));
}

View file

@ -60,7 +60,7 @@ protected:
std::optional<size_t> m_cachedItemCount;
virtual void resetQuery() = 0;
virtual ProviderTask fetchPage(size_t page, size_t pageSize) = 0;
virtual ProviderTask fetchPage(size_t page, size_t pageSize, bool forceUpdate) = 0;
virtual void setSearchQuery(std::string const& query) = 0;
ModListSource();
@ -77,8 +77,8 @@ public:
virtual std::unordered_set<std::string> getModTags() const = 0;
virtual void setModTags(std::unordered_set<std::string> const& tags) = 0;
// Load page, uses cache if possible unless `update` is true
PageLoadTask loadPage(size_t page, bool update = false);
// Load page, uses cache if possible unless `forceUpdate` is true
PageLoadTask loadPage(size_t page, bool forceUpdate = false);
std::optional<size_t> getPageCount() const;
std::optional<size_t> getItemCount() const;
@ -110,7 +110,7 @@ protected:
InstalledModsQuery m_query;
void resetQuery() override;
ProviderTask fetchPage(size_t page, size_t pageSize) override;
ProviderTask fetchPage(size_t page, size_t pageSize, bool forceUpdate) override;
void setSearchQuery(std::string const& query) override;
InstalledModListSource(bool onlyUpdates);
@ -140,7 +140,7 @@ protected:
server::ModsQuery m_query;
void resetQuery() override;
ProviderTask fetchPage(size_t page, size_t pageSize) override;
ProviderTask fetchPage(size_t page, size_t pageSize, bool forceUpdate) override;
void setSearchQuery(std::string const& query) override;
ServerModListSource(ServerModListType type);
@ -160,7 +160,7 @@ public:
class ModPackListSource : public ModListSource {
protected:
void resetQuery() override;
ProviderTask fetchPage(size_t page, size_t pageSize) override;
ProviderTask fetchPage(size_t page, size_t pageSize, bool forceUpdate) override;
void setSearchQuery(std::string const& query) override;
ModPackListSource();