sync to chat

This commit is contained in:
DenioD
2020-05-30 23:43:12 +02:00
12 changed files with 81 additions and 121 deletions

View File

@@ -9,7 +9,7 @@
<file>res/icon.ico</file> <file>res/icon.ico</file>
<file>res/mail.png</file> <file>res/mail.png</file>
<file>res/darkwing.png</file> <file>res/darkwing.png</file>
<file>res/sdlogo.png</file> <file>res/SDLogo.png</file>
<file>res/sdlogo2.png</file> <file>res/sdlogo2.png</file>
<file>res/Berg.png</file> <file>res/Berg.png</file>
<file>res/Denio.png</file> <file>res/Denio.png</file>

6
lib/Cargo.lock generated
View File

@@ -1177,7 +1177,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)",
"silentdragonlitelib 0.1.0 (git+https://github.com/DenioD/silentdragonlite-cli?rev=d196ad938a22810c0b6b4164e6bf8f1db0409763)", "silentdragonlitelib 0.1.0 (git+https://github.com/DenioD/silentdragonlite-cli?rev=d2887d07879a93bdd9b2c8bd12504bb977e82fe0)",
] ]
[[package]] [[package]]
@@ -1640,7 +1640,7 @@ dependencies = [
[[package]] [[package]]
name = "silentdragonlitelib" name = "silentdragonlitelib"
version = "0.1.0" version = "0.1.0"
source = "git+https://github.com/DenioD/silentdragonlite-cli?rev=d196ad938a22810c0b6b4164e6bf8f1db0409763#d196ad938a22810c0b6b4164e6bf8f1db0409763" source = "git+https://github.com/DenioD/silentdragonlite-cli?rev=d2887d07879a93bdd9b2c8bd12504bb977e82fe0#d2887d07879a93bdd9b2c8bd12504bb977e82fe0"
dependencies = [ dependencies = [
"base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "base58 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"bellman 0.1.0 (git+https://github.com/MyHush/librustzcash.git?rev=1a0204113d487cdaaf183c2967010e5214ff9e37)", "bellman 0.1.0 (git+https://github.com/MyHush/librustzcash.git?rev=1a0204113d487cdaaf183c2967010e5214ff9e37)",
@@ -2631,7 +2631,7 @@ dependencies = [
"checksum serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)" = "691b17f19fc1ec9d94ec0b5864859290dff279dbd7b03f017afda54eb36c3c35" "checksum serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)" = "691b17f19fc1ec9d94ec0b5864859290dff279dbd7b03f017afda54eb36c3c35"
"checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0" "checksum sha2 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "27044adfd2e1f077f649f59deb9490d3941d674002f7d062870a60ebe9bd47a0"
"checksum signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41" "checksum signal-hook-registry 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94f478ede9f64724c5d173d7bb56099ec3e2d9fc2774aac65d34b8b890405f41"
"checksum silentdragonlitelib 0.1.0 (git+https://github.com/DenioD/silentdragonlite-cli?rev=d196ad938a22810c0b6b4164e6bf8f1db0409763)" = "<none>" "checksum silentdragonlitelib 0.1.0 (git+https://github.com/DenioD/silentdragonlite-cli?rev=d2887d07879a93bdd9b2c8bd12504bb977e82fe0)" = "<none>"
"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
"checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6" "checksum smallvec 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "f7b0758c52e15a8b5e3691eae6cc559f08eee9406e548a4477ba4e67770a82b6"
"checksum socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85" "checksum socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85"

View File

@@ -11,4 +11,4 @@ crate-type = ["staticlib"]
[dependencies] [dependencies]
libc = "0.2.58" libc = "0.2.58"
lazy_static = "1.4.0" lazy_static = "1.4.0"
silentdragonlitelib = { git = "https://github.com/DenioD/silentdragonlite-cli", rev = "d196ad938a22810c0b6b4164e6bf8f1db0409763" } silentdragonlitelib = { git = "https://github.com/DenioD/silentdragonlite-cli", rev = "d2887d07879a93bdd9b2c8bd12504bb977e82fe0" }

View File

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

@@ -1,11 +1,7 @@
// Copyright 2019-2020 The Hush developers
// GPLv3
#include "FileSystem.h" #include "FileSystem.h"
#include <QString> #include <QString>
#include <QList> #include <QList>
#include "../Crypto/passwd.h"
#include "addressbook.h"
FileSystem::FileSystem() FileSystem::FileSystem()
{ {
@@ -23,9 +19,9 @@ FileSystem* FileSystem::getInstance()
return FileSystem::instance; return FileSystem::instance;
} }
QList<ContactItem> FileSystem::readContacts(QString file) /*QList<ContactItem> FileSystem::readContacts(QString file)
{ {
return this->readContactsOldFormat(file); //will be called if addresses are in the old dat-format //return this->readContactsOldFormat(file); //will be called if addresses are in the old dat-format
QFile _file(file); QFile _file(file);
if (_file.exists()) if (_file.exists())
@@ -83,7 +79,7 @@ void FileSystem::writeContactsOldFormat(QString file, QList<ContactItem> contact
c.push_back(item.getAvatar()); c.push_back(item.getAvatar());
_contacts.push_back(c); _contacts.push_back(c);
} }
out << QString("v2") << _contacts; out << QString("v0") << _contacts;
_file.close(); _file.close();
} }
@@ -96,66 +92,18 @@ QList<ContactItem> FileSystem::readContactsOldFormat(QString file)
contacts.clear(); contacts.clear();
_file.open(QIODevice::ReadOnly); _file.open(QIODevice::ReadOnly);
QDataStream in(&_file); // read the data serialized from the file QDataStream in(&_file); // read the data serialized from the file
if(in.status() == QDataStream::ReadCorruptData) QString version;
in >> version;
qDebug() << "Read " << version << " Hush contacts from disk...";
qDebug() << "Detected old addressbook format";
QList<QList<QString>> stuff;
in >> stuff;
//qDebug() << "Stuff: " << stuff;
for (int i=0; i < stuff.size(); i++)
{ {
qDebug() << "Error reading contacts! ---> Your hush contacts from disk maybe corrupted"; ContactItem contact = ContactItem(stuff[i][0],stuff[i][1], stuff[i][2], stuff[i][3],stuff[i][4]);
QFile::rename(file, file + QString(".corrupted")); contacts.push_back(contact);
QMessageBox::critical(
nullptr,
QObject::tr("Error reading contacts!"),
QObject::tr("Your hush contacts from disk maybe corrupted"),
QMessageBox::Ok
);
}
else
{
QString version;
in >> version;
if(version == "v1")
{
qDebug() << "Detected old addressbook format";
// Convert old addressbook format v1 to v2
QList<QPair<QString,QString>> stuff;
in >> stuff;
qDebug() << "Stuff: " << stuff;
for (int i=0; i < stuff.size(); i++)
{
ContactItem contact = ContactItem(stuff[i].first, stuff[i].second);
contacts.push_back(contact);
qDebug() << "contact=" << contact.toQTString();
}
}
else
{
qDebug() << "Read " << version << " Hush contacts from disk...";
QList<QList<QString>> stuff;
in >> stuff;
qDebug() << "Dataarray size: " << stuff.size();
if(stuff.size() == 0)
return contacts;
for (int i= 0; i < stuff.size(); i++)
{
qDebug() << stuff[i].size();
ContactItem contact;
if(stuff[i].size() == 4)
{
contact = ContactItem(stuff[i][0],stuff[i][1], stuff[i][2], stuff[i][3]);
}
else
{
contact = ContactItem(stuff[i][0],stuff[i][1], stuff[i][2], stuff[i][3],stuff[i][4]);
}
qDebug() << contact.toQTString();
contacts.push_back(contact);
}
}
qDebug() << "Hush contacts readed from disk...";
} }
_file.close(); _file.close();
@@ -173,7 +121,7 @@ FileSystem::~FileSystem()
this->instance = nullptr; this->instance = nullptr;
this->instanced = false; this->instanced = false;
delete this->instance; delete this->instance;
} }*/
FileSystem *FileSystem::instance = nullptr; FileSystem *FileSystem::instance = nullptr;
bool FileSystem::instanced = false; bool FileSystem::instanced = false;

View File

@@ -11,11 +11,11 @@ using json = nlohmann::json;
class ContactItem class ContactItem
{ {
private: private:
QString _myAddress = ""; QString _myAddress;
QString _partnerAddress = ""; QString _partnerAddress;
QString _name = ""; QString _name;
QString _cid = ""; QString _cid;
QString _avatar = ":/icons/res/sdlogo.png"; QString _avatar;
public: public:
ContactItem(); ContactItem();

View File

@@ -40,8 +40,6 @@ void AddressBookModel::loadData()
QSettings().value( QSettings().value(
"addresstablegeometry" "addresstablegeometry"
).toByteArray() ).toByteArray()
); );
} }
@@ -241,9 +239,14 @@ void AddressBook::open(MainWindow* parent, QLineEdit* target)
return; return;
rpc->refresh(true); // rpc->refresh(true);
model.updateUi(); model.updateUi();
rpc->refreshContacts(
parent->ui->listContactWidget
);
}); });
// AddressBook::getInstance()->addAddressLabel(newLabel, ab.addr->text(), cid); // AddressBook::getInstance()->addAddressLabel(newLabel, ab.addr->text(), cid);
@@ -380,7 +383,7 @@ AddressBook::AddressBook()
void AddressBook::readFromStorage() void AddressBook::readFromStorage()
{ {
/*QFile file(AddressBook::writeableFile()); QFile file(AddressBook::writeableFile());
if (file.exists()) if (file.exists())
{ {
@@ -394,9 +397,10 @@ void AddressBook::readFromStorage()
QList<QList<QString>> stuff; QList<QList<QString>> stuff;
in >> stuff; in >> stuff;
//qDebug() << "Stuff: " << stuff; //qDebug() << "Stuff: " << stuff;
for (int i=0; i < stuff.size(); i++) for (int i=0; i < stuff.size(); i++)
{ {
//qDebug() << "0:" << stuff[i][0]; //qDebug() << "0:" << stuff[i][0];
//qDebug() << "1:" << stuff[i][1]; //qDebug() << "1:" << stuff[i][1];
//qDebug() << "2:" << stuff[i][2]; //qDebug() << "2:" << stuff[i][2];
ContactItem contact = ContactItem(stuff[i][0],stuff[i][1], stuff[i][2], stuff[i][3],stuff[i][4]); ContactItem contact = ContactItem(stuff[i][0],stuff[i][1], stuff[i][2], stuff[i][3],stuff[i][4]);
@@ -404,30 +408,33 @@ void AddressBook::readFromStorage()
allLabels.push_back(contact); allLabels.push_back(contact);
} }
{ qDebug() << "Read " << version << " Hush contacts from disk...";
qDebug() << "Read " << version << " Hush contacts from disk...";
file.close(); file.close();
} }
}else{ else
{ {
qDebug() << "No Hush contacts found on disk!"; qDebug() << "No Hush contacts found on disk!";
} }
}*/
allLabels = FileSystem::getInstance()->readContacts(AddressBook::writeableFile());
// test to see if the contact items in datastore are correctly dumped to json // Special.
DataStore::getContactDataStore()->dump(); // Add the default silentdragon donation address if it isn't already present
// QList<QString> allAddresses;
// std::transform(allLabels.begin(), allLabels.end(),
// std::back_inserter(allAddresses), [=] (auto i) { return i.getPartnerAddress(); });
// if (!allAddresses.contains(Settings::getDonationAddr(true))) {
// allLabels.append(QPair<QString, QString>("silentdragon donation", Settings::getDonationAddr(true)));
// }
} }
void AddressBook::writeToStorage() void AddressBook::writeToStorage()
{ {
//FileSystem::getInstance()->writeContacts(AddressBook::writeableFile(), DataStore::getContactDataStore()->dump()); //FileSystem::getInstance()->writeContacts(AddressBook::writeableFile(), DataStore::getContactDataStore()->dump());
FileSystem::getInstance()->writeContactsOldFormat(AddressBook::writeableFile(), allLabels); // FileSystem::getInstance()->writeContactsOldFormat(AddressBook::writeableFile(), allLabels);
/*QFile file(AddressBook::writeableFile()); QFile file(AddressBook::writeableFile());
file.open(QIODevice::ReadWrite | QIODevice::Truncate); file.open(QIODevice::ReadWrite | QIODevice::Truncate);
QDataStream out(&file); // we will serialize the data into the file QDataStream out(&file); // we will serialize the data into the file
QList<QList<QString>> contacts; QList<QList<QString>> contacts;
@@ -442,7 +449,7 @@ void AddressBook::writeToStorage()
contacts.push_back(c); contacts.push_back(c);
} }
out << QString("v1") << contacts; out << QString("v1") << contacts;
file.close();*/ file.close();
} }
QString AddressBook::writeableFile() QString AddressBook::writeableFile()

