Add event publishing to Outlook and Gmail synchronizers for AccountConnected, SyncStarted/Finished, and MailItemAdded/Updated/Removed events
This commit is contained in:
@@ -10,6 +10,9 @@
|
||||
#include <QUrlQuery>
|
||||
#include <QDateTime>
|
||||
#include <QTimer>
|
||||
#include <QEventLoop>
|
||||
#include "../core/events.h"
|
||||
#include "../core/eventbus.h"
|
||||
|
||||
GmailSynchronizer::GmailSynchronizer(QObject* parent)
|
||||
: Synchronizer(parent),
|
||||
@@ -41,6 +44,14 @@ bool GmailSynchronizer::initialize(const Account& account)
|
||||
return false;
|
||||
}
|
||||
|
||||
// Publish AccountConnectedEvent
|
||||
WinoMail::Events::AccountConnectedEvent event;
|
||||
event.eventId = QString::number(QDateTime::currentMSecsSinceEpoch()) + "_" + QString::number(rand());
|
||||
event.timestamp = QDateTime::currentDateTimeUtc();
|
||||
event.accountId = account.id();
|
||||
event.provider = "gmail";
|
||||
PUBLISH(event);
|
||||
|
||||
qDebug() << "Gmail Synchronizer initialized for account:" << account.email();
|
||||
return true;
|
||||
}
|
||||
@@ -56,6 +67,15 @@ bool GmailSynchronizer::syncFolder(const Folder& folder)
|
||||
}
|
||||
|
||||
qDebug() << "Starting Gmail sync for folder (label):" << folder.name();
|
||||
|
||||
// Publish SyncStartedEvent
|
||||
WinoMail::Events::SyncStartedEvent syncStartEvent;
|
||||
syncStartEvent.eventId = QString::number(QDateTime::currentMSecsSinceEpoch()) + "_" + QString::number(rand());
|
||||
syncStartEvent.timestamp = QDateTime::currentDateTimeUtc();
|
||||
syncStartEvent.accountId = m_account.id();
|
||||
syncStartEvent.folderId = QString::number(folder.id());
|
||||
PUBLISH(syncStartEvent);
|
||||
|
||||
emit folderSyncStarted(QString::number(folder.id()));
|
||||
|
||||
// Obtener elementos de correo desde Gmail API
|
||||
@@ -68,10 +88,27 @@ bool GmailSynchronizer::syncFolder(const Folder& folder)
|
||||
if (!items.isEmpty()) {
|
||||
for (const MailItem& item : items) {
|
||||
emit mailItemAdded(item);
|
||||
// Publish MailItemAddedEvent
|
||||
WinoMail::Events::MailItemAddedEvent mailEvent;
|
||||
mailEvent.eventId = QString::number(QDateTime::currentMSecsSinceEpoch()) + "_" + QString::number(rand());
|
||||
mailEvent.timestamp = QDateTime::currentDateTimeUtc();
|
||||
mailEvent.item = item;
|
||||
PUBLISH(mailEvent);
|
||||
}
|
||||
}
|
||||
|
||||
emit folderSyncFinished(QString::number(folder.id()), true);
|
||||
|
||||
// Publish SyncFinishedEvent
|
||||
WinoMail::Events::SyncFinishedEvent syncFinishEvent;
|
||||
syncFinishEvent.eventId = QString::number(QDateTime::currentMSecsSinceEpoch()) + "_" + QString::number(rand());
|
||||
syncFinishEvent.timestamp = QDateTime::currentDateTimeUtc();
|
||||
syncFinishEvent.accountId = m_account.id();
|
||||
syncFinishEvent.folderId = QString::number(folder.id());
|
||||
syncFinishEvent.success = true;
|
||||
syncFinishEvent.errorMessage = "";
|
||||
PUBLISH(syncFinishEvent);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -154,6 +191,14 @@ bool GmailSynchronizer::appendMailItem(const QString& folderId, const MailItem&
|
||||
|
||||
// Por ahora, simulamos éxito
|
||||
emit mailItemAdded(item);
|
||||
|
||||
// Publish MailItemAddedEvent
|
||||
WinoMail::Events::MailItemAddedEvent mailEvent;
|
||||
mailEvent.eventId = QString::number(QDateTime::currentMSecsSinceEpoch()) + "_" + QString::number(rand());
|
||||
mailEvent.timestamp = QDateTime::currentDateTimeUtc();
|
||||
mailEvent.item = item;
|
||||
PUBLISH(mailEvent);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -182,6 +227,14 @@ bool GmailSynchronizer::updateMailItemFlags(const QString& folderId,
|
||||
updatedItem.setFlagged(flagged);
|
||||
emit mailItemUpdated(updatedItem);
|
||||
|
||||
// Publish MailItemUpdatedEvent
|
||||
WinoMail::Events::MailItemUpdatedEvent updateEvent;
|
||||
updateEvent.eventId = QString::number(QDateTime::currentMSecsSinceEpoch()) + "_" + QString::number(rand());
|
||||
updateEvent.timestamp = QDateTime::currentDateTimeUtc();
|
||||
updateEvent.item = updatedItem;
|
||||
updateEvent.changedFields = QStringList() << "read" << "flagged"; // Simplified
|
||||
PUBLISH(updateEvent);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -202,6 +255,15 @@ bool GmailSynchronizer::deleteMailItem(const QString& folderId,
|
||||
|
||||
// Por ahora, simulamos éxito
|
||||
emit mailItemRemoved(itemUid);
|
||||
|
||||
// Publish MailItemRemovedEvent
|
||||
WinoMail::Events::MailItemRemovedEvent removeEvent;
|
||||
removeEvent.eventId = QString::number(QDateTime::currentMSecsSinceEpoch()) + "_" + QString::number(rand());
|
||||
removeEvent.timestamp = QDateTime::currentDateTimeUtc();
|
||||
removeEvent.itemUid = itemUid;
|
||||
removeEvent.folderId = folderId.toInt();
|
||||
PUBLISH(removeEvent);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user