From 852207199f58463869b306d1ff2ba9cd69ea87b4 Mon Sep 17 00:00:00 2001 From: DenioD <41270280+DenioD@users.noreply.github.com> Date: Sun, 7 Jun 2020 21:19:41 +0200 Subject: [PATCH] fix for incoming requests --- src/DataStore/ChatDataStore.cpp | 9 ++++-- src/Model/ChatItem.cpp | 2 +- src/addressbook.cpp | 6 +++- src/addressbook.h | 2 -- src/chatmodel.cpp | 39 +++++++++++++------------ src/contactmodel.cpp | 44 +++++++++++++++++++--------- src/contactmodel.h | 6 ++++ src/controller.cpp | 52 ++++++++++++++------------------- src/mainwindow.cpp | 13 +++++---- src/mainwindow.h | 1 + 10 files changed, 99 insertions(+), 75 deletions(-) diff --git a/src/DataStore/ChatDataStore.cpp b/src/DataStore/ChatDataStore.cpp index dfa7d54..5563fab 100644 --- a/src/DataStore/ChatDataStore.cpp +++ b/src/DataStore/ChatDataStore.cpp @@ -60,7 +60,9 @@ std::map ChatDataStore::getAllNewContactRequests() if ( (c.second.isOutgoing() == false) && (c.second.getType() == "Cont") && - (c.second.isContact() == false) + (c.second.isContact() == false) && + (c.second.getMemo().startsWith("{")) + ) { @@ -73,13 +75,14 @@ std::map ChatDataStore::getAllNewContactRequests() std::map ChatDataStore::getAllOldContactRequests() { std::map filteredItems; - for(auto &p : AddressBook::getInstance()->getAllAddressLabels()) + for(auto &c: this->data) { if ( (c.second.isOutgoing() == false) && (c.second.getType() == "Cont") && - (p.getPartnerAddress() == c.second.getRequestZaddr()) + (c.second.isContact() == true) && + (c.second.getMemo().startsWith("{")) ) { filteredItems[c.first] = c.second; diff --git a/src/Model/ChatItem.cpp b/src/Model/ChatItem.cpp index 9d8ede4..66b5176 100644 --- a/src/Model/ChatItem.cpp +++ b/src/Model/ChatItem.cpp @@ -180,7 +180,7 @@ QString ChatItem::toChatLine() QString line = QString("") + myDateTime.toString("yyyy-MM-dd hh:mm"); line += QString(lock) + QString(""); - line += QString("

") + _memo.toHtmlEscaped() + QString("

"); + line +=QString("

") + _memo.toHtmlEscaped() + QString("

"); return line; } diff --git a/src/addressbook.cpp b/src/addressbook.cpp index ae81ae2..68ead74 100644 --- a/src/addressbook.cpp +++ b/src/addressbook.cpp @@ -41,7 +41,7 @@ void AddressBookModel::loadData() "addresstablegeometry" ).toByteArray() ); - + } void AddressBookModel::addNewLabel(QString label, QString addr, QString myAddr, QString cid, QString avatar) @@ -108,7 +108,9 @@ QVariant AddressBookModel::data(const QModelIndex &index, int role) const case 2: return labels.at(index.row()).getPartnerAddress(); case 3: return labels.at(index.row()).getMyAddress(); case 4: return labels.at(index.row()).getCid(); + } + } return QVariant(); @@ -405,8 +407,10 @@ void AddressBook::readFromStorage() //qDebug() << "2:" << stuff[i][2]; ContactItem contact = ContactItem(stuff[i][0],stuff[i][1], stuff[i][2], stuff[i][3],stuff[i][4]); //qDebug() << "contact=" << contact.toQTString(); + // main->addLabel(stuff[i][2], stuff[i][1]); allLabels.push_back(contact); } + // qDebug() << "Read " << version << " Hush contacts from disk..."; file.close(); diff --git a/src/addressbook.h b/src/addressbook.h index fbd361b..b4fe7a8 100644 --- a/src/addressbook.h +++ b/src/addressbook.h @@ -24,8 +24,6 @@ public: QVariant data(const QModelIndex &index, int role) const; QVariant headerData(int section, Qt::Orientation orientation, int role) const; - - private: void loadData(); void saveData(); diff --git a/src/chatmodel.cpp b/src/chatmodel.cpp index 6622416..694908c 100644 --- a/src/chatmodel.cpp +++ b/src/chatmodel.cpp @@ -119,44 +119,41 @@ void MainWindow::renderContactRequest(){ for (auto &c : DataStore::getChatDataStore()->getAllNewContactRequests()) - - { - QStandardItem* Items = new QStandardItem(QString("Unknown Sender")); + QStandardItem* Items = new QStandardItem(QString(c.second.getRequestZaddr())); contactRequest->appendRow(Items); - requestContact.requestContact->setModel(contactRequest); - + requestContact.requestContact->setModel(contactRequest); Items->setData(QIcon(addnewAddrIcon),Qt::DecorationRole); requestContact.requestContact->setIconSize(QSize(40,50)); requestContact.requestContact->setUniformItemSizes(true); requestContact.requestContact->show(); requestContact.zaddrnew->setVisible(false); - requestContact.zaddrnew->setText(c.second.getAddress()); + requestContact.zaddrnew->setText(c.second.getRequestZaddr()); + + } QStandardItemModel* contactRequestOld = new QStandardItemModel(); - for (auto &p : AddressBook::getInstance()->getAllAddressLabels()) for (auto &c : DataStore::getChatDataStore()->getAllOldContactRequests()) { - if (p.getPartnerAddress() == c.second.getRequestZaddr()) - { - QStandardItem* Items = new QStandardItem(p.getName()); + QStandardItem* Items = new QStandardItem(c.second.getContact()); contactRequestOld->appendRow(Items); requestContact.requestContactOld->setModel(contactRequestOld); requestContact.zaddrold->setVisible(false); - requestContact.zaddrold->setText(c.second.getAddress()); - requestContact.requestContactOld->show(); - }else{} + requestContact.zaddrold->setText(c.second.getRequestZaddr()); + + } + QObject::connect(requestContact.requestContact, &QTableView::clicked, [&] () { - for (auto &c : DataStore::getChatDataStore()->getAllRawChatItems()){ + for (auto &c : DataStore::getChatDataStore()->getAllRawChatItems()){ QModelIndex index = requestContact.requestContact->currentIndex(); QString label_contact = index.data(Qt::DisplayRole).toString(); QStandardItemModel* contactMemo = new QStandardItemModel(); @@ -164,7 +161,7 @@ void MainWindow::renderContactRequest(){ - if ((c.second.isOutgoing() == false) && (requestContact.zaddrnew->text() == c.second.getAddress()) && (c.second.getType() != "Cont")) + if ((c.second.isOutgoing() == false) && (label_contact == c.second.getContact())) { @@ -177,7 +174,10 @@ void MainWindow::renderContactRequest(){ requestContact.requestCID->setVisible(false); requestContact.requestZaddr->setText(c.second.getRequestZaddr()); requestContact.requestMyAddr->setText(c.second.getAddress()); - }else{} + + }else{ + + } } @@ -192,7 +192,7 @@ void MainWindow::renderContactRequest(){ QString label_contactold = index.data(Qt::DisplayRole).toString(); QStandardItemModel* contactMemo = new QStandardItemModel(); - if ((c.second.isOutgoing() == false) && (requestContact.zaddrold->text() == c.second.getAddress()) && (c.second.getType() != "Cont")) + if ((c.second.isOutgoing() == false) && (label_contactold == c.second.getContact())) { @@ -205,7 +205,10 @@ void MainWindow::renderContactRequest(){ requestContact.requestCID->setVisible(false); requestContact.requestZaddr->setText(c.second.getRequestZaddr()); requestContact.requestMyAddr->setText(c.second.getAddress()); - }else{} + + }else{ + + } } diff --git a/src/contactmodel.cpp b/src/contactmodel.cpp index 7f9d097..f3d529f 100644 --- a/src/contactmodel.cpp +++ b/src/contactmodel.cpp @@ -11,7 +11,25 @@ #include "settings.h" #include "controller.h" +void ContactModel::addLabel(QString addr, QString label) +{ + this->AddressMap[addr] = label; +} +QString ContactModel::getContactbyAddress(QString addr) +{ + for(auto& pair : this->AddressMap) + { + + } + + if(this->AddressMap.count(addr) > 0) + { + return this->AddressMap[addr]; + } + + return QString("0xdeadbeef"); +} void ContactModel::renderContactList(QListView* view) { @@ -19,22 +37,20 @@ void ContactModel::renderContactList(QListView* view) for(auto &c : AddressBook::getInstance()->getAllAddressLabels()) { + QString avatar = c.getAvatar(); - - QString avatar = c.getAvatar(); - - QStandardItem* Items1 = new QStandardItem(c.getName()); - Items1->setData(QIcon(avatar),Qt::DecorationRole); + QStandardItem* Items1 = new QStandardItem(c.getName()); + Items1->setData(QIcon(avatar),Qt::DecorationRole); - contact->appendRow(Items1); - view->setModel(contact); - view->setIconSize(QSize(60,70)); - view->setUniformItemSizes(true); - view->setDragDropMode(QAbstractItemView::DropOnly); - view->show(); - - - + contact->appendRow(Items1); + view->setModel(contact); + view->setIconSize(QSize(60,70)); + view->setUniformItemSizes(true); + view->setDragDropMode(QAbstractItemView::DropOnly); + view->show(); + QString addr = c.getPartnerAddress(); + QString label = c.getName(); + this->addLabel(addr, label); } } diff --git a/src/contactmodel.h b/src/contactmodel.h index 5f79c47..584b5f9 100644 --- a/src/contactmodel.h +++ b/src/contactmodel.h @@ -12,9 +12,15 @@ class ContactModel { public: + MainWindow* main; + std::map AddressMap; + + QString getContactbyAddress(QString addr); + void addLabel(QString addr, QString label); ContactModel() {} void renderContactList(QListView* view); + }; diff --git a/src/controller.cpp b/src/controller.cpp index 5b1c979..fa4ef9a 100644 --- a/src/controller.cpp +++ b/src/controller.cpp @@ -1132,28 +1132,8 @@ void Controller::refreshTransactions() { QString headerbytes; QString cid; QString requestZaddr; + QString contactname; bool isContact; - - - for (auto &p : AddressBook::getInstance()->getAllAddressLabels()) - { - - if (p.getPartnerAddress() == requestZaddr) - { - - chatModel->addAddressbylabel(address, requestZaddr); - } else{} - - } - if (chatModel->Addressbylabel(address) != QString("0xdeadbeef")){ - - isContact = true; - - }else{ - - isContact = false; - - } if (!it["memo"].is_null()) { @@ -1176,8 +1156,7 @@ void Controller::refreshTransactions() { } } - - + if (chatModel->getCidByTx(txid) != QString("0xdeadbeef")){ cid = chatModel->getCidByTx(txid); @@ -1212,7 +1191,20 @@ void Controller::refreshTransactions() { publickey = ""; } - + if (contactModel->getContactbyAddress(requestZaddr) != QString("0xdeadbeef")){ + + isContact = true; + contactname = contactModel->getContactbyAddress(requestZaddr); + + }else{ + + isContact = false; + contactname = ""; + + } + + + qDebug()<<"Name :" << contactname; bool isNotarized; @@ -1336,7 +1328,7 @@ void Controller::refreshTransactions() { ChatItem item = ChatItem( datetime, address, - QString(""), + contactname, memodecrypt, requestZaddr, type, @@ -1347,9 +1339,7 @@ void Controller::refreshTransactions() { isNotarized, isContact ); - DataStore::getChatDataStore()->setData(ChatIDGenerator::getInstance()->generateID(item), item); - - + DataStore::getChatDataStore()->setData(ChatIDGenerator::getInstance()->generateID(item), item); }else{ @@ -1360,7 +1350,7 @@ void Controller::refreshTransactions() { ChatItem item = ChatItem( datetime, address, - QString(""), + contactname, memo, requestZaddr, type, @@ -1372,7 +1362,9 @@ void Controller::refreshTransactions() { isContact ); DataStore::getChatDataStore()->setData(ChatIDGenerator::getInstance()->generateID(item), item); - + qDebug()<<"requestZaddrt? :"<listChat->currentIndex(); QString memo_chat = index.data(Qt::DisplayRole).toString(); QClipboard *clipboard = QGuiApplication::clipboard(); - int startPos = memo_chat.indexOf("

") + 3; - int endPos = memo_chat.indexOf("

"); + int startPos = memo_chat.indexOf("
") + 3;
+    int endPos = memo_chat.indexOf("
"); int length = endPos - startPos; QString copymemo = memo_chat.mid(startPos, length); @@ -1400,8 +1401,8 @@ void MainWindow::setupchatTab() { QString memo_chat = index.data(Qt::DisplayRole).toString(); QClipboard *clipboard = QGuiApplication::clipboard(); - int startPos = memo_chat.indexOf("

") + 3; - int endPos = memo_chat.indexOf("

"); + int startPos = memo_chat.indexOf("
") + 3;
+    int endPos = memo_chat.indexOf("
"); int length = endPos - startPos; QString copymemo = memo_chat.mid(startPos, length); int startPosT = memo_chat.indexOf("") + 7; @@ -1438,8 +1439,8 @@ void MainWindow::setupchatTab() { QModelIndex index = ui->listChat->currentIndex(); QString memo_chat = index.data(Qt::DisplayRole).toString(); - int startPos = memo_chat.indexOf("

") + 3; - int endPos = memo_chat.indexOf("

"); + int startPos = memo_chat.indexOf("
") + 3;
+    int endPos = memo_chat.indexOf("
"); int length = endPos - startPos; QString copymemo = memo_chat.mid(startPos, length); int startPosT = memo_chat.indexOf("") + 7; diff --git a/src/mainwindow.h b/src/mainwindow.h index bb56d5b..53032df 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -58,6 +58,7 @@ public: void setPassword(QString Password); void addPubkey(QString requestZaddr, QString pubkey); + void replaceWormholeClient(WormholeClient* newClient); bool isWebsocketListening();