From d0768817618143739b8fd81cfa9124e8f60e1b12 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Fri, 25 Aug 2017 23:55:43 +0300 Subject: Validate destination name after it entered in mail edit window. --- src/net/eathena/mail2handler.cpp | 7 +++++++ src/net/eathena/mail2handler.h | 2 ++ src/net/eathena/mail2recv.cpp | 22 ++++++++++++++++++++-- src/net/eathena/mail2recv.h | 1 + src/net/mail2handler.h | 2 ++ src/net/tmwa/mail2handler.cpp | 5 +++++ src/net/tmwa/mail2handler.h | 2 ++ 7 files changed, 39 insertions(+), 2 deletions(-) (limited to 'src/net') diff --git a/src/net/eathena/mail2handler.cpp b/src/net/eathena/mail2handler.cpp index bc749b0bf..ae48fc3ed 100644 --- a/src/net/eathena/mail2handler.cpp +++ b/src/net/eathena/mail2handler.cpp @@ -49,6 +49,7 @@ Mail2Handler::Mail2Handler() Mail2Handler::~Mail2Handler() { mail2Handler = nullptr; + Mail2Recv::mCheckedName.clear(); while (!Mail2Recv::mMailQueue.empty()) { MailQueue *const mail = Mail2Recv::mMailQueue.front(); @@ -135,6 +136,7 @@ void Mail2Handler::sendMail(const std::string &to, outMsg.writeInt32(0, "to char id"); outMsg.writeString(title, titleSz, "title"); outMsg.writeString(body, bodySz, "body"); + Mail2Recv::mCheckedName.clear(); } void Mail2Handler::queueCheckName(const MailQueueTypeT type, @@ -274,4 +276,9 @@ void Mail2Handler::requestCheckName(const std::string &name) const outMsg.writeString(name, 24, "name"); } +std::string Mail2Handler::getCheckedName() const +{ + return Mail2Recv::mCheckedName; +} + } // namespace EAthena diff --git a/src/net/eathena/mail2handler.h b/src/net/eathena/mail2handler.h index f6f217579..c7d15dc78 100644 --- a/src/net/eathena/mail2handler.h +++ b/src/net/eathena/mail2handler.h @@ -79,6 +79,8 @@ class Mail2Handler final : public Net::Mail2Handler void cancelWriteMail() const override final; void requestCheckName(const std::string &name) const override final; + + std::string getCheckedName() const override final; }; } // namespace EAthena diff --git a/src/net/eathena/mail2recv.cpp b/src/net/eathena/mail2recv.cpp index 3da4ae4c5..fe36172b9 100644 --- a/src/net/eathena/mail2recv.cpp +++ b/src/net/eathena/mail2recv.cpp @@ -63,6 +63,7 @@ namespace EAthena namespace Mail2Recv { std::queue mMailQueue; + std::string mCheckedName; } // namespace Mail2Recv void Mail2Recv::processMailIcon(Net::MessageIn &msg) @@ -255,6 +256,7 @@ void Mail2Recv::processCheckNameResult(Net::MessageIn &msg) delete mail; return; } + mCheckedName = mail->to; switch (mail->type) { case MailQueueType::SendMail: @@ -264,10 +266,26 @@ void Mail2Recv::processCheckNameResult(Net::MessageIn &msg) mail->money); break; case MailQueueType::EditMail: - mailWindow->createMail(mail->to); + if (mailWindow == nullptr) + { + reportAlways("Mail window not created"); + } + else + { + mailWindow->createMail(mail->to); + } + break; + case MailQueueType::ValidateTo: + if (mailEditWindow == nullptr) + { + reportAlways("Mail edit window not created"); + } + else + { + mailEditWindow->validatedTo(); + } break; case MailQueueType::Unknown: - case MailQueueType::ValidateTO: default: reportAlways("Not implemented yet."); break; diff --git a/src/net/eathena/mail2recv.h b/src/net/eathena/mail2recv.h index dd867618e..dc575b0c8 100644 --- a/src/net/eathena/mail2recv.h +++ b/src/net/eathena/mail2recv.h @@ -35,6 +35,7 @@ namespace EAthena namespace Mail2Recv { extern std::queue mMailQueue; + extern std::string mCheckedName; void processMailIcon(Net::MessageIn &msg); void processOpenNewMailWindow(Net::MessageIn &msg); diff --git a/src/net/mail2handler.h b/src/net/mail2handler.h index 56ad516cd..55c238b46 100644 --- a/src/net/mail2handler.h +++ b/src/net/mail2handler.h @@ -89,6 +89,8 @@ class Mail2Handler notfinal virtual void cancelWriteMail() const = 0; virtual void requestCheckName(const std::string &name) const = 0; + + virtual std::string getCheckedName() const = 0; }; } // namespace Net diff --git a/src/net/tmwa/mail2handler.cpp b/src/net/tmwa/mail2handler.cpp index 70a8cfda5..786a31a6f 100644 --- a/src/net/tmwa/mail2handler.cpp +++ b/src/net/tmwa/mail2handler.cpp @@ -110,4 +110,9 @@ void Mail2Handler::requestCheckName(const std::string &name A_UNUSED) const { } +std::string Mail2Handler::getCheckedName() const +{ + return std::string(); +} + } // namespace TmwAthena diff --git a/src/net/tmwa/mail2handler.h b/src/net/tmwa/mail2handler.h index 221e714b5..003a29b89 100644 --- a/src/net/tmwa/mail2handler.h +++ b/src/net/tmwa/mail2handler.h @@ -79,6 +79,8 @@ class Mail2Handler final : public Net::Mail2Handler void cancelWriteMail() const override final; void requestCheckName(const std::string &name) const override final; + + std::string getCheckedName() const override final; }; } // namespace TmwAthena -- cgit v1.2.3-70-g09d2