91 lines
3.0 KiB
JavaScript
91 lines
3.0 KiB
JavaScript
/* @odoo-module */
|
|
|
|
import { getPyEnv } from "@bus/../tests/helpers/mock_python_environment";
|
|
|
|
import { LivechatButton } from "@im_livechat/embed/common/livechat_button";
|
|
|
|
import { ChatWindowContainer } from "@mail/core/common/chat_window_container";
|
|
import { setupManager } from "@mail/../tests/helpers/webclient_setup";
|
|
|
|
import { App, onMounted } from "@odoo/owl";
|
|
|
|
import { registry } from "@web/core/registry";
|
|
import { patch } from "@web/core/utils/patch";
|
|
import { session } from "@web/session";
|
|
import { registerCleanup } from "@web/../tests/helpers/cleanup";
|
|
import { patchWithCleanup, makeDeferred } from "@web/../tests/helpers/utils";
|
|
import { createWebClient } from "@web/../tests/webclient/helpers";
|
|
|
|
// =============================================================================
|
|
// SETUP
|
|
// =============================================================================
|
|
|
|
/**
|
|
* Setup the server side of the livechat app.
|
|
*
|
|
* @returns {Promise<number>} the id of the livechat channel.
|
|
*/
|
|
export async function loadDefaultConfig() {
|
|
const pyEnv = await getPyEnv();
|
|
const livechatChannelId = pyEnv["im_livechat.channel"].create({
|
|
user_ids: [pyEnv.adminUserId],
|
|
});
|
|
patchWithCleanup(session, {
|
|
livechatData: {
|
|
isAvailable: true,
|
|
serverUrl: window.origin,
|
|
options: {
|
|
header_background_color: "#875A7B",
|
|
button_background_color: "#875A7B",
|
|
title_color: "#FFFFFF",
|
|
button_text_color: "#FFFFFF",
|
|
button_text: "Have a Question? Chat with us.",
|
|
input_placeholder: false,
|
|
default_message: "Hello, how may I help you?",
|
|
channel_name: "YourWebsite.com",
|
|
channel_id: livechatChannelId,
|
|
default_username: "Visitor",
|
|
},
|
|
},
|
|
});
|
|
return livechatChannelId;
|
|
}
|
|
|
|
patch(App.prototype, {
|
|
mount() {
|
|
registerCleanup(() => this.destroy());
|
|
return super.mount(...arguments);
|
|
},
|
|
});
|
|
|
|
/**
|
|
* Mount the livechat button into the webclient.
|
|
*
|
|
* @param {Object} param0
|
|
* @returns {Promise<any>}
|
|
*/
|
|
export async function start({ mockRPC } = {}) {
|
|
setupManager.setupServiceRegistries();
|
|
const mainComponentRegistry = registry.category("main_components");
|
|
mainComponentRegistry.add("LivechatButton", { Component: LivechatButton });
|
|
mainComponentRegistry.add("ChatWindowContainer", { Component: ChatWindowContainer });
|
|
const livechatButtonAvailableDeferred = makeDeferred();
|
|
patchWithCleanup(LivechatButton.prototype, {
|
|
setup() {
|
|
super.setup(...arguments);
|
|
onMounted(() => livechatButtonAvailableDeferred.resolve());
|
|
},
|
|
});
|
|
const pyEnv = await getPyEnv();
|
|
pyEnv.logout();
|
|
const { env } = await createWebClient({
|
|
serverData: {
|
|
models: pyEnv.getData(),
|
|
views: pyEnv.getViews(),
|
|
},
|
|
mockRPC,
|
|
});
|
|
await livechatButtonAvailableDeferred;
|
|
return env;
|
|
}
|