// Copyright 2019-2024 The Hush developers // Released under the GPLv3 #include "ChatDataStore.h" #include "addressbook.h" #include "chatmodel.h" ChatDataStore* ChatDataStore::getInstance() { if(!ChatDataStore::instanced) { ChatDataStore::instanced = true; ChatDataStore::instance = new ChatDataStore(); } return ChatDataStore::instance; } void ChatDataStore::clear() { this->data.clear(); } void ChatDataStore::setData(QString key, ChatItem value) { this->data[key] = value; } ChatItem ChatDataStore::getData(QString key) { return this->data[key]; } QString ChatDataStore::getPassword() { return _password; } QString ChatDataStore::getSendZaddr() { return _zaddr; } void ChatDataStore::setSendZaddr(QString zaddr) { _zaddr = zaddr; } void ChatDataStore::setPassword(QString password) { _password = password; } QString ChatDataStore::dump() { json chats; chats["count"] = this->data.size(); json j = {}; for (auto &c: this->data) { j.push_back(c.second.toJson()); } chats["chatitems"] = j; return QString::fromStdString(chats.dump()); } std::map ChatDataStore::getAllRawChatItems() { return this->data; } std::map ChatDataStore::getAllNewContactRequests() { std::map filteredItems; for(auto &c: this->data) { if ( (c.second.isOutgoing() == false) && (c.second.getType() == "Cont") && (c.second.isContact() == false) && (c.second.getMemo().startsWith("{")) ) { filteredItems[c.first] = c.second; } } return filteredItems; } std::map ChatDataStore::getAllOldContactRequests() { std::map filteredItems; for(auto &c: this->data) { if ( (c.second.isOutgoing() == false) && (c.second.getType() == "Cont") && (c.second.isContact() == true) && (c.second.getMemo().startsWith("{")) ) { filteredItems[c.first] = c.second; } } return filteredItems; } std::map ChatDataStore::getAllCashMemosIncoming() { std::map filteredItems; for(auto &c: this->data) { if ( (c.second.isOutgoing() == false) && (c.second.getType() == "Money") && (c.second.getMemo().startsWith("{")) ) { filteredItems[c.first] = c.second; } } return filteredItems; } std::map ChatDataStore::getAllCashMemosOutgoing() { std::map filteredItems; for(auto &c: this->data) { if ( (c.second.isOutgoing() == true) && (c.second.getType() == "Money") && (c.second.getMemo().startsWith("{")) ) { filteredItems[c.first] = c.second; } } return filteredItems; } std::map ChatDataStore::getAllMemos() { std::map filteredItems; for(auto &c: this->data) { if ((c.second.getMemo().startsWith("{") == false) && (c.second.getMemo().isEmpty() == false) ) { filteredItems[c.first] = c.second; } } return filteredItems; } ChatDataStore* ChatDataStore::instance = nullptr; bool ChatDataStore::instanced = false;