Přejít na obsah
Menu
You need to be registered to interact with the community.
This question has been flagged
3 Odpovědi
5070 Zobrazení

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
Zrušit
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 :)

Nejlepší odpověď

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
Zrušit
Nejlepší odpověď

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
Zrušit
Autor Nejlepší odpověď

#bump

Avatar
Zrušit
Related Posts Odpovědi Zobrazení Aktivita
2
čvc 25
407
0
led 25
899
1
bře 24
1552
0
zář 23
2822
1
kvě 23
2158