@atlaskit/analytics-listeners
Version:
Fabric analytics listeners to be used by the products
60 lines • 2.83 kB
JavaScript
import React from 'react';
import { FabricChannel } from './types';
import FabricElementsListener from './fabric/FabricElementsListener';
import AtlaskitListener from './atlaskit/AtlaskitListener';
import Logger from './helpers/logger';
import NavigationListener from './navigation/NavigationListener';
import FabricEditorListener from './fabric/FabricEditorListener';
import MediaAnalyticsListener from './media/MediaAnalyticsListener';
import PeopleTeamsAnalyticsListener from './peopleTeams/PeopleTeamsAnalyticsListener';
import NotificationsAnalyticsListener from './notifications/NotificationsAnalyticsListener';
import RecentWorkAnalyticsListener from './recentWork/RecentWorkAnalyticsListener';
import AtlasAnalyticsListener from './atlas/AtlasAnalyticsListener';
import CrossFlowAnalyticsListener from './cross-flow/CrossFlowAnalyticsListener';
import LinkingPlatformAnalyticsListener from './linkingPlatform/LinkingPlatformAnalyticsListener';
import PostOfficeAnalyticsListener from './postOffice/PostOfficeAnalyticsListener';
import AIMateAnalyticsListener from './aiMate/AIMateAnalyticsListener';
import AVPAnalyticsListener from './avp/AVPAnalyticsListener';
import GrowthAnalyticsListener from './growth/GrowthAnalyticsListener';
const listenerMap = {
[FabricChannel.elements]: FabricElementsListener,
[FabricChannel.editor]: FabricEditorListener,
[FabricChannel.atlaskit]: AtlaskitListener,
[FabricChannel.navigation]: NavigationListener,
[FabricChannel.media]: MediaAnalyticsListener,
[FabricChannel.peopleTeams]: PeopleTeamsAnalyticsListener,
[FabricChannel.notifications]: NotificationsAnalyticsListener,
[FabricChannel.recentWork]: RecentWorkAnalyticsListener,
[FabricChannel.atlas]: AtlasAnalyticsListener,
[FabricChannel.crossFlow]: CrossFlowAnalyticsListener,
[FabricChannel.linkingPlatform]: LinkingPlatformAnalyticsListener,
[FabricChannel.postOffice]: PostOfficeAnalyticsListener,
[FabricChannel.aiMate]: AIMateAnalyticsListener,
[FabricChannel.avp]: AVPAnalyticsListener,
[FabricChannel.growth]: GrowthAnalyticsListener
};
class FabricAnalyticsListeners extends React.Component {
constructor(props) {
super(props);
this.logger = new Logger({
logLevel: props.logLevel
});
}
render() {
const {
client,
children,
logLevel,
excludedChannels
} = this.props;
if (typeof logLevel === 'number') {
this.logger.setLogLevel(logLevel);
}
const listeners = Object.keys(listenerMap).filter(channel => !excludedChannels || excludedChannels.indexOf(channel) < 0).map(channel => listenerMap[channel]).reduce((prev, Listener) => /*#__PURE__*/React.createElement(Listener, {
client: client,
logger: this.logger
}, prev), children);
return listeners;
}
}
export default FabricAnalyticsListeners;