rework ms list callback logic (#927)
fixes crash when joining server before getting ms list back
This commit is contained in:
parent
e6e5e86f68
commit
e9469a5ca4
@ -55,7 +55,7 @@ signals:
|
||||
void server_connected(bool state);
|
||||
|
||||
public slots:
|
||||
void get_server_list(const std::function<void()> &cb);
|
||||
void get_server_list();
|
||||
void ship_server_packet(QString p_packet);
|
||||
void join_to_server();
|
||||
void handle_server_packet(const QString& p_data);
|
||||
@ -64,8 +64,7 @@ public slots:
|
||||
const std::function<void(QString)> &cb);
|
||||
void send_heartbeat();
|
||||
private slots:
|
||||
void ms_request_finished(QNetworkReply *reply,
|
||||
const std::function<void()> &cb);
|
||||
void ms_request_finished(QNetworkReply *reply);
|
||||
|
||||
private:
|
||||
QString get_user_agent() const {
|
||||
|
@ -229,7 +229,7 @@ void Lobby::loadUI()
|
||||
|
||||
void Lobby::on_refresh_released()
|
||||
{
|
||||
net_manager->get_server_list(std::bind(&Lobby::list_servers, this));
|
||||
net_manager->get_server_list();
|
||||
get_motd();
|
||||
list_favorites();
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ int main(int argc, char *argv[])
|
||||
main_app.installTranslator(&appTranslator);
|
||||
|
||||
main_app.construct_lobby();
|
||||
main_app.net_manager->get_server_list(std::bind(&Lobby::list_servers, main_app.w_lobby));
|
||||
main_app.net_manager->get_server_list();
|
||||
main_app.net_manager->send_heartbeat();
|
||||
main_app.w_lobby->show();
|
||||
return main_app.exec();
|
||||
|
@ -29,18 +29,17 @@ NetworkManager::NetworkManager(AOApplication *parent) : QObject(parent)
|
||||
heartbeat_timer->start(heartbeat_interval);
|
||||
}
|
||||
|
||||
void NetworkManager::get_server_list(const std::function<void()> &cb)
|
||||
void NetworkManager::get_server_list()
|
||||
{
|
||||
QNetworkRequest req(QUrl(ms_baseurl + "/servers"));
|
||||
req.setRawHeader("User-Agent", get_user_agent().toUtf8());
|
||||
|
||||
QNetworkReply *reply = http->get(req);
|
||||
connect(reply, &QNetworkReply::finished,
|
||||
this, std::bind(&NetworkManager::ms_request_finished, this, reply, cb));
|
||||
this, std::bind(&NetworkManager::ms_request_finished, this, reply));
|
||||
}
|
||||
|
||||
void NetworkManager::ms_request_finished(QNetworkReply *reply,
|
||||
const std::function<void()> &cb)
|
||||
void NetworkManager::ms_request_finished(QNetworkReply *reply)
|
||||
{
|
||||
QJsonDocument json = QJsonDocument::fromJson(reply->readAll());
|
||||
if (json.isNull()) {
|
||||
@ -72,8 +71,9 @@ void NetworkManager::ms_request_finished(QNetworkReply *reply,
|
||||
}
|
||||
ao_app->set_server_list(server_list);
|
||||
|
||||
cb();
|
||||
|
||||
if (ao_app->lobby_constructed) {
|
||||
ao_app->w_lobby->list_servers();
|
||||
}
|
||||
reply->deleteLater();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user