Fix image get messages image fetching
[situare] / src / situareservice / situareservice.cpp
index aa6df84..9b969ee 100644 (file)
@@ -174,10 +174,7 @@ void SituareService::fetchMessages()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    //Request sent to server does not need the UID
-    QByteArray arr = m_database->getNotifications(613374451);
-
-    parseMessagesData(arr);
+    buildRequest(GET_MESSAGES, QHash<QString, QString>());
 }
 
 void SituareService::fetchPeopleWithSimilarInterest(const GeoCoordinate &southWestCoordinates,
@@ -222,6 +219,12 @@ SituareService::RequestName SituareService::getRequestName(const QUrl &url) cons
         return SituareService::RequestUpdateLocation;
     else if (url.toString().contains(REVERSE_GEO))
         return SituareService::RequestReverseGeo;
+    else if (url.toString().contains(GET_MESSAGES))
+        return SituareService::RequestGetMessages;
+    else if (url.toString().contains(REMOVE_MESSAGE))
+        return SituareService::RequestRemoveMessage;
+    else if (url.toString().contains(SEND_MESSAGE))
+        return SituareService::RequestSendMessage;
     else
         return SituareService::RequestUnknown;
 }
@@ -322,7 +325,7 @@ void SituareService::parseInterestingPeopleData(const QByteArray &jsonReply)
 
 void SituareService::parseReply(const QByteArray &jsonReply, RequestName requestName)
 {
-    qDebug() << __PRETTY_FUNCTION__;
+    qDebug() << __PRETTY_FUNCTION__ << jsonReply;
 
     QJson::Parser parser;
     bool ok;
@@ -343,8 +346,14 @@ void SituareService::parseReply(const QByteArray &jsonReply, RequestName request
                 parseUserData(resultData);
             else if (requestName == SituareService::RequestUpdateLocation)
                 emit updateWasSuccessful(SituareService::SuccessfulUpdateLocation);
+            else if (requestName == SituareService::RequestRemoveMessage)
+                emit updateWasSuccessful(SituareService::SuccessfulRemoveMessage);
             else if (requestName == SituareService::RequestReverseGeo)
                 parseReverseGeoData(resultData);
+            else if (requestName == SituareService::RequestGetMessages)
+                parseMessagesData(resultData);
+            else if (requestName == SituareService::RequestSendMessage)
+                emit updateWasSuccessful((SituareService::SuccessfulSendMessage));
         }
     }
 }
@@ -519,80 +528,70 @@ void SituareService::parseUserData(const QVariant &userData)
     }
 }
 
