diff --git a/loader/src/ui/mods/sources/ModListSource.cpp b/loader/src/ui/mods/sources/ModListSource.cpp index f2698bf0..cacbc84e 100644 --- a/loader/src/ui/mods/sources/ModListSource.cpp +++ b/loader/src/ui/mods/sources/ModListSource.cpp @@ -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 ;)"))); } diff --git a/loader/src/ui/mods/sources/ModListSource.hpp b/loader/src/ui/mods/sources/ModListSource.hpp index c17aeab4..a0bff941 100644 --- a/loader/src/ui/mods/sources/ModListSource.hpp +++ b/loader/src/ui/mods/sources/ModListSource.hpp @@ -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();