diff --git a/app_chatgpt/__manifest__.py b/app_chatgpt/__manifest__.py index 18ab3b37..77913e56 100644 --- a/app_chatgpt/__manifest__.py +++ b/app_chatgpt/__manifest__.py @@ -64,7 +64,7 @@ ], 'assets': { 'mail.assets_messaging': [ - 'app_chatgpt/static/src/models/*.js', + 'app_chatgpt/static/src/models/message.js', ], 'mail.assets_model_data': [ 'app_chatgpt/static/src/models_data/*.js', diff --git a/app_chatgpt/static/src/components/message/message.xml b/app_chatgpt/static/src/components/message/message.xml index f86fc82e..c3944c6f 100644 --- a/app_chatgpt/static/src/components/message/message.xml +++ b/app_chatgpt/static/src/components/message/message.xml @@ -1,22 +1,20 @@ - - -
-
-
-
- ------------------ -
- - / - -
+ +
+
+
+ ------------------ +
+ + + / + +
- - +
\ No newline at end of file diff --git a/app_chatgpt/static/src/models/emoji_registry.js b/app_chatgpt/static/src/models/emoji_registry.js index 1dee227e..25dc71c7 100644 --- a/app_chatgpt/static/src/models/emoji_registry.js +++ b/app_chatgpt/static/src/models/emoji_registry.js @@ -1,48 +1,64 @@ /** @odoo-module **/ -import { insert } from '@mail/model/model_field_command'; -import { getBundle, loadBundle } from '@web/core/assets'; -import { registerPatch } from '@mail/model/model_core'; +import { EmojiPicker } from "@web/core/emoji_picker/emoji_picker"; +import { loader } from "@web/core/emoji_picker/emoji_picker"; -registerPatch({ - name: 'EmojiRegistry', - recordMethods: { - async loadEmojiData() { - this.update({isLoading: true}); - await getBundle('mail.assets_model_data').then(loadBundle); - //优化 data 文件 - const {emojiCategoriesData, emojisData} = await odoo.runtimeImport("@app_chatgpt/models_data/emoji_data"); - if (!this.exists()) { - return; - } - this._populateFromEmojiData(emojiCategoriesData, emojisData); - }, - async _populateFromEmojiData(dataCategories, dataEmojis) { - dataCategories.map(category => { - const emojiCount = dataEmojis.reduce((acc, emoji) => emoji.category === category.name ? acc + 1 : acc, 0); - this.update({ - dataCategories: insert({ - name: category.name, - displayName: category.displayName, - title: category.title, - sortId: category.sortId, - emojiCount, - }), - }); - }); - this.models['Emoji'].insert(dataEmojis.map(emojiData => ({ - codepoints: emojiData.codepoints, - shortcodes: emojiData.shortcodes, - emoticons: emojiData.emoticons, - name: emojiData.name, - keywords: emojiData.keywords, - emojiDataCategory: {name: emojiData.category}, - }))); - this.update({ - isLoaded: true, - isLoading: false, - }); - }, - }, + +patch(EmojiPicker.prototype, { + async loadEmoji() { + try { + await loader.loadEmoji(); + return odoo.loader.modules.get("@web/core/emoji_picker/emoji_data"); + } catch { + // Could be intentional (tour ended successfully while emoji still loading) + return {emojis: [], categories: []}; } -) + }, +}); + +// import { insert } from '@mail/model/model_field_command'; +// import { getBundle, loadBundle} from '@web/core/assets'; +// import {registerPatch} from '@mail/model/model_core'; +// +// registerPatch({ +// name: 'EmojiRegistry', +// recordMethods: { +// async loadEmojiData() { +// this.update({isLoading: true}); +// await getBundle('mail.assets_model_data').then(loadBundle); +// //优化 data 文件 +// const {emojiCategoriesData, emojisData} = await odoo.runtimeImport("@app_chatgpt/models_data/emoji_data"); +// if (!this.exists()) { +// return; +// } +// this._populateFromEmojiData(emojiCategoriesData, emojisData); +// }, +// async _populateFromEmojiData(dataCategories, dataEmojis) { +// dataCategories.map(category => { +// const emojiCount = dataEmojis.reduce((acc, emoji) => emoji.category === category.name ? acc + 1 : acc, 0); +// this.update({ +// dataCategories: insert({ +// name: category.name, +// displayName: category.displayName, +// title: category.title, +// sortId: category.sortId, +// emojiCount, +// }), +// }); +// }); +// this.models['Emoji'].insert(dataEmojis.map(emojiData => ({ +// codepoints: emojiData.codepoints, +// shortcodes: emojiData.shortcodes, +// emoticons: emojiData.emoticons, +// name: emojiData.name, +// keywords: emojiData.keywords, +// emojiDataCategory: {name: emojiData.category}, +// }))); +// this.update({ +// isLoaded: true, +// isLoading: false, +// }); +// }, +// }, +// } +// ) diff --git a/app_chatgpt/static/src/models/message.js b/app_chatgpt/static/src/models/message.js index 4d715392..e9de706d 100644 --- a/app_chatgpt/static/src/models/message.js +++ b/app_chatgpt/static/src/models/message.js @@ -1,30 +1,37 @@ /** @odoo-module **/ +import { Message } from "@mail/core/common/message_model"; -import { insert } from '@mail/model/model_field_command'; -import { attr, many, one } from '@mail/model/model_field'; -import { registerPatch } from '@mail/model/model_core'; +patch(Message, { + /** @type {number} */ + human_prompt_tokens, + /** @type {number} */ + ai_completion_tokens, + /** @type {boolean} */ + is_ai, +}); -registerPatch({ - name: 'Message', - modelMethods: { - convertData(data) { - const data2 = this._super(data); - if ('human_prompt_tokens' in data) { - data2.human_prompt_tokens = data.human_prompt_tokens; - } - if ('ai_completion_tokens' in data) { - data2.ai_completion_tokens = data.ai_completion_tokens; - } - if ('is_ai' in data) { - data2.is_ai = data.is_ai; - } - return data2; - }, - }, - fields: { - human_prompt_tokens: attr(), - ai_completion_tokens: attr(), - is_ai: attr(), - - } -}) \ No newline at end of file +// +// registerPatch({ +// name: 'Message', +// modelMethods: { +// convertData(data) { +// const data2 = this._super(data); +// if ('human_prompt_tokens' in data) { +// data2.human_prompt_tokens = data.human_prompt_tokens; +// } +// if ('ai_completion_tokens' in data) { +// data2.ai_completion_tokens = data.ai_completion_tokens; +// } +// if ('is_ai' in data) { +// data2.is_ai = data.is_ai; +// } +// return data2; +// }, +// }, +// fields: { +// human_prompt_tokens: attr(), +// ai_completion_tokens: attr(), +// is_ai: attr(), +// +// } +// }) \ No newline at end of file