[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();
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.