From bf2ae4b4eba2fb9ebd852bd51c145b866552d88a Mon Sep 17 00:00:00 2001
From: EndrII <endriimail@gmail.com>
Date: Mon, 5 Aug 2019 16:48:34 +0300
Subject: [PATCH] fix login data

---
 .../ProfileViewItems/mainmenumodel.cpp        | 28 +++++++++++++++++++
 .../back-end/ProfileViewItems/mainmenumodel.h |  4 +++
 2 files changed, 32 insertions(+)

diff --git a/SnakeClient/SnakeApp/back-end/ProfileViewItems/mainmenumodel.cpp b/SnakeClient/SnakeApp/back-end/ProfileViewItems/mainmenumodel.cpp
index fafaadc..76e6b66 100644
--- a/SnakeClient/SnakeApp/back-end/ProfileViewItems/mainmenumodel.cpp
+++ b/SnakeClient/SnakeApp/back-end/ProfileViewItems/mainmenumodel.cpp
@@ -5,12 +5,27 @@
 
 #include <back-end/settings.h>
 
+void MainMenuModel::handleClientStatusChanged(bool) {
+    auto  status = OnlineStatus::ClientIsOffline;
+    if (_client->isOnline()) {
+        status = OnlineStatus::AuthorizationRequired;
+    }
+
+    setOnlineStatus(status);
+}
+
 MainMenuModel::MainMenuModel(QObject *ptr): QObject (ptr) {
     _userViewModel = new UserView (this);
     _conf = Settings::instans();
     auto adderss = _conf->value(SERVER_ADDRESS, SERVER_ADDRESS_DEFAULT).toString();
     auto port = _conf->value(SERVER_ADDRESS_PORT, SERVER_ADDRESS_DEFAULT_PORT).toInt();
     _client = new ClientProtocol::Client(adderss, static_cast<unsigned short>(port), this);
+
+    connect(_client, &ClientProtocol::Client::loginChanged,
+            this , &MainMenuModel::handleClientStatusChanged);
+
+    connect(_client, &ClientProtocol::Client::onlineChanged,
+            this , &MainMenuModel::handleClientStatusChanged);
 }
 
 QObject *MainMenuModel::userViewModel() const {
@@ -28,3 +43,16 @@ void MainMenuModel::setOnlineStatus(int onlineStatus) {
     _onlineStatus = static_cast<OnlineStatus>(onlineStatus);
     emit onlineStatusChanged();
 }
+
+void MainMenuModel::login(const QString &email, const QString &pass) {
+    if (!_client->login(email, pass.toUtf8())) {
+        setOnlineStatus(OnlineStatus::AuthorizationFail);
+    }
+}
+
+void MainMenuModel::registerNewUser(const QString &email, const QString &name,
+                                    const QString &pass) {
+    if (!_client->login(email, pass.toUtf8())) {
+        setOnlineStatus(OnlineStatus::AuthorizationFail);
+    }
+}
diff --git a/SnakeClient/SnakeApp/back-end/ProfileViewItems/mainmenumodel.h b/SnakeClient/SnakeApp/back-end/ProfileViewItems/mainmenumodel.h
index 723d0f6..5e08eb5 100644
--- a/SnakeClient/SnakeApp/back-end/ProfileViewItems/mainmenumodel.h
+++ b/SnakeClient/SnakeApp/back-end/ProfileViewItems/mainmenumodel.h
@@ -31,6 +31,8 @@ private:
     OnlineStatus _onlineStatus = ClientIsOffline;
     QSettings *_conf = nullptr;
 
+private slots:
+    void handleClientStatusChanged(bool);
 
 public:
     MainMenuModel(QObject *ptr = nullptr);
@@ -40,6 +42,8 @@ public:
 
 public slots:
     void setOnlineStatus(int onlineStatus);
+    void login(const QString& email, const QString& pass);
+    void registerNewUser(const QString& email, const QString& name, const QString& pass);
 
 signals:
     void userViewModelChanged(QObject* userViewModel);