import { CleanInsights, ConsentRequestUi } from "clean-insights-sdk"; export default { install(app, config) { class RequestUi extends ConsentRequestUi { showForCampaign(campaignId, campaign, complete) { const period = campaign.nextTotalMeasurementPeriod; if (!period) { return ""; } let message = "Help us improve!\n\n" + `We would like to collect anonymous usage data between ${period.start.format("LLL")} and ${period.end.format( "LLL" )} to improve the quality of the product.\n\nYour help would be highly appreciated.`; complete(window.confirm(message)); return ""; } } class CleanInsightsServiceClass { constructor() { this.config = config; this.ci = null; this.campaignId = null; this.requestUi = null; if (config) { this.ci = new CleanInsights(config); // Get name of first campaign in the config. this.campaignId = Object.keys(config.campaigns || { invalid: {} })[0]; } } event(category, action) { if (!this.ci) { return; } if (!this.requestUi) { this.requestUi = new RequestUi(); } this.ci.requestConsentForCampaign(this.campaignId, this.requestUi, (granted) => { if (!granted) { return; } this.ci.measureEvent(category, action, this.campaignId); }); } } const cleanInsightsService = new CleanInsightsServiceClass(); return cleanInsightsService; }, };