File indexing completed on 2024-05-26 05:19:00

0001 /*
0002   SPDX-FileCopyrightText: 2014 Sandro Knauß <knauss@kolabsys.com>
0003 
0004   SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "utils.h"
0008 #include "identitymanager.h"
0009 
0010 #include <QObject>
0011 
0012 using namespace KIdentityManagementCore;
0013 
0014 class IdendentitiesCache : public QObject
0015 {
0016     Q_OBJECT
0017 public:
0018     explicit IdendentitiesCache(QObject *parent = nullptr)
0019         : QObject(parent)
0020         , mIdentityManager(/*ro=*/true)
0021     {
0022         connect(&mIdentityManager, &IdentityManager::identitiesWereChanged, this, &IdendentitiesCache::slotIdentitiesChanged);
0023         slotIdentitiesChanged();
0024     }
0025 
0026     [[nodiscard]] const QSet<QString> &emails() const
0027     {
0028         return mEmails;
0029     }
0030 
0031 private:
0032     void slotIdentitiesChanged()
0033     {
0034         mEmails.clear();
0035         const QStringList lst = mIdentityManager.allEmails();
0036         mEmails.reserve(lst.count());
0037         for (const QString &email : lst) {
0038             mEmails.insert(email.toLower());
0039         }
0040     }
0041 
0042     IdentityManager mIdentityManager;
0043     QSet<QString> mEmails;
0044 };
0045 
0046 Q_GLOBAL_STATIC(IdendentitiesCache, sIdentitiesCache)
0047 
0048 bool KIdentityManagementCore::thatIsMe(const QString &email)
0049 {
0050     return allEmails().contains(email.toLower());
0051 }
0052 
0053 const QSet<QString> &KIdentityManagementCore::allEmails()
0054 {
0055     return sIdentitiesCache()->emails();
0056 }
0057 
0058 #include "utils.moc"