+AddonManager::InstallStatusPtr
+AddonManager::request_check_online()
+{
+ if (m_install_status)
+ {
+ throw std::runtime_error("only one addon install request allowed at a time");
+ }
+ else
+ {
+ m_transfer_status = m_downloader.request_download(m_repository_url, "/addons/repository.nfo");
+
+ m_transfer_status->then([this]{
+ m_repository_addons = parse_addon_infos("/addons/repository.nfo");
+ m_has_been_updated = true;
+
+ if (m_install_status->callback)
+ {
+ m_install_status->callback();
+ }
+
+ m_install_status = {};
+ m_transfer_status = {};
+ });
+
+ m_install_status = std::make_shared<InstallStatus>();
+ return m_install_status;
+ }
+}
+