keanu-weblite/src/services/cleaninsights.service.js

56 lines
1.6 KiB
JavaScript
Raw Normal View History

2025-05-12 12:39:04 +02:00
import { CleanInsights, ConsentRequestUi } from "clean-insights-sdk";
export default {
2025-05-12 12:39:04 +02:00
install(app, config) {
class RequestUi extends ConsentRequestUi {
showForCampaign(campaignId, campaign, complete) {
const period = campaign.nextTotalMeasurementPeriod;
if (!period) {
return "";
}
2025-05-12 12:39:04 +02:00
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 "";
}
}
2025-05-12 12:39:04 +02:00
class CleanInsightsServiceClass {
constructor() {
this.config = config;
this.ci = null;
this.campaignId = null;
this.requestUi = null;
if (config) {
this.ci = new CleanInsights(config);
2025-05-12 12:39:04 +02:00
// Get name of first campaign in the config.
this.campaignId = Object.keys(config.campaigns || { invalid: {} })[0];
}
}
2021-09-25 09:29:05 +02:00
2025-05-12 12:39:04 +02:00
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);
});
2025-05-12 12:39:04 +02:00
}
}
2025-05-12 12:39:04 +02:00
const cleanInsightsService = new CleanInsightsServiceClass();
return cleanInsightsService;
},
};