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
|