[plasma-mobile/raven] src: Fix get folders ids (now for account). Fix changing displayed folder
Devin Lin <[email protected]>
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
Git commit 8752b8899e2e3db559ac020fd93ad352150a28ac by Devin Lin, on behalf of Alexander Malygin.
Committed on 20/07/2026 at 17:56.
Pushed by devinlin into branch 'master'.
Fix get folders ids (now for account). Fix changing displayed folder
name after syncing.
M +6 -0 src/raven/models/folder.cpp
M +2 -0 src/raven/models/folder.h
M +4 -1 src/raven/raven.cpp
M +3 -3 src/ravend/src/db/operations.rs
M +1 -1 src/ravend/src/imap/worker.rs
https://invent.kde.org/plasma-mobile/raven/-/commit/8752b8899e2e3db559ac020fd93ad352150a28ac
diff --git a/src/raven/models/folder.cpp b/src/raven/models/folder.cpp
index 40c9a92..ff25cbf 100644
--- a/src/raven/models/folder.cpp
+++ b/src/raven/models/folder.cpp
@@ -172,3 +172,9 @@ QJsonObject &Folder::localStatus()
{
return m_localStatus;
}
+
+QString Folder::name() const
+{
+ int lastSlash = path().lastIndexOf(QStringLiteral("/"));
+ return path().mid(lastSlash + 1);
+}
diff --git a/src/raven/models/folder.h b/src/raven/models/folder.h
index 478a67c..a23db78 100644
--- a/src/raven/models/folder.h
+++ b/src/raven/models/folder.h
@@ -55,6 +55,8 @@ public:
QJsonObject &localStatus();
+ QString name() const;
+
Q_SIGNALS:
void pathChanged();
void roleChanged();
diff --git a/src/raven/raven.cpp b/src/raven/raven.cpp
index e84e9cd..2613210 100644
--- a/src/raven/raven.cpp
+++ b/src/raven/raven.cpp
@@ -27,7 +27,10 @@ Raven::Raven(QObject *parent)
dbWatcher->initWatcher();
// Connect DBWatcher signals to reload models
- QObject::connect(dbWatcher, &DBWatcher::foldersChanged, MailBoxModel::self(), &MailBoxModel::load);
+ QObject::connect(dbWatcher, &DBWatcher::foldersChanged, MailBoxModel::self(), [this]() {
+ MailBoxModel::self()->load();
+ this->setSelectedFolderName(MailListModel::self()->currentFolder()->name());
+ });
// Targeted updates for specific message changes (e.g., read/unread, starred)
QObject::connect(dbWatcher, &DBWatcher::specificMessagesChanged, MailListModel::self(), &MailListModel::updateMessages);
diff --git a/src/ravend/src/db/operations.rs b/src/ravend/src/db/operations.rs
index f13108f..c3e9049 100644
--- a/src/ravend/src/db/operations.rs
+++ b/src/ravend/src/db/operations.rs
@@ -72,12 +72,12 @@ pub fn get_folder_by_id(conn: &Connection, folder_id: &str) -> Result<Option<Fol
.with_context(|| format!("Failed to query folder '{}'", folder_id))
}
-pub fn get_folders_ids(conn: &Connection) -> Result<Vec<String>> {
+pub fn get_folders_ids(conn: &Connection, account_id: &str) -> Result<Vec<String>> {
let mut stmt = conn.prepare(
- "SELECT id FROM folder"
+ "SELECT id FROM folder WHERE accountId = ?1"
)?;
- let ids = stmt.query_map([], |row| row.get(0))?.collect::<std::result::Result<Vec<_>, _>>()?;
+ let ids = stmt.query_map(params![account_id], |row| row.get(0))?.collect::<std::result::Result<Vec<_>, _>>()?;
return Ok(ids);
}
diff --git a/src/ravend/src/imap/worker.rs b/src/ravend/src/imap/worker.rs
index 1c611e6..8f7aa16 100644
--- a/src/ravend/src/imap/worker.rs
+++ b/src/ravend/src/imap/worker.rs
@@ -349,7 +349,7 @@ impl ImapWorker {
.map_err(|e| anyhow::anyhow!("Failed to acquire database lock: {}", e))?;
let mut folders = Vec::new();
- let folders_ids = db::get_folders_ids(db.conn())?;
+ let folders_ids = db::get_folders_ids(db.conn(), &self.account.id)?;
for mailbox in mailboxes.iter() {
let path = mailbox.name().to_string();