View File

@@ -69,7 +69,7 @@
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset>
<activeon>:/icons/res/sdlogo.png</activeon> <activeon>:/icons/res/SDLogo.png</activeon>
</iconset> </iconset>
</property> </property>
</item> </item>

View File

@@ -239,6 +239,8 @@ void MainWindow::renderContactRequest(){
qDebug()<<"Beginn kopiert" <<cid << addr << newLabel << myAddr; qDebug()<<"Beginn kopiert" <<cid << addr << newLabel << myAddr;
AddressBook::getInstance()->addAddressLabel(newLabel, addr, myAddr, cid, avatar); AddressBook::getInstance()->addAddressLabel(newLabel, addr, myAddr, cid, avatar);
rpc->refreshContacts(
ui->listContactWidget);
QMessageBox::information(this, "Added Contact","successfully added your new contact. You can now Chat with this contact"); QMessageBox::information(this, "Added Contact","successfully added your new contact. You can now Chat with this contact");
@@ -246,10 +248,6 @@ void MainWindow::renderContactRequest(){
dialog.exec(); dialog.exec();
rpc->refreshContacts(
ui->listContactWidget
);
} }
void ChatModel::addCid(QString tx, QString cid) void ChatModel::addCid(QString tx, QString cid)
@@ -776,7 +774,8 @@ void::MainWindow::addContact()
request.setupUi(&dialog); request.setupUi(&dialog);
Settings::saveRestore(&dialog); Settings::saveRestore(&dialog);
try
{
bool sapling = true; bool sapling = true;
rpc->createNewZaddr(sapling, [=] (json reply) { rpc->createNewZaddr(sapling, [=] (json reply) {
QString myAddr = QString::fromStdString(reply.get<json::array_t>()[0]); QString myAddr = QString::fromStdString(reply.get<json::array_t>()[0]);
@@ -787,11 +786,15 @@ void::MainWindow::addContact()
qDebug() << "new generated myAddr add Contact" << myAddr; qDebug() << "new generated myAddr add Contact" << myAddr;
}); });
}catch(...)
{
qDebug() << QString("Caught something nasty with myZaddr Contact");
}
QString cid = QUuid::createUuid().toString(QUuid::WithoutBraces); QString cid = QUuid::createUuid().toString(QUuid::WithoutBraces);
QObject::connect(request.sendRequestButton, &QPushButton::clicked, [&] () { QObject::connect(request.sendRequestButton, &QPushButton::clicked, [&] () {
QString addr = request.zaddr->text(); QString addr = request.zaddr->text();
@@ -940,7 +943,10 @@ void MainWindow::ContactRequest() {
delete d; delete d;
}); });
QString addr = contactRequest.getReceiverAddress();
/////Add this contact after we sent the request
QString addr = contactRequest.getReceiverAddress();
QString newLabel = contactRequest.getLabel(); QString newLabel = contactRequest.getLabel();
QString myAddr = contactRequest.getSenderAddress(); QString myAddr = contactRequest.getSenderAddress();
QString cid = contactRequest.getCid(); QString cid = contactRequest.getCid();
@@ -973,17 +979,22 @@ void MainWindow::ContactRequest() {
////// Success, so show it ////// Success, so show it
AddressBook::getInstance()->addAddressLabel(newLabel, addr, myAddr, cid, avatar); AddressBook::getInstance()->addAddressLabel(newLabel, addr, myAddr, cid, avatar);
rpc->refreshContacts(
ui->listContactWidget);
QMessageBox::information( QMessageBox::information(
this, this,
QObject::tr("Added Contact"), QObject::tr("Added Contact"),
QObject::tr("successfully added your new contact").arg(newLabel), QObject::tr("successfully added your new contact").arg(newLabel),
QMessageBox::Ok QMessageBox::Ok
); );
return; return;
// Force a UI update so we get the unconfirmed Tx // Force a UI update so we get the unconfirmed Tx
// rpc->refresh(true); // rpc->refresh(true);
ui->memoTxtChat->clear(); ui->memoTxtChat->clear();
rpc->refresh(true); rpc->refresh(true);
rpc->refreshContacts(
ui->listContactWidget);
}, },
// Errored out // Errored out

