1
0
Fork 0
mirror of synced 2024-09-18 02:08:34 +12:00
budibase/packages/builder/src/analytics/IntercomClient.js

67 lines
1.4 KiB
JavaScript
Raw Normal View History

2021-09-21 22:47:14 +12:00
export default class IntercomClient {
constructor(token) {
this.token = token
}
init() {
if (!this.token) return
const token = this.token
var w = window
var ic = w.Intercom
if (typeof ic === "function") {
ic("reattach_activator")
ic("update", w.intercomSettings)
} else {
var d = document
var i = function () {
i.c(arguments)
}
i.q = []
i.c = function (args) {
i.q.push(args)
}
w.Intercom = i
var l = function () {
var s = d.createElement("script")
s.type = "text/javascript"
s.async = true
s.src = "https://widget.intercom.io/widget/" + token
var x = d.getElementsByTagName("script")[0]
x.parentNode.insertBefore(s, x)
}
if (document.readyState === "complete") {
l()
} else if (w.attachEvent) {
w.attachEvent("onload", l)
} else {
w.addEventListener("load", l, false)
}
this.initialised = true
}
}
show(user = {}) {
if (!this.initialised) return
return window.Intercom("boot", {
app_id: this.token,
...user
})
}
update() {
if (!this.initialised) return
return window.Intercom("update")
}
captureEvent(event, props = {}) {
if (!this.initialised) return
window.Intercom("trackEvent", event, props);
}
}