dont execute commands that where written before it was started

This commit is contained in:
Green Sky 2024-01-13 19:11:22 +01:00
parent 0ea096c695
commit e8f69c0948
No known key found for this signature in database
2 changed files with 11 additions and 2 deletions

View File

@ -3,7 +3,6 @@
#include <solanaceae/util/config_model.hpp>
#include <solanaceae/message3/components.hpp>
#include <solanaceae/contact/components.hpp>
#include <solanaceae/tox_messages/components.hpp> // TODO: move SyncedBy to global
#include <solanaceae/toxcore/utils.hpp>
#include <string_view>
@ -18,7 +17,7 @@ MessageCommandDispatcher::MessageCommandDispatcher(
RegistryMessageModel& rmm,
ConfigModelI& conf
) :
_cr(cr), _rmm(rmm), _conf(conf)
_cr(cr), _rmm(rmm), _conf(conf), _program_started_at(Message::getTimeMS())
{
// overwrite default admin and moderator to false
_conf.set("MessageCommandDispatcher", "admin", false);
@ -233,6 +232,14 @@ bool MessageCommandDispatcher::onEvent(const Message::Events::MessageConstruct&
return false;
}
if (e.e.any_of<Message::Components::Timestamp>()) {
// test if message was written before program was started (-1s)
if (e.e.get<Message::Components::Timestamp>().ts + 1'000 < _program_started_at) {
// message too old
return false;
}
}
std::string_view message_text = e.e.get<Message::Components::MessageText>().text;
if (message_text.empty()) {

View File

@ -51,6 +51,8 @@ class MessageCommandDispatcher : public RegistryMessageModelEventI {
};
std::deque<QueuedMessage> _message_queue;
uint64_t _program_started_at {0};
public:
MessageCommandDispatcher(Contact3Registry& cr, RegistryMessageModel& rmm, ConfigModelI& conf);
~MessageCommandDispatcher(void);