[IMP] mail: introduce EmojiCategory model

This commit introduces the EmojiCategory model

Part of Task-2365687

closes odoo/odoo#93117

Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
This commit is contained in:
Nemael
2022-06-16 19:33:00 +02:00
committed by Alexandre Kühn
parent 8ac060e78d
commit fd62f9f9ce
5 changed files with 106 additions and 4 deletions
+15 -3
View File
@@ -1,17 +1,30 @@
/** @odoo-module **/
import { registerModel } from '@mail/model/model_core';
import { attr, one, many } from '@mail/model/model_field';
import { attr, many, one } from '@mail/model/model_field';
import { replace } from '@mail/model/model_field_command';
registerModel({
name: 'Emoji',
identifyingFields: ['unicode'],
recordMethods: {
/**
* @private
* @returns {FieldCommand}
*/
_computeEmojiRegistry() {
return replace(this.messaging.emojiRegistry);
},
},
fields: {
description: attr({
readonly: true,
required: true,
}),
emojiCategories: many('EmojiCategory', {
inverse: 'allEmojis',
}),
emojiRegistry: one('EmojiRegistry', {
compute: '_computeEmojiRegistry',
inverse: 'allEmojis',
readonly: true,
required: true,
@@ -23,7 +36,6 @@ registerModel({
}),
sources: attr({
readonly: true,
required: true,
}),
unicode: attr({
readonly: true,
@@ -0,0 +1,38 @@
/** @odoo-module **/
import { registerModel } from '@mail/model/model_core';
import { attr, many, one } from '@mail/model/model_field';
import { replace } from '@mail/model/model_field_command';
registerModel({
name: 'EmojiCategory',
identifyingFields: ['categoryName'],
recordMethods: {
/**
* @private
* @returns {FieldCommand}
*/
_computeEmojiRegistry() {
return replace(this.messaging.emojiRegistry);
},
},
fields: {
allEmojis: many('Emoji', {
inverse: 'emojiCategories',
}),
categoryName: attr({
readonly: true,
required: true,
}),
emojiCategoryViews: many('EmojiCategoryView', {
inverse: 'emojiCategory',
readonly: true,
isCausal: true,
}),
emojiRegistry: one('EmojiRegistry', {
compute: '_computeEmojiRegistry',
inverse: 'allCategories',
required: true,
}),
},
});
@@ -0,0 +1,21 @@
/** @odoo-module **/
import { registerModel } from '@mail/model/model_core';
import { one } from '@mail/model/model_field';
registerModel({
name: 'EmojiCategoryView',
identifyingFields: ['emojiCategory', 'emojiListView'],
fields: {
emojiCategory: one('EmojiCategory', {
inverse: 'emojiCategoryViews',
readonly: true,
required: true,
}),
emojiListView: one('EmojiListView', {
inverse: 'emojiCategoryViews',
readonly: true,
required: true,
}),
}
});
@@ -1,7 +1,7 @@
/** @odoo-module **/
import { registerModel } from '@mail/model/model_core';
import { one, many } from '@mail/model/model_field';
import { many, one } from '@mail/model/model_field';
import { insertAndReplace, replace } from '@mail/model/model_field_command';
registerModel({
@@ -30,8 +30,26 @@ registerModel({
})
);
},
/**
* @private
* @returns {FieldCommand}
*/
_computeEmojiCategoryViews() {
return insertAndReplace(
this.messaging.emojiRegistry.allCategories.map(emojiCategory => {
return { emojiCategory: replace(emojiCategory) };
})
);
},
},
fields: {
emojiCategoryViews: many('EmojiCategoryView', {
compute: '_computeEmojiCategoryViews',
inverse: 'emojiListView',
readonly: true,
isCausal: true,
}),
emojiViews: many('EmojiView', {
compute: '_computeEmojiViews',
inverse: 'emojiListView',
@@ -94,5 +94,18 @@ registerModel({
]),
inverse: 'emojiRegistry',
}),
allCategories: many('EmojiCategory', {
default: insertAndReplace([
{ categoryName: "all", allEmojis: insertAndReplace(["😊", "😃", "😆", "😂", "😉", "😎", "😜", "😋", "😝", "😳", "😐", "😕", "😞", "😱", "😲", "😨", "😠", "😈", "😘", "😇", "😢", "😭", "❤️", "💔", "😍", "👳", "👍", "👎", "👌", "💩", "🙈", "🙉", "🙊", "🐞", "😺", "🐻", "🐌", "🐗", "🍀", "🌹", "🔥", "☀️", "⛅️", "🌈", "☁️", "⚡️", "⭐️", "🍪", "🍕", "🍔", "🍟", "🎂", "🍰", "☕️", "🍌", "🍣", "🍙", "🍺", "🍷", "🍸", "🍹", "🍻", "🧀", "👻", "💀", "👽", "🎉", "🏆", "🔑", "📌", "📯", "🎵", "🎺", "🎸", "🏃", "🚲", "⚽️", "🏈", "🎱", "🎬", "🎤"].map(unicode => ({ unicode }))) },
{ categoryName: "🤠", allEmojis: insertAndReplace(["😊", "😃", "😆", "😂", "😉", "😎", "😜", "😋", "😝", "😳", "😐", "😕", "😞", "😱", "😲", "😨", "😠", "😈", "😘", "😇", "😢", "😭", "❤️", "💔", "😍", "👳", "👍", "👎", "👌", "💩"].map(unicode => ({ unicode }))) },
{ categoryName: "🐿", allEmojis: insertAndReplace(["🙈", "🙉", "🙊", "🐞", "😺", "🐻", "🐌", "🐗"].map(unicode => ({ unicode }))) },
{ categoryName: "🌿", allEmojis: insertAndReplace(["🍀", "🌹", "🔥", "☀️", "⛅️", "🌈", "☁️", "⚡️", "⭐️"].map(unicode => ({ unicode }))) },
{ categoryName: "🍽", allEmojis: insertAndReplace(["🍪", "🍕", "🍔", "🍟", "🎂", "🍰", "☕️", "🍌", "🍣", "🍙", "🍺", "🍷", "🍸", "🍹", "🍻", "🧀"].map(unicode => ({ unicode }))) },
{ categoryName: "📦", allEmojis: insertAndReplace(["👻", "💀", "👽", "🎉", "🏆", "🔑", "📌", "📯", "🎵", "🎺", "🎸"].map(unicode => ({ unicode }))) },
{ categoryName: "⚽️", allEmojis: insertAndReplace(["🏃", "🚲", "⚽️", "🏈", "🎱", "🎬", "🎤"].map(unicode => ({ unicode }))) },
]),
inverse: 'emojiRegistry',
}),
},
});