From 51b101998a48c5d8705a14713c3b3e14607bd434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Mon, 19 Dec 2022 14:46:58 -0500 Subject: [PATCH] plugin: allow to build the plugin API without plugin support Allows to have a unified daemon API/ABI with optional features Change-Id: I7db8bd2aa294af1d389cb1fc43445b734e2570d2 --- src/client/plugin_manager_interface.cpp | 74 +++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 4 deletions(-) diff --git a/src/client/plugin_manager_interface.cpp b/src/client/plugin_manager_interface.cpp index e5c148c33a..2d58440180 100644 --- a/src/client/plugin_manager_interface.cpp +++ b/src/client/plugin_manager_interface.cpp @@ -19,42 +19,55 @@ */ #include "plugin_manager_interface.h" + +#ifdef ENABLE_PLUGIN #include "manager.h" #include "plugin/jamipluginmanager.h" -#include "logger.h" -#include <iostream> +#endif namespace libjami { bool loadPlugin(const std::string& path) { +#ifdef ENABLE_PLUGIN bool status = jami::Manager::instance().getJamiPluginManager().loadPlugin(path); jami::Manager::instance().pluginPreferences.saveStateLoadedPlugins(path, status); jami::Manager::instance().saveConfig(); return status; +#endif + return false; } bool unloadPlugin(const std::string& path) { +#ifdef ENABLE_PLUGIN bool status = jami::Manager::instance().getJamiPluginManager().unloadPlugin(path); jami::Manager::instance().pluginPreferences.saveStateLoadedPlugins(path, false); jami::Manager::instance().saveConfig(); return status; +#endif + return false; } std::map<std::string, std::string> getPluginDetails(const std::string& path) { +#ifdef ENABLE_PLUGIN return jami::Manager::instance().getJamiPluginManager().getPluginDetails(path); +#endif + return {}; } std::vector<std::map<std::string, std::string>> getPluginPreferences(const std::string& path, const std::string& accountId) { +#ifdef ENABLE_PLUGIN return jami::Manager::instance().getJamiPluginManager().getPluginPreferences(path, accountId); +#endif + return {}; } bool @@ -63,78 +76,106 @@ setPluginPreference(const std::string& path, const std::string& key, const std::string& value) { +#ifdef ENABLE_PLUGIN return jami::Manager::instance().getJamiPluginManager().setPluginPreference(path, accountId, key, value); +#endif + return {}; } std::map<std::string, std::string> getPluginPreferencesValues(const std::string& path, const std::string& accountId) { +#ifdef ENABLE_PLUGIN return jami::Manager::instance().getJamiPluginManager().getPluginPreferencesValuesMap(path, accountId); +#endif + return {}; } bool resetPluginPreferencesValues(const std::string& path, const std::string& accountId) { +#ifdef ENABLE_PLUGIN return jami::Manager::instance() .getJamiPluginManager() .resetPluginPreferencesValuesMap(path, accountId); +#endif } std::vector<std::string> getInstalledPlugins() { +#ifdef ENABLE_PLUGIN return jami::Manager::instance().getJamiPluginManager().getInstalledPlugins(); +#endif + return {}; } std::vector<std::string> getLoadedPlugins() { +#ifdef ENABLE_PLUGIN return jami::Manager::instance().pluginPreferences.getLoadedPlugins(); +#endif + return {}; } int installPlugin(const std::string& jplPath, bool force) { +#ifdef ENABLE_PLUGIN return jami::Manager::instance().getJamiPluginManager().installPlugin(jplPath, force); +#endif + return -1; } int uninstallPlugin(const std::string& pluginRootPath) { +#ifdef ENABLE_PLUGIN int status = jami::Manager::instance().getJamiPluginManager().uninstallPlugin(pluginRootPath); jami::Manager::instance().pluginPreferences.saveStateLoadedPlugins(pluginRootPath, false); jami::Manager::instance().saveConfig(); return status; +#endif + return -1; } std::vector<std::string> getCallMediaHandlers() { +#ifdef ENABLE_PLUGIN return jami::Manager::instance() .getJamiPluginManager() .getCallServicesManager() .getCallMediaHandlers(); +#endif + return {}; } std::vector<std::string> getChatHandlers() { +#ifdef ENABLE_PLUGIN return jami::Manager::instance() .getJamiPluginManager() .getChatServicesManager() .getChatHandlers(); +#endif + return {}; } void toggleCallMediaHandler(const std::string& mediaHandlerId, const std::string& callId, bool toggle) { - return jami::Manager::instance() +#ifdef ENABLE_PLUGIN + jami::Manager::instance() .getJamiPluginManager() .getCallServicesManager() .toggleCallMediaHandler(mediaHandlerId, callId, toggle); +#endif } void @@ -143,57 +184,75 @@ toggleChatHandler(const std::string& chatHandlerId, const std::string& peerId, bool toggle) { - return jami::Manager::instance() +#ifdef ENABLE_PLUGIN + jami::Manager::instance() .getJamiPluginManager() .getChatServicesManager() .toggleChatHandler(chatHandlerId, accountId, peerId, toggle); +#endif } std::map<std::string, std::string> getCallMediaHandlerDetails(const std::string& mediaHandlerId) { +#ifdef ENABLE_PLUGIN return jami::Manager::instance() .getJamiPluginManager() .getCallServicesManager() .getCallMediaHandlerDetails(mediaHandlerId); +#endif + return {}; } std::vector<std::string> getCallMediaHandlerStatus(const std::string& callId) { +#ifdef ENABLE_PLUGIN return jami::Manager::instance() .getJamiPluginManager() .getCallServicesManager() .getCallMediaHandlerStatus(callId); +#endif + return {}; } std::map<std::string, std::string> getChatHandlerDetails(const std::string& chatHandlerId) { +#ifdef ENABLE_PLUGIN return jami::Manager::instance() .getJamiPluginManager() .getChatServicesManager() .getChatHandlerDetails(chatHandlerId); +#endif + return {}; } std::vector<std::string> getChatHandlerStatus(const std::string& accountId, const std::string& peerId) { +#ifdef ENABLE_PLUGIN return jami::Manager::instance() .getJamiPluginManager() .getChatServicesManager() .getChatHandlerStatus(accountId, peerId); +#endif + return {}; } bool getPluginsEnabled() { +#ifdef ENABLE_PLUGIN return jami::Manager::instance().pluginPreferences.getPluginsEnabled(); +#endif + return false; } void setPluginsEnabled(bool state) { +#ifdef ENABLE_PLUGIN jami::Manager::instance().pluginPreferences.setPluginsEnabled(state); for (auto& item : jami::Manager::instance().pluginPreferences.getLoadedPlugins()) { if (state) @@ -202,6 +261,7 @@ setPluginsEnabled(bool state) jami::Manager::instance().getJamiPluginManager().unloadPlugin(item); } jami::Manager::instance().saveConfig(); +#endif } void @@ -210,10 +270,12 @@ sendWebViewMessage(const std::string& pluginId, const std::string& messageId, const std::string& payload) { +#ifdef ENABLE_PLUGIN jami::Manager::instance() .getJamiPluginManager() .getWebViewServicesManager() .sendWebViewMessage(pluginId, webViewId, messageId, payload); +#endif } std::string @@ -222,18 +284,22 @@ sendWebViewAttach(const std::string& pluginId, const std::string& webViewId, const std::string& action) { +#ifdef ENABLE_PLUGIN return jami::Manager::instance() .getJamiPluginManager() .getWebViewServicesManager() .sendWebViewAttach(pluginId, accountId, webViewId, action); +#endif } void sendWebViewDetach(const std::string& pluginId, const std::string& webViewId) { +#ifdef ENABLE_PLUGIN jami::Manager::instance() .getJamiPluginManager() .getWebViewServicesManager() .sendWebViewDetach(pluginId, webViewId); +#endif } } // namespace libjami -- GitLab