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

58 lines
2 KiB
JavaScript

import { CleanInsights, ConsentRequestUi } from 'clean-insights-sdk';
export default {
install(Vue, 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 ''
}
}
const cleanInsightsService = new Vue({
config: config,
data() {
return {
ci: null,
campaignId: null,
requestUi: null,
}
},
created() {
if (this.$options.config) {
const config = this.$options.config;
this.ci = new CleanInsights(config);
// Get name of first campaign in the config.
this.campaignId = Object.keys(config.campaigns || { invalid: {} })[0];
}
},
methods: {
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);
})
}
}
});
return cleanInsightsService;
}
}