summaryrefslogtreecommitdiffstats
path: root/examples/imapresource/imapserverproxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/imapresource/imapserverproxy.cpp')
-rw-r--r--examples/imapresource/imapserverproxy.cpp43
1 files changed, 32 insertions, 11 deletions
diff --git a/examples/imapresource/imapserverproxy.cpp b/examples/imapresource/imapserverproxy.cpp
index a98483b..d5c212d 100644
--- a/examples/imapresource/imapserverproxy.cpp
+++ b/examples/imapresource/imapserverproxy.cpp
@@ -370,16 +370,16 @@ KAsync::Job<QString> ImapServerProxy::createSubfolder(const QString &parentMailb
370{ 370{
371 return KAsync::start<QString>([this, parentMailbox, folderName]() { 371 return KAsync::start<QString>([this, parentMailbox, folderName]() {
372 Q_ASSERT(!mPersonalNamespaceSeparator.isNull()); 372 Q_ASSERT(!mPersonalNamespaceSeparator.isNull());
373 auto folder = QSharedPointer<QString>::create(); 373 QString folder;
374 if (parentMailbox.isEmpty()) { 374 if (parentMailbox.isEmpty()) {
375 *folder = mPersonalNamespaces.toList().first() + folderName; 375 folder = mPersonalNamespaces.isEmpty() ? "" : mPersonalNamespaces.toList().first() + folderName;
376 } else { 376 } else {
377 *folder = parentMailbox + mPersonalNamespaceSeparator + folderName; 377 folder = parentMailbox + mPersonalNamespaceSeparator + folderName;
378 } 378 }
379 SinkTrace() << "Creating subfolder: " << *folder; 379 SinkTrace() << "Creating subfolder: " << folder;
380 return create(*folder) 380 return create(folder)
381 .then([=]() { 381 .then([=]() {
382 return *folder; 382 return folder;
383 }); 383 });
384 }); 384 });
385} 385}
@@ -390,15 +390,35 @@ KAsync::Job<QString> ImapServerProxy::renameSubfolder(const QString &oldMailbox,
390 Q_ASSERT(!mPersonalNamespaceSeparator.isNull()); 390 Q_ASSERT(!mPersonalNamespaceSeparator.isNull());
391 auto parts = oldMailbox.split(mPersonalNamespaceSeparator); 391 auto parts = oldMailbox.split(mPersonalNamespaceSeparator);
392 parts.removeLast(); 392 parts.removeLast();
393 auto folder = QSharedPointer<QString>::create(parts.join(mPersonalNamespaceSeparator) + mPersonalNamespaceSeparator + newName); 393 QString folder = parts.join(mPersonalNamespaceSeparator) + mPersonalNamespaceSeparator + newName;
394 SinkTrace() << "Renaming subfolder: " << oldMailbox << *folder; 394 SinkTrace() << "Renaming subfolder: " << oldMailbox << folder;
395 return rename(oldMailbox, *folder) 395 return rename(oldMailbox, folder)
396 .then([=]() { 396 .then([=]() {
397 return *folder; 397 return folder;
398 }); 398 });
399 }); 399 });
400} 400}
401 401
402QString ImapServerProxy::getNamespace(const QString &name)
403{
404 for (const auto &ns : mPersonalNamespaces) {
405 if (name.startsWith(ns)) {
406 return ns;
407 }
408 }
409 for (const auto &ns : mSharedNamespaces) {
410 if (name.startsWith(ns)) {
411 return ns;
412 }
413 }
414 for (const auto &ns : mUserNamespaces) {
415 if (name.startsWith(ns)) {
416 return ns;
417 }
418 }
419 return QString{};
420}
421
402KAsync::Job<void> ImapServerProxy::fetchFolders(std::function<void(const Folder &)> callback) 422KAsync::Job<void> ImapServerProxy::fetchFolders(std::function<void(const Folder &)> callback)
403{ 423{
404 SinkTrace() << "Fetching folders"; 424 SinkTrace() << "Fetching folders";
@@ -409,7 +429,8 @@ KAsync::Job<void> ImapServerProxy::fetchFolders(std::function<void(const Folder
409 bool noselect = flags.contains(QByteArray(FolderFlags::Noselect).toLower()) || flags.contains(QByteArray(FolderFlags::Noselect)); 429 bool noselect = flags.contains(QByteArray(FolderFlags::Noselect).toLower()) || flags.contains(QByteArray(FolderFlags::Noselect));
410 bool subscribed = subscribedList->contains(mailbox.name); 430 bool subscribed = subscribedList->contains(mailbox.name);
411 SinkLog() << "Found mailbox: " << mailbox.name << flags << FolderFlags::Noselect << noselect << " sub: " << subscribed; 431 SinkLog() << "Found mailbox: " << mailbox.name << flags << FolderFlags::Noselect << noselect << " sub: " << subscribed;
412 callback(Folder{mailbox.name, mailbox.separator, noselect, subscribed, flags}); 432 auto ns = getNamespace(mailbox.name);
433 callback(Folder{mailbox.name, ns, mailbox.separator, noselect, subscribed, flags});
413 })); 434 }));
414} 435}
415 436