From 4a27b97799d6be562a8b805e17092d842ac839a5 Mon Sep 17 00:00:00 2001
From: Nicolas Werner <nicolas.werner@hotmail.de>
Date: Mon, 17 Jun 2019 01:40:43 +0200
Subject: [PATCH] Add invites to initial sync

---
 src/harbour-spoon.cpp  |  3 ++-
 src/models/roommodel.h |  2 +-
 src/sync.cpp           | 13 ++++++++++++-
 src/sync.h             |  1 +
 4 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/src/harbour-spoon.cpp b/src/harbour-spoon.cpp
index 65f798b..fe31bb7 100644
--- a/src/harbour-spoon.cpp
+++ b/src/harbour-spoon.cpp
@@ -36,6 +36,7 @@ int main(int argc, char *argv[]) {
     Sync sync(rooms, &login);
     QObject::connect(&login, &Login::loginSuccess, &sync, &Sync::startSync);
     QObject::connect(&sync, &Sync::newRoom, &rooms, &RoomModel::addRoom, Qt::QueuedConnection);
+    QObject::connect(&sync, &Sync::newInvite, &rooms, &RoomModel::addInvite, Qt::QueuedConnection);
 
     QSharedPointer<Room> a = QSharedPointer<Room>(new Room);
     a->tag = "group";
@@ -60,7 +61,7 @@ int main(int argc, char *argv[]) {
     i->lastMessage = "Hey, Nico hier!";
     i->unreadNotifications = 3;
     i->name = "Example invite";
-    rooms.addRoom(i);
+    rooms.addInvite(i);
     v->rootContext()->setContextProperty("rooms", &rooms);
 
     // If you wish to publish your app on the Jolla harbour, it is recommended
diff --git a/src/models/roommodel.h b/src/models/roommodel.h
index 6e67437..fd4cffd 100644
--- a/src/models/roommodel.h
+++ b/src/models/roommodel.h
@@ -10,7 +10,7 @@
 
 struct Room {
     std::string name, lastMessage, picture, tag;
-    int unreadNotifications;
+    int unreadNotifications = 0;
 };
 
 class RoomModel : public QAbstractListModel {
diff --git a/src/sync.cpp b/src/sync.cpp
index d98b4a3..967820f 100644
--- a/src/sync.cpp
+++ b/src/sync.cpp
@@ -17,10 +17,10 @@ void Sync::startSync() {
 
         for (const std::pair<std::string, mtx::responses::JoinedRoom> &join : res.rooms.join) {
             const mtx::responses::JoinedRoom &r = join.second;
+
             QSharedPointer<Room> room = QSharedPointer<Room>(new Room);
 
             room->name = join.first;
-
             qDebug() << QString::fromStdString(room->name);
 
             // room.picture = r.avatar();
@@ -28,5 +28,16 @@ void Sync::startSync() {
             room->unreadNotifications = r.unread_notifications.highlight_count;
             emit newRoom(room);
         }
+
+        for (const std::pair<std::string, mtx::responses::InvitedRoom> &invite : res.rooms.invite) {
+            const mtx::responses::InvitedRoom &r = invite.second;
+
+            QSharedPointer<Room> room = QSharedPointer<Room>(new Room);
+
+            room->name = invite.first;
+            room->tag = "invite";
+            qDebug() << QString::fromStdString(room->name);
+            emit newInvite(room);
+        }
     });
 }
diff --git a/src/sync.h b/src/sync.h
index b63a747..462c835 100644
--- a/src/sync.h
+++ b/src/sync.h
@@ -15,6 +15,7 @@ class Sync : public QObject {
 
   signals:
     void newRoom(QSharedPointer<Room> room);
+    void newInvite(QSharedPointer<Room> room);
 
   private:
     RoomModel &rooms;
-- 
GitLab