export const useCrisp = () => { let crisp = process.client ? window.Crisp : null function openChat() { if (!crisp) return showChat() crisp.chat.open() } function showChat() { if (!crisp) return crisp.chat.show() } function hideChat() { if (!crisp) return crisp.chat.hide() } function closeChat() { if (!crisp) return crisp.chat.close() } function openAndShowChat(message = null) { if (!crisp) return showChat() openChat() if (message) sendTextMessage(message) } function openHelpdesk() { if (!crisp) return openChat() crisp.chat.setHelpdeskView() } function openHelpdeskArticle(articleSlug, locale = 'en') { if (!crisp) return crisp.chat.openHelpdeskArticle(locale, articleSlug); } function sendTextMessage(message) { if (!crisp) return crisp.message.send('text', message) } function setUser(user) { if (!crisp) return crisp.user.setEmail(user.email); crisp.user.setNickname(user.name); crisp.session.setData({ user_id: user.id, 'pro-subscription': user?.is_subscribed ?? false, 'stripe-id': user?.stripe_id ?? '', 'subscription': user?.has_enterprise_subscription ? 'enterprise' : 'pro' }); if (user?.is_subscribed ?? false) { setSegments(['subscribed', user?.has_enterprise_subscription ? 'enterprise' : 'pro']) } } function pushEvent(event, data = {}) { if (!crisp) return crisp.pushEvent(event, data) } function setSegments(segments, overwrite = false) { if (!crisp) return crisp.session.setSegments(segments, overwrite) } return { crisp, openChat, showChat, hideChat, closeChat, openAndShowChat, openHelpdesk, openHelpdeskArticle, sendTextMessage, pushEvent, setUser } }