View File

@@ -42,7 +42,7 @@
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset>
<activeon>:/icons/res/sdlogo.png</activeon> <activeon>:/icons/res/SDLogo.png</activeon>
</iconset> </iconset>
</property> </property>
</item> </item>

View File

@@ -922,8 +922,6 @@ void Controller::refreshTransactions() {
isNotarized = false; isNotarized = false;
} }
qDebug()<<"Conf : " << confirmations;
ChatItem item = ChatItem( ChatItem item = ChatItem(
datetime, datetime,
address, address,
@@ -1078,7 +1076,6 @@ void Controller::refreshTransactions() {
} }
} }
} }
qDebug()<<"get Lag" << getLag();
// Calculate the total unspent amount that's pending. This will need to be // Calculate the total unspent amount that's pending. This will need to be
// shown in the UI so the user can keep track of pending funds // shown in the UI so the user can keep track of pending funds
@@ -1098,10 +1095,7 @@ void Controller::refreshTransactions() {
// Update model data, which updates the table view // Update model data, which updates the table view
transactionsTableModel->replaceData(txdata); transactionsTableModel->replaceData(txdata);
chat->renderChatBox(ui, ui->listChat,ui->memoSizeChat); chat->renderChatBox(ui, ui->listChat,ui->memoSizeChat);
// refreshContacts(
// ui->listContactWidget
// );
}); });
} }

View File

@@ -209,7 +209,7 @@
</property> </property>
<property name="icon"> <property name="icon">
<iconset> <iconset>
<activeon>:/icons/res/sdlogo.png</activeon> <activeon>:/icons/res/SDLogo.png</activeon>
</iconset> </iconset>
</property> </property>
</item> </item>