undo addressbooklabels storage in filesystem

This commit is contained in:
DenioD
2020-05-30 21:43:04 +02:00
parent 83dc3b5135
commit b67d304b66
3 changed files with 34 additions and 81 deletions

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,68 +92,20 @@ 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( i++;
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();
} }
else else
@@ -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

@@ -380,7 +380,7 @@ AddressBook::AddressBook()
void AddressBook::readFromStorage() void AddressBook::readFromStorage()
{ {
/*QFile file(AddressBook::writeableFile()); QFile file(AddressBook::writeableFile());
if (file.exists()) if (file.exists())
{ {
@@ -413,21 +413,26 @@ void AddressBook::readFromStorage()
{ {
qDebug() << "No Hush contacts found on disk!"; qDebug() << "No Hush contacts found on disk!";
} }
}*/ }
allLabels = FileSystem::getInstance()->readContacts(AddressBook::writeableFile()); // allLabels = FileSystem::getInstance()->readContacts(AddressBook::writeableFile());
// test to see if the contact items in datastore are correctly dumped to json // test to see if the contact items in datastore are correctly dumped to json
DataStore::getContactDataStore()->dump(); for(ContactItem item: allLabels)
{
DataStore::getContactDataStore()->setData(item.getCid(), item);
}
AddressBook::writeToStorage();
} }
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 +447,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()