72 lines
2 KiB
JavaScript
72 lines
2 KiB
JavaScript
|
|
define(['pluginManager', 'globalize', 'appRouter'], function (pluginManager, globalize, appRouter) {
|
|||
|
|
'use strict';
|
|||
|
|
|
|||
|
|
function loadStrings(plugin) {
|
|||
|
|
|
|||
|
|
const strings = plugin.getTranslations ? plugin.getTranslations() : [];
|
|||
|
|
|
|||
|
|
return globalize.loadStrings({
|
|||
|
|
name: plugin.id || plugin.packageName,
|
|||
|
|
strings: strings
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function definePluginRoute(route, plugin) {
|
|||
|
|
|
|||
|
|
route.path = '/' + route.path;
|
|||
|
|
route.contentPath = route.path;
|
|||
|
|
////route.contentPath = pluginManager.mapPath(plugin, route.path);
|
|||
|
|
////route.path = pluginManager.mapRoute(plugin, route);
|
|||
|
|
|
|||
|
|
appRouter.addRoute(route);
|
|||
|
|
}
|
|||
|
|
function loadPlugin(url) {
|
|||
|
|
|
|||
|
|
if (url.startsWith('./') && url.endsWith('.js')) {
|
|||
|
|
|
|||
|
|
console.log('Loading plugin module: ' + url);
|
|||
|
|
return Emby.importModule(url).then(function (f) {
|
|||
|
|
return pluginManager.loadPlugin(f, url);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return pluginManager.loadPluginFromUrl(url);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
function loadPlugins(forcedPlugins) {
|
|||
|
|
|
|||
|
|
let hostPlugins = globalThis.NativePluginLoader.getFileSourcedPluginPaths();
|
|||
|
|
|
|||
|
|
let paths = forcedPlugins.concat(hostPlugins);
|
|||
|
|
|
|||
|
|
return Promise.all(paths.map(loadPlugin)).then(function() {
|
|||
|
|
|
|||
|
|
let hostObjectPlugins = globalThis.NativePluginLoader.getHostObjectPlugins();
|
|||
|
|
|
|||
|
|
for (let i = 0; i < hostObjectPlugins.length; i++) {
|
|||
|
|
|
|||
|
|
let plugin = hostObjectPlugins[i];
|
|||
|
|
|
|||
|
|
let hostObject = globalThis[plugin.hostObjectName];
|
|||
|
|
|
|||
|
|
Object.assign(hostObject, plugin);
|
|||
|
|
|
|||
|
|
pluginManager.register(hostObject);
|
|||
|
|
|
|||
|
|
if (hostObject.getRoutes) {
|
|||
|
|
hostObject.getRoutes().forEach(function (route) {
|
|||
|
|
definePluginRoute(route, hostObject);
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
loadStrings(hostObject);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return Promise.resolve();
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return {
|
|||
|
|
loadPlugins: loadPlugins
|
|||
|
|
};
|
|||
|
|
});
|