mirror of
https://github.com/QuasarApp/installer-framework.git
synced 2025-04-28 14:34:36 +00:00
Fix components shown in categories
If same repository was included in several different categories, and the categories were fetched in the same time, the components were shown only in one of the categories. Fixed so that once the repository is downloaded, the related meta is included to all categories. This also speeds up other category download times. Task-id: QTIFW-1314 Change-Id: I0d890a52dee15a9bde11383f608f547a32b99ee7 Reviewed-by: Jani Heikkinen <jani.heikkinen@qt.io>
This commit is contained in:
parent
701beccd14
commit
2b61b70718
@ -626,6 +626,18 @@ MetadataJob::Status MetadataJob::parseUpdatesXml(const QList<FileTaskResult> &re
|
||||
ArchiveMetadata archiveMetadata;
|
||||
archiveMetadata.metaData = metadata;
|
||||
m_fetchedArchive.insertMulti(metadata.repository.categoryname(), archiveMetadata);
|
||||
|
||||
//Check if other categories have the same url (contains same metadata)
|
||||
//so we can speed up other category fetches
|
||||
foreach (RepositoryCategory category, m_core->settings().repositoryCategories()) {
|
||||
if (category.displayname() != metadata.repository.categoryname()) {
|
||||
foreach (Repository repository, category.repositories()) {
|
||||
if (repository.url() == metadata.repository.url()) {
|
||||
m_fetchedArchive.insertMulti(category.displayname(), archiveMetadata);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Hash for faster lookups
|
||||
m_metaFromArchive.insert(metadata.directory, metadata);
|
||||
}
|
||||
@ -732,11 +744,20 @@ QSet<Repository> MetadataJob::getRepositories()
|
||||
// If repository is already fetched, do not fetch it again.
|
||||
// In updater mode, fetch always all archive repositories to get updates
|
||||
foreach (RepositoryCategory repositoryCategory, m_core->settings().repositoryCategories()) {
|
||||
if (m_core->isUpdater() || (repositoryCategory.isEnabled() && !m_fetchedArchive.contains(repositoryCategory.displayname()))) {
|
||||
foreach (Repository repository, repositoryCategory.repositories()) {
|
||||
repositories.insert(repository);
|
||||
if (m_core->isUpdater() || (repositoryCategory.isEnabled())) {
|
||||
foreach (Repository repository, repositoryCategory.repositories()) {
|
||||
QHashIterator<QString, ArchiveMetadata> i(m_fetchedArchive);
|
||||
bool fetch = true;
|
||||
while (i.hasNext()) {
|
||||
i.next();
|
||||
ArchiveMetadata metaData = i.value();
|
||||
if (repository.url() == metaData.metaData.repository.url())
|
||||
fetch = false;
|
||||
}
|
||||
if (fetch)
|
||||
repositories.insert(repository);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return repositories;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user