2016-10-10 15:34:21 -03:00
|
|
|
import Algolia from './providers/algolia/implementation';
|
2017-01-10 22:23:22 -02:00
|
|
|
import AssetStore from './providers/assetStore/implementation';
|
2016-10-10 15:34:21 -03:00
|
|
|
import { Map } from 'immutable';
|
|
|
|
|
2017-01-10 22:23:22 -02:00
|
|
|
export function resolveIntegrations(interationsConfig, getToken) {
|
2016-10-10 15:34:21 -03:00
|
|
|
let integrationInstances = Map({});
|
|
|
|
interationsConfig.get('providers').forEach((providerData, providerName) => {
|
|
|
|
switch (providerName) {
|
|
|
|
case 'algolia':
|
|
|
|
integrationInstances = integrationInstances.set('algolia', new Algolia(providerData));
|
|
|
|
break;
|
2017-01-10 22:23:22 -02:00
|
|
|
case 'assetStore':
|
2018-08-07 14:46:54 -06:00
|
|
|
integrationInstances = integrationInstances.set(
|
|
|
|
'assetStore',
|
|
|
|
new AssetStore(providerData, getToken),
|
|
|
|
);
|
2017-01-10 22:23:22 -02:00
|
|
|
break;
|
2016-10-10 15:34:21 -03:00
|
|
|
}
|
|
|
|
});
|
|
|
|
return integrationInstances;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const getIntegrationProvider = (function() {
|
|
|
|
let integrations = null;
|
|
|
|
|
2017-01-10 22:23:22 -02:00
|
|
|
return (interationsConfig, getToken, provider) => {
|
2016-10-10 15:34:21 -03:00
|
|
|
if (integrations) {
|
|
|
|
return integrations.get(provider);
|
|
|
|
} else {
|
2017-01-10 22:23:22 -02:00
|
|
|
integrations = resolveIntegrations(interationsConfig, getToken);
|
2016-10-10 15:34:21 -03:00
|
|
|
return integrations.get(provider);
|
|
|
|
}
|
|
|
|
};
|
2018-08-07 14:46:54 -06:00
|
|
|
})();
|