From a2b17e6dd60bba0bbc97c617257eb9f22ae90324 Mon Sep 17 00:00:00 2001 From: Benedikt Galbavy Date: Fri, 17 Nov 2023 13:46:44 +0100 Subject: [PATCH] changed to singular recipient --- server/mail.cpp | 2 +- server/mail.h | 2 +- server/server.cpp | 2 +- server/user.cpp | 18 +++++------------- server/user.h | 2 +- 5 files changed, 9 insertions(+), 17 deletions(-) diff --git a/server/mail.cpp b/server/mail.cpp index f3809bd..0238c9d 100644 --- a/server/mail.cpp +++ b/server/mail.cpp @@ -41,7 +41,7 @@ json mail::mailToJson() jsonfile["id"] = this->id; jsonfile["timestamp"] = this->timestamp; jsonfile["sender"] = this->sender; - jsonfile["recipients"] = this->recipients; + jsonfile["recipients"] = this->recipient; jsonfile["subject"] = this->subject; jsonfile["filename"] = this->filename; jsonfile["deleted"] = this->deleted; diff --git a/server/mail.h b/server/mail.h index 3fa6382..aef398f 100644 --- a/server/mail.h +++ b/server/mail.h @@ -18,7 +18,7 @@ struct mail { u_int id; int64_t timestamp; std::string sender; - std::vector recipients; + std::string recipient; std::string subject; bool deleted; diff --git a/server/server.cpp b/server/server.cpp index 1beb5c8..90cde95 100644 --- a/server/server.cpp +++ b/server/server.cpp @@ -389,7 +389,7 @@ std::string cmdSEND(std::vector& received) user_handler::getInstance().getOrCreateUser(received.at(1))->sendMail( new struct mail(saveToFile(user_handler::getInstance().getSpoolDir()/"messages", received.at(4)), received.at(3)), - {received.at(2)} + received.at(2) ); return "OK\n"; // TODO: error handling diff --git a/server/user.cpp b/server/user.cpp index dc64247..3b9da31 100644 --- a/server/user.cpp +++ b/server/user.cpp @@ -26,7 +26,7 @@ user::user(fs::path user_data_json) : m() ); mail->id = mail_json["id"]; mail->sender = mail_json["sender"]; - mail->recipients = mail_json["recipients"].get>(); + mail->recipient = mail_json["recipient"]; mail->deleted = mail_json["deleted"]; this->inbox.insert(mail); @@ -84,33 +84,25 @@ void user::addMail(mail* mail) this->user_data["mails"]["received"][std::to_string(mail->id)] = mail->mailToJson(); } -void user::sendMail(mail* mail, std::vector recipients) +void user::sendMail(mail* mail, std::string recipient) { std::lock_guard guard(this->m); - std::vector users; - for ( auto& name : recipients) { - // TODO: error handling for non existing user - users.push_back(user_handler::getInstance().getOrCreateUser(name)); - } - mail->sender = this->name; - mail->recipients = recipients; + mail->recipient = recipient; mail->id = this->sent.size(); this->sent.insert(mail); this->user_data["mails"]["sent"][std::to_string(mail->id)] = mail->mailToJson(); - for ( auto& user : users ) { - user->addMail(mail); - } + user_handler::getInstance().getOrCreateUser(recipient)->addMail(mail); } mail* user::getMail(u_int id) { maillist::iterator it = std::find_if(this->inbox.begin(), this->inbox.end(), [id](auto& i){ return (*i)(id); }); - return it == this->inbox.end() ? nullptr : (*it)->filename.empty() ? nullptr : *it; + return it == this->inbox.end() ? nullptr : (*it)->filename.empty() ? nullptr : *it; // TODO: potentially not thread safe, research if iterator points to } bool user::delMail(u_int id) diff --git a/server/user.h b/server/user.h index 4fcea74..dc1216e 100644 --- a/server/user.h +++ b/server/user.h @@ -22,7 +22,7 @@ public: ~user(); void addMail(mail* mail); - void sendMail(mail* mail, std::vector recipients); + void sendMail(mail* mail, std::string recipient); mail* getMail(u_int id); bool delMail(u_int id);