67 lines
1.4 KiB
JavaScript
67 lines
1.4 KiB
JavaScript
|
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);
|
||
|
}
|
||
|
}
|