Move update download handling to separate method
This commit is contained in:
		
							parent
							
								
									0df0f2ef20
								
							
						
					
					
						commit
						35cbdb17e8
					
				@ -54,14 +54,37 @@ Loader::Loader(const QUrl &updateUrl, QObject *parent)
 | 
			
		||||
          this, &Loader::handleReply);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Loader::handleReply(QNetworkReply *reply)
 | 
			
		||||
{
 | 
			
		||||
  if (reply->url() == updateUrl_) {
 | 
			
		||||
    handleUpdateReply(reply);
 | 
			
		||||
  } else {
 | 
			
		||||
    handleComponentReply(reply);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Loader::checkForUpdates()
 | 
			
		||||
{
 | 
			
		||||
  auto reply = network_->get(QNetworkRequest(updateUrl_));
 | 
			
		||||
  if (reply->error() == QNetworkReply::NoError)
 | 
			
		||||
    return;
 | 
			
		||||
  if (reply->error() != QNetworkReply::NoError)
 | 
			
		||||
    handleUpdateReply(reply);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Loader::handleUpdateReply(QNetworkReply *reply)
 | 
			
		||||
{
 | 
			
		||||
  reply->deleteLater();
 | 
			
		||||
  emit error(toError(*reply));
 | 
			
		||||
 | 
			
		||||
  if (reply->error() != QNetworkReply::NoError) {
 | 
			
		||||
    emit error(toError(*reply));
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const auto replyData = reply->readAll();
 | 
			
		||||
 | 
			
		||||
  SOFT_ASSERT(model_, return );
 | 
			
		||||
  model_->parse(replyData);
 | 
			
		||||
  if (model_->hasUpdates())
 | 
			
		||||
    emit updatesAvailable();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
QString Loader::toError(QNetworkReply &reply) const
 | 
			
		||||
@ -108,37 +131,12 @@ void Loader::applyUserActions()
 | 
			
		||||
    commitUpdate();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Loader::finishUpdate(const QString &error)
 | 
			
		||||
{
 | 
			
		||||
  installer_.reset();
 | 
			
		||||
  for (const auto &i : componentReplyToPath_) i.first->deleteLater();
 | 
			
		||||
  componentReplyToPath_.clear();
 | 
			
		||||
  if (!error.isEmpty())
 | 
			
		||||
    emit this->error(error);
 | 
			
		||||
  SOFT_ASSERT(model_, return );
 | 
			
		||||
  model_->updateStates();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Loader::handleReply(QNetworkReply *reply)
 | 
			
		||||
void Loader::handleComponentReply(QNetworkReply *reply)
 | 
			
		||||
{
 | 
			
		||||
  reply->deleteLater();
 | 
			
		||||
 | 
			
		||||
  const auto isUpdatesReply = reply->url() == updateUrl_;
 | 
			
		||||
 | 
			
		||||
  if (reply->error() != QNetworkReply::NoError) {
 | 
			
		||||
    emit error(toError(*reply));
 | 
			
		||||
    if (!isUpdatesReply)
 | 
			
		||||
      finishUpdate();
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  const auto replyData = reply->readAll();
 | 
			
		||||
 | 
			
		||||
  if (isUpdatesReply) {
 | 
			
		||||
    SOFT_ASSERT(model_, return );
 | 
			
		||||
    model_->parse(replyData);
 | 
			
		||||
    if (model_->hasUpdates())
 | 
			
		||||
      emit updatesAvailable();
 | 
			
		||||
    finishUpdate(toError(*reply));
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
@ -159,6 +157,7 @@ void Loader::handleReply(QNetworkReply *reply)
 | 
			
		||||
    finishUpdate(error);
 | 
			
		||||
    return;
 | 
			
		||||
  }
 | 
			
		||||
  const auto replyData = reply->readAll();
 | 
			
		||||
  f.write(replyData);
 | 
			
		||||
  f.close();
 | 
			
		||||
 | 
			
		||||
@ -168,6 +167,17 @@ void Loader::handleReply(QNetworkReply *reply)
 | 
			
		||||
    commitUpdate();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Loader::finishUpdate(const QString &error)
 | 
			
		||||
{
 | 
			
		||||
  installer_.reset();
 | 
			
		||||
  for (const auto &i : componentReplyToPath_) i.first->deleteLater();
 | 
			
		||||
  componentReplyToPath_.clear();
 | 
			
		||||
  if (!error.isEmpty())
 | 
			
		||||
    emit this->error(error);
 | 
			
		||||
  SOFT_ASSERT(model_, return );
 | 
			
		||||
  model_->updateStates();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Loader::commitUpdate()
 | 
			
		||||
{
 | 
			
		||||
  SOFT_ASSERT(installer_, return );
 | 
			
		||||
 | 
			
		||||
@ -130,6 +130,8 @@ signals:
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
  void handleReply(QNetworkReply* reply);
 | 
			
		||||
  void handleComponentReply(QNetworkReply* reply);
 | 
			
		||||
  void handleUpdateReply(QNetworkReply* reply);
 | 
			
		||||
  QString toError(QNetworkReply& reply) const;
 | 
			
		||||
  void finishUpdate(const QString& error = {});
 | 
			
		||||
  void commitUpdate();
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user