Implement basic UI with QML (MailListPage) and batching DbChangeProcessor (Step 3-4 of transition plan)
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
#include <QJsonObject>
|
||||
#include <QJsonArray>
|
||||
#include <QDebug>
|
||||
#include <QUrlQuery>
|
||||
#include <QDateTime>
|
||||
#include <QTimer>
|
||||
|
||||
@@ -25,11 +26,6 @@ GmailSynchronizer::GmailSynchronizer(QObject* parent)
|
||||
m_historyTimer->setInterval(2 * 60 * 1000); // 2 minutos
|
||||
}
|
||||
|
||||
GmailSynchronizer::~GmailSynchronizer()
|
||||
{
|
||||
m_historyTimer->stop();
|
||||
}
|
||||
|
||||
bool GmailSynchronizer::initialize(const Account& account)
|
||||
{
|
||||
// Guardar información de la cuenta
|
||||
@@ -60,10 +56,10 @@ bool GmailSynchronizer::syncFolder(const Folder& folder)
|
||||
}
|
||||
|
||||
qDebug() << "Starting Gmail sync for folder (label):" << folder.name();
|
||||
emit folderSyncStarted(folder.id());
|
||||
emit folderSyncStarted(QString::number(folder.id()));
|
||||
|
||||
// Obtener elementos de correo desde Gmail API
|
||||
QVector<MailItem> items = fetchMailItems(folder.id());
|
||||
QVector<MailItem> items = fetchMailItems(QString::number(folder.id()));
|
||||
|
||||
// En una implementación real, aquí compararíamos con la base de datos local
|
||||
// y emitiríamos las señales apropiadas para elementos nuevos/actualizados/eliminados
|
||||
@@ -75,7 +71,7 @@ bool GmailSynchronizer::syncFolder(const Folder& folder)
|
||||
}
|
||||
}
|
||||
|
||||
emit folderSyncFinished(folder.id(), true);
|
||||
emit folderSyncFinished(QString::number(folder.id()), true);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -113,7 +109,7 @@ QVector<MailItem> GmailSynchronizer::fetchMailItems(const QString& folderId,
|
||||
|
||||
// Construir la URL para Gmail API
|
||||
// Nota: En Gmail, las carpetas se identifican por su nombre de label (ej: INBOX, DRAFTS, etc.)
|
||||
QString endpoint = String.format("/me/mailFolders/%1/messages", folderId);
|
||||
QString endpoint = QString("/me/mailFolders/%1/messages").arg(folderId);
|
||||
QString url = buildGmailUrl(endpoint);
|
||||
|
||||
// Parámetros de consulta
|
||||
@@ -257,7 +253,7 @@ void GmailSynchronizer::onHistoryTimer()
|
||||
// de todas las etiquetas (esto sería ineficiente en producción)
|
||||
QVector<Folder> folders = getFolders();
|
||||
for (const Folder& folder : folders) {
|
||||
syncFolder(folder.id());
|
||||
syncFolder(Folder(folder.id(), 0, QString()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -270,7 +266,7 @@ QString GmailSynchronizer::buildGmailUrl(const QString& endpoint) const
|
||||
|
||||
QNetworkRequest GmailSynchronizer::createAuthRequest(const QString& url) const
|
||||
{
|
||||
QNetworkRequest request(QUrl(url));
|
||||
QNetworkRequest request{QUrl(url)};
|
||||
request.setRawHeader("Authorization",
|
||||
QString("Bearer %1").arg(m_accessToken).toUtf8());
|
||||
request.setHeader(QNetworkRequest::ContentTypeHeader,
|
||||
|
||||
Reference in New Issue
Block a user