-void SituareService::parseMessagesData(const QByteArray &jsonReply)
+void SituareService::parseMessagesData(const QVariant &messagesData)
 {
-    QJson::Parser parser;
-    bool ok;
-
-    QVariantMap result = parser.parse(jsonReply, &ok).toMap();
-
-    if (!ok) {
-        emit error(ErrorContext::SITUARE, SituareError::INVALID_JSON);
-        return;
-    } else {
-        QVariant messages = result["messages"];
-
-        QList<Message> received;
-        QList<Message> sent;
-
-        foreach (QVariant messageVariant, messages.toMap().value("received").toList()) {
-            Message message(Message::MessageTypeReceived);
-            QMap<QString, QVariant> messageMap = messageVariant.toMap();
-            message.setId(messageMap["id"].toString());
-            message.setSenderId(messageMap["sender_id"].toString());
-            message.setReceiverId(messageMap["receiver_id"].toString());
-            message.setSenderName(messageMap["sender_name"].toString());
-            uint timestampSeconds = messageMap["timestamp"].toUInt();
-            message.setTimestamp(QDateTime::fromTime_t(timestampSeconds));
-            message.setText(messageMap["text"].toString());
-            message.setImage(AvatarImage::create(
-                    QPixmap(":/res/images/empty_avatar.png"), AvatarImage::Small));
-
-            bool latOk;
-            qreal latitude = messageMap["latitude"].toReal(&latOk);
-            bool lonOk;
-            qreal longitude = messageMap["longitude"].toReal(&lonOk);
-
-            if (latOk && lonOk) {
-                message.setAddress(messageMap["address"].toString());
-                message.setCoordinates(GeoCoordinate(latitude, longitude));
-            }
-
-            received.append(message);
-
-            //emit fetchImage(message.id(), messageMap["image_url"].toString());
+    QVariantMap result = messagesData.toMap();
+
+    QList<Message> received;
+    QList<Message> sent;
+
+    foreach (QVariant messageVariant, result["received"].toList()) {
+        Message message(Message::MessageTypeReceived);
+        QMap<QString, QVariant> messageMap = messageVariant.toMap();
+        message.setId(messageMap["mid"].toString());
+        message.setSenderId(messageMap["sid"].toString());
+        message.setReceiverId(messageMap["rid"].toString());
+        message.setSenderName(messageMap["name"].toString());
+        uint timestampSeconds = messageMap["timestamp"].toUInt();
+        message.setTimestamp(QDateTime::fromTime_t(timestampSeconds));
+        message.setText(messageMap["message"].toString());
+        message.setImage(AvatarImage::create(
+                QPixmap(":/res/images/empty_avatar.png"), AvatarImage::Small));
+
+        bool latOk;
+        qreal latitude = messageMap["lat"].toReal(&latOk);
+        bool lonOk;
+        qreal longitude = messageMap["lon"].toReal(&lonOk);
+
+        if (latOk && lonOk) {
+            message.setAddress(messageMap["address"].toString());
+            message.setCoordinates(GeoCoordinate(latitude, longitude));
         }
 
-        foreach (QVariant messageVariant, messages.toMap().value("sent").toList()) {
-            Message message(Message::MessageTypeSent);
-            QMap<QString, QVariant> messageMap = messageVariant.toMap();
-            message.setId(messageMap["id"].toString());
-            message.setSenderId(messageMap["sender_id"].toString());
-            message.setReceiverId(messageMap["receiver_id"].toString());
-            message.setSenderName(messageMap["sender_name"].toString());
-            uint timestampSeconds = messageMap["timestamp"].toUInt();
-            message.setTimestamp(QDateTime::fromTime_t(timestampSeconds));
-            message.setText(messageMap["text"].toString());
-            message.setImage(AvatarImage::create(
-                    QPixmap(":/res/images/empty_avatar.png"), AvatarImage::Small));
+        received.append(message);
 
-            bool latOk;
-            qreal latitude = messageMap["latitude"].toReal(&latOk);
-            bool lonOk;
-            qreal longitude = messageMap["longitude"].toReal(&lonOk);
-
-            if (latOk && lonOk) {
-                message.setAddress(messageMap["address"].toString());
-                message.setCoordinates(GeoCoordinate(latitude, longitude));
-            }
-
-            sent.append(message);
+        emit fetchImage(message.id(), messageMap["pic_square"].toString());
+    }
 
-            //emit fetchImage(message.id(), messageMap["image_url"].toString());
+    foreach (QVariant messageVariant, result["sent"].toList()) {
+        Message message(Message::MessageTypeSent);
+        QMap<QString, QVariant> messageMap = messageVariant.toMap();
+        message.setId(messageMap["mid"].toString());
+        message.setSenderId(messageMap["sid"].toString());
+        message.setReceiverId(messageMap["rid"].toString());
+        message.setSenderName(messageMap["name"].toString());
+        uint timestampSeconds = messageMap["timestamp"].toUInt();
+        message.setTimestamp(QDateTime::fromTime_t(timestampSeconds));
+        message.setText(messageMap["message"].toString());
+        message.setImage(AvatarImage::create(
+                QPixmap(":/res/images/empty_avatar.png"), AvatarImage::Small));
+
+        bool latOk;
+        qreal latitude = messageMap["lat"].toReal(&latOk);
+        bool lonOk;
+        qreal longitude = messageMap["lon"].toReal(&lonOk);
+
+        if (latOk && lonOk) {
+            message.setAddress(messageMap["address"].toString());
+            message.setCoordinates(GeoCoordinate(latitude, longitude));
         }
 
-        emit messagesReceived(received, sent);
+        sent.append(message);
+
+        emit fetchImage(message.id(), messageMap["pic_square"].toString());
     }
+
+    emit messagesReceived(received, sent);
 }
 
 void SituareService::parsePopularTagsData(const QByteArray &jsonReply)
@@ -623,8 +622,10 @@ void SituareService::removeMessage(const QString &id)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    if (m_database->removeMessage(613374451, id))
-        emit updateWasSuccessful(SituareService::SuccessfulRemoveMessage);
+    QHash<QString, QString> parameters;
+    parameters.insert("mid", id);
+
+    buildRequest(REMOVE_MESSAGE, parameters);
 }
 
 
@@ -642,7 +643,6 @@ void SituareService::requestFinished(QNetworkReply *reply)
 
     //Reply from situare
     if (m_currentRequests.contains(reply)) {
-
         if (reply->error())
             emit error(ErrorContext::NETWORK, reply->error());
         else