/** @odoo-module **/ import { registry } from "@web/core/registry"; const modelDefinitionsRegistry = registry.category("bus.model.definitions"); const customModelFieldsRegistry = modelDefinitionsRegistry.category("fieldsToInsert"); const recordsToInsertRegistry = modelDefinitionsRegistry.category("recordsToInsert"); const fakeModelsRegistry = modelDefinitionsRegistry.category("fakeModels"); /** * Add models whose definitions need to be fetched on the server. * * @param {string[]} modelName */ export function addModelNamesToFetch(modelNames) { if (!modelDefinitionsRegistry.contains("modelNamesToFetch")) { modelDefinitionsRegistry.add("modelNamesToFetch", []); } modelDefinitionsRegistry.get("modelNamesToFetch").push(...modelNames); } /** * Add models that will be added to the model definitions. We should * avoid to rely on fake models and use real models instead. * * @param {string} modelName * @param {Object} fields */ export function addFakeModel(modelName, fields) { fakeModelsRegistry.add(modelName, fields); } /** * Add model fields that are not present on the server side model's definitions * but are required to ease testing or add default values for existing fields. * * @param {string} modelName * @param {Object} fieldNamesToFields */ export function insertModelFields(modelName, fieldNamesToFields) { const modelCustomFieldsRegistry = customModelFieldsRegistry.category(modelName); for (const fname in fieldNamesToFields) { modelCustomFieldsRegistry.add(fname, fieldNamesToFields[fname]); } } /** * Add records to the initial server data. * * @param {string} modelName * @param {Object[]} records */ export function insertRecords(modelName, records) { if (!recordsToInsertRegistry.contains(modelName)) { recordsToInsertRegistry.add(modelName, []); } recordsToInsertRegistry.get(modelName).push(...records); }