diff options
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/function/ArchiveFileOperator.cpp | 2 | ||||
-rw-r--r-- | src/core/function/CacheManager.cpp | 86 | ||||
-rw-r--r-- | src/core/function/CacheManager.h | 70 | ||||
-rw-r--r-- | src/core/function/GlobalSettingStation.cpp | 56 | ||||
-rw-r--r-- | src/core/function/GlobalSettingStation.h | 21 | ||||
-rw-r--r-- | src/core/function/KeyPackageOperator.cpp | 6 | ||||
-rw-r--r-- | src/core/function/gpg/GpgAdvancedOperator.h | 10 | ||||
-rw-r--r-- | src/core/function/gpg/GpgCommandExecutor.cpp | 7 | ||||
-rw-r--r-- | src/core/function/gpg/GpgContext.cpp | 8 | ||||
-rw-r--r-- | src/core/function/gpg/GpgFileOpera.cpp | 6 | ||||
-rw-r--r-- | src/core/model/GpgPassphraseContext.cpp | 7 | ||||
-rw-r--r-- | src/core/model/GpgPassphraseContext.h | 5 | ||||
-rw-r--r-- | src/core/module/ModuleManager.cpp | 1 | ||||
-rw-r--r-- | src/core/utils/AsyncUtils.cpp | 24 | ||||
-rw-r--r-- | src/core/utils/CacheUtils.cpp | 16 | ||||
-rw-r--r-- | src/core/utils/CacheUtils.h | 7 |
16 files changed, 179 insertions, 153 deletions
diff --git a/src/core/function/ArchiveFileOperator.cpp b/src/core/function/ArchiveFileOperator.cpp index 60b8b004..a4b90698 100644 --- a/src/core/function/ArchiveFileOperator.cpp +++ b/src/core/function/ArchiveFileOperator.cpp @@ -32,8 +32,6 @@ #include <archive_entry.h> #include <sys/fcntl.h> -#include <fstream> - #include "core/utils/AsyncUtils.h" namespace GpgFrontend { diff --git a/src/core/function/CacheManager.cpp b/src/core/function/CacheManager.cpp index 58adede4..719c962d 100644 --- a/src/core/function/CacheManager.cpp +++ b/src/core/function/CacheManager.cpp @@ -30,6 +30,7 @@ #include <algorithm> #include <shared_mutex> +#include <utility> #include "core/function/DataObjectOperator.h" #include "core/utils/MemoryUtils.h" @@ -101,9 +102,9 @@ class CacheManager::Impl : public QObject { load_all_cache_storage(); } - void SaveCache(QString key, const QJsonDocument& value, bool flush) { + void SaveDurableCache(QString key, const QJsonDocument& value, bool flush) { auto data_object_key = get_data_object_key(key); - cache_storage_.insert(key, value); + durable_cache_storage_.insert(key, value); if (!key_storage_.contains(key)) { GF_CORE_LOG_DEBUG("register new key of cache", key); @@ -113,36 +114,50 @@ class CacheManager::Impl : public QObject { if (flush) slot_flush_cache_storage(); } - auto LoadCache(const QString& key) -> QJsonDocument { + auto LoadDurableCache(const QString& key) -> QJsonDocument { auto data_object_key = get_data_object_key(key); - if (!cache_storage_.exists(key)) { - cache_storage_.insert(key, load_cache_storage(key, {})); + if (!durable_cache_storage_.exists(key)) { + durable_cache_storage_.insert(key, load_cache_storage(key, {})); } - auto cache = cache_storage_.get(key); + auto cache = durable_cache_storage_.get(key); if (cache.has_value()) return cache.value(); return {}; } - auto LoadCache(const QString& key, QJsonDocument default_value) + auto LoadDurableCache(const QString& key, QJsonDocument default_value) -> QJsonDocument { auto data_object_key = get_data_object_key(key); - if (!cache_storage_.exists(key)) { - cache_storage_.insert(key, - load_cache_storage(key, std::move(default_value))); + if (!durable_cache_storage_.exists(key)) { + durable_cache_storage_.insert( + key, load_cache_storage(key, std::move(default_value))); } - auto cache = cache_storage_.get(key); + auto cache = durable_cache_storage_.get(key); if (cache.has_value()) return cache.value(); return {}; } - auto ResetCache(const QString& key) -> bool { + auto ResetDurableCache(const QString& key) -> bool { auto data_object_key = get_data_object_key(key); - return cache_storage_.remove(key); + return durable_cache_storage_.remove(key); } + void FlushCacheStorage() { this->slot_flush_cache_storage(); } + + void SaveCache(const QString& key, QString value) { + runtime_cache_storage_.insert(key, new QString(std::move(value))); + } + + auto LoadCache(const QString& key) -> QString { + auto* value = runtime_cache_storage_.object(key); + if (value == nullptr) return {}; + return *value; + } + + void ResetCache(const QString& key) { runtime_cache_storage_.remove(key); } + private slots: /** @@ -150,7 +165,7 @@ class CacheManager::Impl : public QObject { * */ void slot_flush_cache_storage() { - for (const auto& cache : cache_storage_.mirror()) { + for (const auto& cache : durable_cache_storage_.mirror()) { auto key = get_data_object_key(cache.first); GF_CORE_LOG_TRACE("save cache into filesystem, key {}", key); GpgFrontend::DataObjectOperator::GetInstance().SaveDataObj( @@ -161,7 +176,8 @@ class CacheManager::Impl : public QObject { } private: - ThreadSafeMap<QString, QJsonDocument> cache_storage_; + QCache<QString, QString> runtime_cache_storage_; + ThreadSafeMap<QString, QJsonDocument> durable_cache_storage_; QJsonArray key_storage_; QTimer* flush_timer_; const QString drk_key_ = "__cache_manage_data_register_key_list"; @@ -172,7 +188,7 @@ class CacheManager::Impl : public QObject { * @param key * @return QString */ - static auto get_data_object_key(QString key) -> QString { + static auto get_data_object_key(const QString& key) -> QString { return QString("__cache_data_%1").arg(key); } @@ -183,9 +199,9 @@ class CacheManager::Impl : public QObject { * @param default_value * @return QJsonObject */ - static auto load_cache_storage(QString key, QJsonDocument default_value) - -> QJsonDocument { - auto data_object_key = get_data_object_key(std::move(key)); + static auto load_cache_storage(const QString& key, + QJsonDocument default_value) -> QJsonDocument { + auto data_object_key = get_data_object_key(key); auto stored_data = GpgFrontend::DataObjectOperator::GetInstance().GetDataObject( data_object_key); @@ -231,26 +247,38 @@ CacheManager::CacheManager(int channel) : SingletonFunctionObject<CacheManager>(channel), p_(SecureCreateUniqueObject<Impl>()) {} -CacheManager::~CacheManager() = default; +CacheManager::~CacheManager() { p_->FlushCacheStorage(); } -void CacheManager::SaveCache(QString key, const QJsonDocument& value, - bool flush) { - p_->SaveCache(std::move(key), value, flush); +void CacheManager::SaveDurableCache(const QString& key, + const QJsonDocument& value, bool flush) { + p_->SaveDurableCache(key, value, flush); } -auto CacheManager::LoadCache(QString key) -> QJsonDocument { - return p_->LoadCache(key); +auto CacheManager::LoadDurableCache(const QString& key) -> QJsonDocument { + return p_->LoadDurableCache(key); } -auto CacheManager::LoadCache(QString key, QJsonDocument default_value) +auto CacheManager::LoadDurableCache(const QString& key, + QJsonDocument default_value) -> QJsonDocument { - return p_->LoadCache(key, std::move(default_value)); + return p_->LoadDurableCache(key, std::move(default_value)); } -auto CacheManager::ResetCache(QString key) -> bool { - return p_->ResetCache(key); +auto CacheManager::ResetDurableCache(const QString& key) -> bool { + return p_->ResetDurableCache(key); +} + +void CacheManager::SaveCache(const QString& key, QString value) { + p_->SaveCache(key, std::move(value)); +} + +auto CacheManager::LoadCache(const QString& key) -> QString { + return p_->LoadCache(key); } +void CacheManager::ResetCache(const QString& key) { + return p_->ResetCache(key); +} } // namespace GpgFrontend #include "CacheManager.moc"
\ No newline at end of file diff --git a/src/core/function/CacheManager.h b/src/core/function/CacheManager.h index 96496648..67e7fd75 100644 --- a/src/core/function/CacheManager.h +++ b/src/core/function/CacheManager.h @@ -35,18 +35,80 @@ namespace GpgFrontend { class GPGFRONTEND_CORE_EXPORT CacheManager : public SingletonFunctionObject<CacheManager> { public: + /** + * @brief Construct a new Cache Manager object + * + * @param channel + */ explicit CacheManager( int channel = SingletonFunctionObject::GetDefaultChannel()); + /** + * @brief Destroy the Cache Manager object + * + */ ~CacheManager() override; - void SaveCache(QString key, const QJsonDocument& value, bool flush = false); + /** + * @brief + * + * @param key + * @param value + */ + void SaveCache(const QString& key, QString value); - auto LoadCache(QString key) -> QJsonDocument; + /** + * @brief + * + * @param key + * @param value + * @param flush + */ + void SaveDurableCache(const QString& key, const QJsonDocument& value, + bool flush = false); - auto LoadCache(QString key, QJsonDocument default_value) -> QJsonDocument; + /** + * @brief + * + * @param key + * @param value + */ + auto LoadCache(const QString& key) -> QString; - auto ResetCache(QString key) -> bool; + /** + * @brief + * + * @param key + * @return QJsonDocument + */ + auto LoadDurableCache(const QString& key) -> QJsonDocument; + + /** + * @brief + * + * @param key + * @param default_value + * @return QJsonDocument + */ + auto LoadDurableCache(const QString& key, QJsonDocument default_value) + -> QJsonDocument; + + /** + * @brief + * + * @param key + * @return auto + */ + void ResetCache(const QString& key); + + /** + * @brief + * + * @param key + * @return true + * @return false + */ + auto ResetDurableCache(const QString& key) -> bool; private: class Impl; diff --git a/src/core/function/GlobalSettingStation.cpp b/src/core/function/GlobalSettingStation.cpp index 04129186..0158e8b3 100644 --- a/src/core/function/GlobalSettingStation.cpp +++ b/src/core/function/GlobalSettingStation.cpp @@ -70,7 +70,6 @@ class GlobalSettingStation::Impl { GF_CORE_LOG_INFO("app data path: {}", app_data_path_); GF_CORE_LOG_INFO("app log path: {}", app_log_path_); - GF_CORE_LOG_INFO("app locale path: {}", app_locale_path_); GF_CORE_LOG_INFO("app log files total size: {}", GetLogFilesSize()); GF_CORE_LOG_INFO("app data objects files total size: {}", @@ -127,33 +126,6 @@ class GlobalSettingStation::Impl { */ [[nodiscard]] auto GetLogDir() const -> QString { return app_log_path_; } - /** - * @brief Get the Locale Dir object - * - * @return QString - */ - [[nodiscard]] auto GetLocaleDir() const -> QString { - return app_locale_path_; - } - - /** - * @brief Get the Resource Dir object - * - * @return QString - */ - [[nodiscard]] auto GetResourceDir() const -> QString { - return app_resource_path_; - } - - /** - * @brief Get the Certs Dir object - * - * @return QString - */ - [[nodiscard]] auto GetCertsDir() const -> QString { - return app_resource_path_ + "/certs"; - } - private: QString working_path_ = QDir::currentPath(); @@ -165,22 +137,6 @@ class GlobalSettingStation::Impl { QString app_data_objs_path_ = app_data_path_ + "/data_objs"; ///< Object storage path -#ifdef LINUX_INSTALL_BUILD - QString app_resource_path_ = - QString(APP_LOCALSTATE_PATH) / "gpgfrontend"; ///< Program Data Location -#else - QString app_resource_path_ = - RESOURCE_DIR_PATH(GetAppDir()); ///< Program Data Location -#endif - -#ifdef LINUX_INSTALL_BUILD - QString app_locale_path_ = - QString(APP_LOCALE_PATH); ///< Program Data Location -#else - QString app_locale_path_ = - app_resource_path_ + "/locales"; ///< Program Data Location -#endif - bool portable_mode_ = false; ///< QString app_portable_config_path_ = working_path_ + "/config.ini"; ///< take effect only in portable mode @@ -214,18 +170,6 @@ auto GlobalSettingStation::GetAppDataPath() const -> QString { return p_->GetLogDir(); } -auto GlobalSettingStation::GetLocaleDir() const -> QString { - return p_->GetLocaleDir(); -} - -auto GlobalSettingStation::GetResourceDir() const -> QString { - return p_->GetResourceDir(); -} - -auto GlobalSettingStation::GetCertsDir() const -> QString { - return p_->GetCertsDir(); -} - auto GlobalSettingStation::GetLogFilesSize() const -> QString { return p_->GetLogFilesSize(); } diff --git a/src/core/function/GlobalSettingStation.h b/src/core/function/GlobalSettingStation.h index f8d3068e..85ac57b4 100644 --- a/src/core/function/GlobalSettingStation.h +++ b/src/core/function/GlobalSettingStation.h @@ -83,27 +83,6 @@ class GPGFRONTEND_CORE_EXPORT GlobalSettingStation [[nodiscard]] auto GetLogDir() const -> QString; /** - * @brief Get the Locale Dir object - * - * @return QString - */ - [[nodiscard]] auto GetLocaleDir() const -> QString; - - /** - * @brief Get the Resource Dir object - * - * @return QString - */ - [[nodiscard]] auto GetResourceDir() const -> QString; - - /** - * @brief Get the Certs Dir object - * - * @return QString - */ - [[nodiscard]] auto GetCertsDir() const -> QString; - - /** * @brief Get the Log Files Size object * * @return QString diff --git a/src/core/function/KeyPackageOperator.cpp b/src/core/function/KeyPackageOperator.cpp index d15859a3..abb84512 100644 --- a/src/core/function/KeyPackageOperator.cpp +++ b/src/core/function/KeyPackageOperator.cpp @@ -64,8 +64,10 @@ void KeyPackageOperator::GenerateKeyPackage(const QString& key_package_path, return; } - if (data_obj == nullptr || !data_obj->Check<GFBuffer>()) { - throw std::runtime_error("data object doesn't pass checking"); + if (CheckGpgError(err) == GPG_ERR_USER_1 || data_obj == nullptr || + !data_obj->Check<GFBuffer>()) { + cb(-1, data_obj); + return; } auto gf_buffer = ExtractParams<GFBuffer>(data_obj, 0); diff --git a/src/core/function/gpg/GpgAdvancedOperator.h b/src/core/function/gpg/GpgAdvancedOperator.h index 4f6ba8bb..d6b57095 100644 --- a/src/core/function/gpg/GpgAdvancedOperator.h +++ b/src/core/function/gpg/GpgAdvancedOperator.h @@ -52,7 +52,7 @@ class GPGFRONTEND_CORE_EXPORT GpgAdvancedOperator { * @return true * @return false */ - static void ReloadGpgComponents(OperationCallback cb); + static void ReloadGpgComponents(OperationCallback); /** * @brief @@ -68,7 +68,7 @@ class GPGFRONTEND_CORE_EXPORT GpgAdvancedOperator { * @return true * @return false */ - static void ResetConfigures(OperationCallback cb); + static void ResetConfigures(OperationCallback); /** * @brief @@ -76,7 +76,7 @@ class GPGFRONTEND_CORE_EXPORT GpgAdvancedOperator { * @return true * @return false */ - static void StartGpgAgent(OperationCallback cb); + static void StartGpgAgent(OperationCallback); /** * @brief @@ -84,7 +84,7 @@ class GPGFRONTEND_CORE_EXPORT GpgAdvancedOperator { * @return true * @return false */ - static void StartDirmngr(OperationCallback cb); + static void StartDirmngr(OperationCallback); /** * @brief @@ -92,7 +92,7 @@ class GPGFRONTEND_CORE_EXPORT GpgAdvancedOperator { * @return true * @return false */ - static void StartKeyBoxd(OperationCallback cb); + static void StartKeyBoxd(OperationCallback); }; } // namespace GpgFrontend diff --git a/src/core/function/gpg/GpgCommandExecutor.cpp b/src/core/function/gpg/GpgCommandExecutor.cpp index 886c70db..8c994515 100644 --- a/src/core/function/gpg/GpgCommandExecutor.cpp +++ b/src/core/function/gpg/GpgCommandExecutor.cpp @@ -27,7 +27,6 @@ */ #include "GpgCommandExecutor.h" -#include "core/function/basic/GpgFunctionObject.h" #include "core/model/DataObject.h" #include "core/module/Module.h" #include "core/thread/Task.h" @@ -53,7 +52,8 @@ auto BuildTaskFromExecCtx(const GpgCommandExecutor::ExecuteContext &context) "data object args count of cmd executor result callback: {}", data_object->GetObjectSize()); if (!data_object->Check<int, QString, GpgCommandExecutorCallback>()) { - throw std::runtime_error("invalid data object size"); + GF_CORE_LOG_ERROR("data object checking failed"); + return; } auto exit_code = ExtractParams<int>(data_object, 0); @@ -76,7 +76,8 @@ auto BuildTaskFromExecCtx(const GpgCommandExecutor::ExecuteContext &context) if (!data_object->Check<QString, QStringList, GpgCommandExecutorInteractor, GpgCommandExecutorCallback>()) { - throw std::runtime_error("invalid data object size"); + GF_CORE_LOG_ERROR("data object checking failed"); + return -1; } // get arguments diff --git a/src/core/function/gpg/GpgContext.cpp b/src/core/function/gpg/GpgContext.cpp index 0849f240..104e254f 100644 --- a/src/core/function/gpg/GpgContext.cpp +++ b/src/core/function/gpg/GpgContext.cpp @@ -38,8 +38,9 @@ #include "core/function/basic/GpgFunctionObject.h" #include "core/model/GpgPassphraseContext.h" #include "core/module/ModuleManager.h" +#include "core/utils/CacheUtils.h" #include "core/utils/GpgUtils.h" -#include "utils/MemoryUtils.h" +#include "core/utils/MemoryUtils.h" #ifdef _WIN32 #include <windows.h> @@ -108,11 +109,13 @@ class GpgContext::Impl { static auto CustomPassphraseCb(void *hook, const char *uid_hint, const char *passphrase_info, int prev_was_bad, int fd) -> gpgme_error_t { + auto context_cache = GetCacheValue("PinentryContext"); + bool ask_for_new = context_cache == "NEW_PASSPHRASE"; auto context = QSharedPointer<GpgPassphraseContext>(new GpgPassphraseContext( uid_hint != nullptr ? uid_hint : "", passphrase_info != nullptr ? passphrase_info : "", - prev_was_bad != 0)); + prev_was_bad != 0, ask_for_new)); GF_CORE_LOG_DEBUG( "custom passphrase cb called, uid: {}, info: {}, last_was_bad: {}", @@ -129,6 +132,7 @@ class GpgContext::Impl { context); looper.exec(); + ResetCacheValue("PinentryContext"); auto passphrase = context->GetPassphrase().toStdString(); auto passpahrase_size = passphrase.size(); GF_CORE_LOG_DEBUG("get passphrase from pinentry size: {}", diff --git a/src/core/function/gpg/GpgFileOpera.cpp b/src/core/function/gpg/GpgFileOpera.cpp index a4663150..e3d47cf6 100644 --- a/src/core/function/gpg/GpgFileOpera.cpp +++ b/src/core/function/gpg/GpgFileOpera.cpp @@ -100,7 +100,8 @@ void GpgFileOpera::EncryptDirectory(std::vector<GpgKey> keys, ArchiveFileOperator::NewArchive2DataExchanger( in_path, ex, [=](GFError err, const DataObjectPtr&) { - GF_CORE_LOG_DEBUG("new archive 2 fd operation, err: {}", err); + GF_CORE_LOG_DEBUG("new archive 2 data exchanger operation, err: {}", + err); }); } @@ -128,7 +129,8 @@ void GpgFileOpera::DecryptArchive(const QString& in_path, ArchiveFileOperator::ExtractArchiveFromDataExchanger( ex, out_path, [](GFError err, const DataObjectPtr&) { - GF_CORE_LOG_DEBUG("extract archive from fd operation, err: {}", err); + GF_CORE_LOG_DEBUG( + "extract archive from data exchanger operation, err: {}", err); }); RunGpgOperaAsync( diff --git a/src/core/model/GpgPassphraseContext.cpp b/src/core/model/GpgPassphraseContext.cpp index 45aab442..5df3f5a8 100644 --- a/src/core/model/GpgPassphraseContext.cpp +++ b/src/core/model/GpgPassphraseContext.cpp @@ -32,10 +32,11 @@ namespace GpgFrontend { GpgPassphraseContext::GpgPassphraseContext(const QString& uids_info, const QString& passphrase_info, - bool prev_was_bad) + bool prev_was_bad, bool ask_for_new) : passphrase_info_(passphrase_info), uids_info_(uids_info), - prev_was_bad_(prev_was_bad) {} + prev_was_bad_(prev_was_bad), + ask_for_new_(ask_for_new) {} GpgPassphraseContext::GpgPassphraseContext() = default; @@ -54,4 +55,6 @@ auto GpgPassphraseContext::GetPassphraseInfo() const -> QString { } auto GpgPassphraseContext::IsPreWasBad() const -> bool { return prev_was_bad_; } + +auto GpgPassphraseContext::IsAskForNew() const -> bool { return ask_for_new_; } } // namespace GpgFrontend diff --git a/src/core/model/GpgPassphraseContext.h b/src/core/model/GpgPassphraseContext.h index 3e6ce4d0..2bc1ac75 100644 --- a/src/core/model/GpgPassphraseContext.h +++ b/src/core/model/GpgPassphraseContext.h @@ -36,7 +36,7 @@ class GPGFRONTEND_CORE_EXPORT GpgPassphraseContext : public QObject { Q_OBJECT public: GpgPassphraseContext(const QString& uids_info, const QString& passphrase_info, - bool prev_was_bad); + bool prev_was_bad, bool ask_for_new); GpgPassphraseContext(); @@ -50,11 +50,14 @@ class GPGFRONTEND_CORE_EXPORT GpgPassphraseContext : public QObject { [[nodiscard]] auto IsPreWasBad() const -> bool; + [[nodiscard]] auto IsAskForNew() const -> bool; + private: QString passphrase_info_; QString uids_info_; QString passphrase_; bool prev_was_bad_; + bool ask_for_new_; }; } // namespace GpgFrontend
\ No newline at end of file diff --git a/src/core/module/ModuleManager.cpp b/src/core/module/ModuleManager.cpp index fd65a0ab..83e7c1ff 100644 --- a/src/core/module/ModuleManager.cpp +++ b/src/core/module/ModuleManager.cpp @@ -35,7 +35,6 @@ #include "core/module/GlobalRegisterTable.h" #include "core/module/Module.h" #include "core/thread/Task.h" -#include "core/thread/TaskRunner.h" #include "function/SecureMemoryAllocator.h" #include "function/basic/GpgFunctionObject.h" #include "thread/TaskRunnerGetter.h" diff --git a/src/core/utils/AsyncUtils.cpp b/src/core/utils/AsyncUtils.cpp index 15979f2b..6100b83d 100644 --- a/src/core/utils/AsyncUtils.cpp +++ b/src/core/utils/AsyncUtils.cpp @@ -56,14 +56,18 @@ auto RunGpgOperaAsync(GpgOperaRunnable runnable, GpgOperationCallback callback, operation, [=](const DataObjectPtr& data_object) -> int { auto custom_data_object = TransferParams(); - GpgError err = runnable(custom_data_object); - + auto err = runnable(custom_data_object); data_object->Swap({err, custom_data_object}); return 0; }, - [=](int, const DataObjectPtr& data_object) { - callback(ExtractParams<GpgError>(data_object, 0), - ExtractParams<DataObjectPtr>(data_object, 1)); + [=](int rtn, const DataObjectPtr& data_object) { + if (rtn < 0) { + callback(GPG_ERR_USER_1, + ExtractParams<DataObjectPtr>(data_object, 1)); + } else { + callback(ExtractParams<GpgError>(data_object, 0), + ExtractParams<DataObjectPtr>(data_object, 1)); + } }, TransferParams()); handler.Start(); @@ -84,9 +88,13 @@ auto RunIOOperaAsync(OperaRunnable runnable, OperationCallback callback, data_object->Swap({err, custom_data_object}); return 0; }, - [=](int, const DataObjectPtr& data_object) { - callback(ExtractParams<GFError>(data_object, 0), - ExtractParams<DataObjectPtr>(data_object, 1)); + [=](int rtn, const DataObjectPtr& data_object) { + if (rtn < 0) { + callback(-1, ExtractParams<DataObjectPtr>(data_object, 1)); + } else { + callback(ExtractParams<GFError>(data_object, 0), + ExtractParams<DataObjectPtr>(data_object, 1)); + } }, TransferParams()); handler.Start(); diff --git a/src/core/utils/CacheUtils.cpp b/src/core/utils/CacheUtils.cpp index 5e8657fa..e521870c 100644 --- a/src/core/utils/CacheUtils.cpp +++ b/src/core/utils/CacheUtils.cpp @@ -32,21 +32,15 @@ namespace GpgFrontend { -void SetTempCacheValue(const QString& key, const QString& value) { - QJsonDocument json; - json.setObject(QJsonObject({{key, value}})); - CacheManager::GetInstance().SaveCache(key, json); +void SetCacheValue(const QString& key, QString value) { + CacheManager::GetInstance().SaveCache(key, std::move(value)); } -auto GetTempCacheValue(const QString& key) -> QString { - QJsonDocument json = CacheManager::GetInstance().LoadCache(key); - if (!json.isObject()) return {}; - auto json_object = json.object(); - if (!json_object.contains(key) && json_object[key].isString()) return {}; - return json_object[key].toString(); +auto GetCacheValue(const QString& key) -> QString { + return CacheManager::GetInstance().LoadCache(key); } -void ResetTempCacheValue(const QString& key) { +void ResetCacheValue(const QString& key) { CacheManager::GetInstance().ResetCache(key); } diff --git a/src/core/utils/CacheUtils.h b/src/core/utils/CacheUtils.h index 67a41335..48b9ac4b 100644 --- a/src/core/utils/CacheUtils.h +++ b/src/core/utils/CacheUtils.h @@ -34,8 +34,7 @@ namespace GpgFrontend { * @brief set a temp cache under a certain key * */ -void GPGFRONTEND_CORE_EXPORT SetTempCacheValue(const QString &, - const QString &); +void GPGFRONTEND_CORE_EXPORT SetCacheValue(const QString &key, QString value); /** * @brief after get the temp cache, its value will be imediately ease in @@ -43,13 +42,13 @@ void GPGFRONTEND_CORE_EXPORT SetTempCacheValue(const QString &, * * @return QString */ -auto GPGFRONTEND_CORE_EXPORT GetTempCacheValue(const QString &) -> QString; +auto GPGFRONTEND_CORE_EXPORT GetCacheValue(const QString &key) -> QString; /** * @brief imediately ease temp cache in storage * * @return QString */ -void GPGFRONTEND_CORE_EXPORT ResetTempCacheValue(const QString &); +void GPGFRONTEND_CORE_EXPORT ResetCacheValue(const QString &); } // namespace GpgFrontend |