LCOV - code coverage report
Current view: top level - src/client - plugin_manager_interface.cpp (source / functions) Hit Total Coverage
Test: jami-coverage-filtered.info Lines: 12 107 11.2 %
Date: 2024-12-21 08:56:24 Functions: 3 25 12.0 %

          Line data    Source code
       1             : /*
       2             :  *  Copyright (C) 2004-2024 Savoir-faire Linux Inc.
       3             :  *
       4             :  *  This program is free software: you can redistribute it and/or modify
       5             :  *  it under the terms of the GNU General Public License as published by
       6             :  *  the Free Software Foundation, either version 3 of the License, or
       7             :  *  (at your option) any later version.
       8             :  *
       9             :  *  This program is distributed in the hope that it will be useful,
      10             :  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
      11             :  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
      12             :  *  GNU General Public License for more details.
      13             :  *
      14             :  *  You should have received a copy of the GNU General Public License
      15             :  *  along with this program. If not, see <https://www.gnu.org/licenses/>.
      16             :  */
      17             : 
      18             : #include "plugin_manager_interface.h"
      19             : 
      20             : #ifdef HAVE_CONFIG_H
      21             : #include "config.h"
      22             : #endif // HAVE_CONFIG_H
      23             : 
      24             : #ifdef ENABLE_PLUGIN
      25             : #include "manager.h"
      26             : #include "plugin/jamipluginmanager.h"
      27             : #endif
      28             : 
      29             : namespace libjami {
      30             : bool
      31           7 : loadPlugin(const std::string& path)
      32             : {
      33             : #ifdef ENABLE_PLUGIN
      34           7 :     bool status = jami::Manager::instance().getJamiPluginManager().loadPlugin(path);
      35             : 
      36           7 :     jami::Manager::instance().pluginPreferences.saveStateLoadedPlugins(path, status);
      37           7 :     jami::Manager::instance().saveConfig();
      38           7 :     return status;
      39             : #endif
      40             :     return false;
      41             : }
      42             : 
      43             : bool
      44           5 : unloadPlugin(const std::string& path)
      45             : {
      46             : #ifdef ENABLE_PLUGIN
      47           5 :     bool status = jami::Manager::instance().getJamiPluginManager().unloadPlugin(path);
      48             : 
      49           5 :     jami::Manager::instance().pluginPreferences.saveStateLoadedPlugins(path, false);
      50           5 :     jami::Manager::instance().saveConfig();
      51           5 :     return status;
      52             : #endif
      53             :     return false;
      54             : }
      55             : 
      56             : std::map<std::string, std::string>
      57           0 : getPluginDetails(const std::string& path)
      58             : {
      59             : #ifdef ENABLE_PLUGIN
      60           0 :     return jami::Manager::instance().getJamiPluginManager().getPluginDetails(path);
      61             : #endif
      62             :     return {};
      63             : }
      64             : 
      65             : std::vector<std::map<std::string, std::string>>
      66           0 : getPluginPreferences(const std::string& path, const std::string& accountId)
      67             : {
      68             : #ifdef ENABLE_PLUGIN
      69           0 :     return jami::Manager::instance().getJamiPluginManager().getPluginPreferences(path, accountId);
      70             : #endif
      71             :     return {};
      72             : }
      73             : 
      74             : bool
      75           0 : setPluginPreference(const std::string& path,
      76             :                     const std::string& accountId,
      77             :                     const std::string& key,
      78             :                     const std::string& value)
      79             : {
      80             : #ifdef ENABLE_PLUGIN
      81           0 :     return jami::Manager::instance().getJamiPluginManager().setPluginPreference(path,
      82             :                                                                                 accountId,
      83             :                                                                                 key,
      84           0 :                                                                                 value);
      85             : #endif
      86             :     return {};
      87             : }
      88             : 
      89             : std::map<std::string, std::string>
      90           0 : getPluginPreferencesValues(const std::string& path, const std::string& accountId)
      91             : {
      92             : #ifdef ENABLE_PLUGIN
      93           0 :     return jami::Manager::instance().getJamiPluginManager().getPluginPreferencesValuesMap(path,
      94           0 :                                                                                           accountId);
      95             : #endif
      96             :     return {};
      97             : }
      98             : bool
      99           0 : resetPluginPreferencesValues(const std::string& path, const std::string& accountId)
     100             : {
     101             : #ifdef ENABLE_PLUGIN
     102           0 :     return jami::Manager::instance()
     103           0 :         .getJamiPluginManager()
     104           0 :         .resetPluginPreferencesValuesMap(path, accountId);
     105             : #endif
     106             : }
     107             : 
     108             : std::vector<std::string>
     109           0 : getInstalledPlugins()
     110             : {
     111             : #ifdef ENABLE_PLUGIN
     112           0 :     return jami::Manager::instance().getJamiPluginManager().getInstalledPlugins();
     113             : #endif
     114             :     return {};
     115             : }
     116             : 
     117             : std::vector<std::string>
     118           0 : getLoadedPlugins()
     119             : {
     120             : #ifdef ENABLE_PLUGIN
     121           0 :     return jami::Manager::instance().pluginPreferences.getLoadedPlugins();
     122             : #endif
     123             :     return {};
     124             : }
     125             : 
     126             : int
     127           0 : installPlugin(const std::string& jplPath, bool force)
     128             : {
     129             : #ifdef ENABLE_PLUGIN
     130           0 :     return jami::Manager::instance().getJamiPluginManager().installPlugin(jplPath, force);
     131             : #endif
     132             :     return -1;
     133             : }
     134             : 
     135             : int
     136           0 : uninstallPlugin(const std::string& pluginRootPath)
     137             : {
     138             : #ifdef ENABLE_PLUGIN
     139           0 :     int status = jami::Manager::instance().getJamiPluginManager().uninstallPlugin(pluginRootPath);
     140           0 :     jami::Manager::instance().pluginPreferences.saveStateLoadedPlugins(pluginRootPath, false);
     141           0 :     jami::Manager::instance().saveConfig();
     142           0 :     return status;
     143             : #endif
     144             :     return -1;
     145             : }
     146             : 
     147             : std::map<std::string, std::string>
     148           0 : getPlatformInfo() {
     149             : #ifdef ENABLE_PLUGIN
     150           0 :     return jami::Manager::instance().getJamiPluginManager().getPlatformInfo();
     151             : #endif
     152             :     return {};
     153             : }
     154             : 
     155             : std::vector<std::string>
     156           0 : getCallMediaHandlers()
     157             : {
     158             : #ifdef ENABLE_PLUGIN
     159           0 :     return jami::Manager::instance()
     160           0 :         .getJamiPluginManager()
     161           0 :         .getCallServicesManager()
     162           0 :         .getCallMediaHandlers();
     163             : #endif
     164             :     return {};
     165             : }
     166             : 
     167             : std::vector<std::string>
     168           0 : getChatHandlers()
     169             : {
     170             : #ifdef ENABLE_PLUGIN
     171           0 :     return jami::Manager::instance()
     172           0 :         .getJamiPluginManager()
     173           0 :         .getChatServicesManager()
     174           0 :         .getChatHandlers();
     175             : #endif
     176             :     return {};
     177             : }
     178             : 
     179             : void
     180           0 : toggleCallMediaHandler(const std::string& mediaHandlerId, const std::string& callId, bool toggle)
     181             : {
     182             : #ifdef ENABLE_PLUGIN
     183           0 :     jami::Manager::instance()
     184           0 :         .getJamiPluginManager()
     185           0 :         .getCallServicesManager()
     186           0 :         .toggleCallMediaHandler(mediaHandlerId, callId, toggle);
     187             : #endif
     188           0 : }
     189             : 
     190             : void
     191           0 : toggleChatHandler(const std::string& chatHandlerId,
     192             :                   const std::string& accountId,
     193             :                   const std::string& peerId,
     194             :                   bool toggle)
     195             : {
     196             : #ifdef ENABLE_PLUGIN
     197           0 :     jami::Manager::instance()
     198           0 :         .getJamiPluginManager()
     199           0 :         .getChatServicesManager()
     200           0 :         .toggleChatHandler(chatHandlerId, accountId, peerId, toggle);
     201             : #endif
     202           0 : }
     203             : 
     204             : std::map<std::string, std::string>
     205           0 : getCallMediaHandlerDetails(const std::string& mediaHandlerId)
     206             : {
     207             : #ifdef ENABLE_PLUGIN
     208           0 :     return jami::Manager::instance()
     209           0 :         .getJamiPluginManager()
     210           0 :         .getCallServicesManager()
     211           0 :         .getCallMediaHandlerDetails(mediaHandlerId);
     212             : #endif
     213             :     return {};
     214             : }
     215             : 
     216             : std::vector<std::string>
     217           0 : getCallMediaHandlerStatus(const std::string& callId)
     218             : {
     219             : #ifdef ENABLE_PLUGIN
     220           0 :     return jami::Manager::instance()
     221           0 :         .getJamiPluginManager()
     222           0 :         .getCallServicesManager()
     223           0 :         .getCallMediaHandlerStatus(callId);
     224             : #endif
     225             :     return {};
     226             : }
     227             : 
     228             : std::map<std::string, std::string>
     229           0 : getChatHandlerDetails(const std::string& chatHandlerId)
     230             : {
     231             : #ifdef ENABLE_PLUGIN
     232           0 :     return jami::Manager::instance()
     233           0 :         .getJamiPluginManager()
     234           0 :         .getChatServicesManager()
     235           0 :         .getChatHandlerDetails(chatHandlerId);
     236             : #endif
     237             :     return {};
     238             : }
     239             : 
     240             : std::vector<std::string>
     241           0 : getChatHandlerStatus(const std::string& accountId, const std::string& peerId)
     242             : {
     243             : #ifdef ENABLE_PLUGIN
     244           0 :     return jami::Manager::instance()
     245           0 :         .getJamiPluginManager()
     246           0 :         .getChatServicesManager()
     247           0 :         .getChatHandlerStatus(accountId, peerId);
     248             : #endif
     249             :     return {};
     250             : }
     251             : 
     252             : bool
     253           7 : getPluginsEnabled()
     254             : {
     255             : #ifdef ENABLE_PLUGIN
     256           7 :     return jami::Manager::instance().pluginPreferences.getPluginsEnabled();
     257             : #endif
     258             :     return false;
     259             : }
     260             : 
     261             : void
     262           0 : setPluginsEnabled(bool state)
     263             : {
     264             : #ifdef ENABLE_PLUGIN
     265           0 :     jami::Manager::instance().pluginPreferences.setPluginsEnabled(state);
     266           0 :     for (auto& item : jami::Manager::instance().pluginPreferences.getLoadedPlugins()) {
     267           0 :         if (state)
     268           0 :             jami::Manager::instance().getJamiPluginManager().loadPlugin(item);
     269             :         else
     270           0 :             jami::Manager::instance().getJamiPluginManager().unloadPlugin(item);
     271           0 :     }
     272           0 :     jami::Manager::instance().saveConfig();
     273             : #endif
     274           0 : }
     275             : 
     276             : void
     277           0 : sendWebViewMessage(const std::string& pluginId,
     278             :                    const std::string& webViewId,
     279             :                    const std::string& messageId,
     280             :                    const std::string& payload)
     281             : {
     282             : #ifdef ENABLE_PLUGIN
     283           0 :     jami::Manager::instance()
     284           0 :         .getJamiPluginManager()
     285           0 :         .getWebViewServicesManager()
     286           0 :         .sendWebViewMessage(pluginId, webViewId, messageId, payload);
     287             : #endif
     288           0 : }
     289             : 
     290             : std::string
     291           0 : sendWebViewAttach(const std::string& pluginId,
     292             :                   const std::string& accountId,
     293             :                   const std::string& webViewId,
     294             :                   const std::string& action)
     295             : {
     296             : #ifdef ENABLE_PLUGIN
     297           0 :     return jami::Manager::instance()
     298           0 :         .getJamiPluginManager()
     299           0 :         .getWebViewServicesManager()
     300           0 :         .sendWebViewAttach(pluginId, accountId, webViewId, action);
     301             : #endif
     302             : }
     303             : 
     304             : void
     305           0 : sendWebViewDetach(const std::string& pluginId, const std::string& webViewId)
     306             : {
     307             : #ifdef ENABLE_PLUGIN
     308           0 :     jami::Manager::instance()
     309           0 :         .getJamiPluginManager()
     310           0 :         .getWebViewServicesManager()
     311           0 :         .sendWebViewDetach(pluginId, webViewId);
     312             : #endif
     313           0 : }
     314             : } // namespace libjami

Generated by: LCOV version 1.14