[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:
@@ -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',
|
||||
}),
|
||||
},
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user