Ir al contenido
Menú
Se marcó esta pregunta
3 Respuestas
4156 Vistas

Is there any way to patch a owl service function?


Just to give some context the idea is to reimplement the function _triggerDownload from the ActionService (@web/webclient/actions/action_service)


I have read the documentation have seen ways to patch components but not services.

Any help is appreciated.

Avatar
Descartar
Autor

Had to patch the start method from the service, although it works it does not seem to be the "best practice" to perform this override since I have to keep and manage all the code from the service in my reimplementation.

Still waiting for a better solution :)

Mejor respuesta

In Odoo OWL, you can patch a service function by using the extend() method provided by the Owl framework. The extend() method allows you to override the behavior of an existing service function by providing a new implementation for that function.

Here is an example of how you could use the extend() method to patch the _triggerDownload function in the ActionService:

import { ActionService } from '@web/webclient/actions/action_service';

ActionService.extend({
    _triggerDownload(id, action) {
        // Your new implementation of the _triggerDownload function goes here
    }
});

Keep in mind that patching service functions in this way should be done with caution, as it can potentially cause conflicts with other parts of the system that rely on the original behavior of the service. It's always a good idea to carefully test your changes and make sure they don't cause any unexpected issues.

Avatar
Descartar
Mejor respuesta

Hi, I read you found a way to patch the start method? I've been trying but nothings happening. Is this the correct code?

odoo.define("crm_custom.CopyFunction", function(require){
/** @odoo-module**/
'use strict';
var actionService = require("@web/webclient/actions/action_service")
const { patch } = require('web.utils')
patch(actionService, 'crm_custom.CopyFunction', {
start(env){
console.log("test")
}
})

});


I also added this to web.assets_backend but nothing is happening

Avatar
Descartar
Autor Mejor respuesta

#bump

Avatar
Descartar
Publicaciones relacionadas Respuestas Vistas Actividad
0
ene 25
350
1
mar 24
964
0
sept 23
2318
1
may 23
1742
0
oct 22
1540