Copy the Chatwoot (v4.14.0) frontend runnable subset into frontend/ for customization: - app/javascript/ (Vue SPA: dashboard, widget, sdk, portal, superadmin) - app/views/ (ERB templates for vite-plugin-ruby entrypoint resolution) - app/helpers/, app/assets/ (Rails view helpers, static assets) - enterprise/ (Enterprise edition frontend overlay) - config/vite.json, vite.config.ts, bin/vite (Vite-Rails toolchain) - package.json, pnpm-lock.yaml, tailwind/postcss/eslint configs - Gemfile, Gemfile.lock (vite_rails gem for bin/vite binstub) Excluded Rails backend: controllers, models, services, jobs, mailers, policies, db, lib, spec, public, node_modules. Update references to the new frontend location: - .gitignore: exclude frontend build artifacts (node_modules, tmp, packs), keep frontend/bin/ and frontend/vendor/ via negation - backend/scripts/parity_frontend_smoke.sh: CHATWOOT_DIR default reference/chatwoot -> ../frontend - backend/scripts/parity_frontend_browser_smoke.mjs: same default update - AGENTS.md: add frontend section with Rails/Vite coupling notes - README: architecture tree includes frontend/
80 lines
1.9 KiB
ERB
80 lines
1.9 KiB
ERB
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />
|
|
<body>
|
|
</body>
|
|
|
|
<%
|
|
user_id = 1
|
|
user_hash = OpenSSL::HMAC.hexdigest(
|
|
'sha256',
|
|
@web_widget.hmac_token,
|
|
user_id.to_s
|
|
)
|
|
|
|
%>
|
|
<script>
|
|
|
|
window.chatwootSettings = {
|
|
hideMessageBubble: false,
|
|
// showUnreadMessagesDialog: false,
|
|
// baseDomain: '.loca.lt',
|
|
position: '<%= @widget_position %>',
|
|
locale: 'en',
|
|
useBrowserLanguage: true,
|
|
type: '<%= @widget_type %>',
|
|
// showPopoutButton: true,
|
|
widgetStyle: '<%= @widget_style %>',
|
|
darkMode: '<%= @dark_mode %>',
|
|
};
|
|
|
|
(function(d,t) {
|
|
var BASE_URL = '';
|
|
var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
|
g.src= BASE_URL + "/packs/js/sdk.js";
|
|
g.async = true;
|
|
s.parentNode.insertBefore(g,s);
|
|
g.onload=function(){
|
|
window.chatwootSDK.run({
|
|
websiteToken: '<%= @web_widget.website_token %>',
|
|
baseUrl: BASE_URL
|
|
})
|
|
}
|
|
})(document,"script");
|
|
|
|
window.addEventListener('chatwoot:ready', function() {
|
|
console.log('chatwoot:ready', window.$chatwoot);
|
|
if (window.location.search.includes('setUser')) {
|
|
window.$chatwoot.setUser('<%= user_id %>', {
|
|
identifier_hash: '<%= user_hash %>',
|
|
email: 'jane@example.com',
|
|
name: 'Jane Doe',
|
|
phone_number: ''
|
|
});
|
|
}
|
|
})
|
|
|
|
window.addEventListener('chatwoot:error', function(e) {
|
|
console.log('chatwoot:error', e.detail)
|
|
})
|
|
|
|
|
|
window.addEventListener('chatwoot:on-message', function(e) {
|
|
console.log('chatwoot:on-message', e.detail)
|
|
})
|
|
|
|
window.addEventListener('chatwoot:postback', function(e) {
|
|
console.log('chatwoot:postback', e.detail)
|
|
})
|
|
|
|
window.addEventListener('chatwoot:opened', function() {
|
|
console.log('chatwoot:opened')
|
|
})
|
|
|
|
window.addEventListener('chatwoot:closed', function() {
|
|
console.log('chatwoot:closed')
|
|
})
|
|
|
|
window.addEventListener('chatwoot:on-start-conversation', function(e) {
|
|
console.log('chatwoot:on-start-conversation', e.detail)
|
|
})
|
|
</script>
|