/*---------------------------------------------------------------
    Copyright 2020 Le Filament
    License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
------------------------------------------------------------------*/

odoo.define('cgscop_alfresco.form_widgets', function(require) {
    "use strict";

    var core = require('web.core');
    var form_widgets = require('cmis_web.form_widgets');
    var session = require('web.session');

    form_widgets.CmisObjectWrapper.include({
        /* Surcharge les fonction parse_object (téléchargement)
         * et get_content_url (preview) pour passer le ticket
         * l'url appelée
        */
        parse_object: function (cmis_object) {
            this._super.apply(this, arguments);
            if (this.cmis_session.alf_ticket) {
                this.url = this.cmis_session.getContentStreamURL(this.objectId, 'attachment', {'alf_ticket': this.cmis_session.alf_ticket});
            }
        },
        get_content_url: function () {
            var options = {}
            if (this.cmis_session.alf_ticket) {
                options = {'alf_ticket': this.cmis_session.alf_ticket};
            }
            return this.cmis_session.getContentStreamURL(this.objectId, 'inline', options);
        },
    }),

    form_widgets.FieldCmisFolder.include({
        /**
         * Surcharge la fonction d'initialisation de la session CMIS pour
         * passer le token de l'utilisateur
         */
         init_cmis_session: function () {
            var self = this;
            $.when(this.cmis_config_loaded).done(function () {
                self.cmis_session = cmis.createSession(self.cmis_location);
                self.cmis_session.setGlobalHandlers(self.on_cmis_error, self.on_cmis_error);

                // CGSCOP : appel vers la fonction custom
                self._rpc({route:'/web/alfresco/session', params:{
                    'username': session.username
                }}).done(function (result) {
                    self.cmis_session['alf_ticket'] = result;
                    self.cmis_session.setCredentials('ROLE_TICKET', result);
                });
                self.cmis_session_initialized.resolve();
                self.cmis_session.setCharacterSet(document.characterSet);
            });
        },
    });

});