mirror of
https://github.com/bringout/oca-ocb-mail.git
synced 2026-04-25 02:42:03 +02:00
Initial commit: Mail packages
This commit is contained in:
commit
4e53507711
1948 changed files with 751201 additions and 0 deletions
|
|
@ -0,0 +1,79 @@
|
|||
/** @odoo-module **/
|
||||
|
||||
import Timer from '@im_livechat/legacy/models/timer';
|
||||
|
||||
import Class from 'web.Class';
|
||||
|
||||
/**
|
||||
* This class lists several timers that use a same callback and duration.
|
||||
*/
|
||||
const Timers = Class.extend({
|
||||
|
||||
/**
|
||||
* Instantiate a new list of timers
|
||||
*
|
||||
* @param {Object} params
|
||||
* @param {integer} params.duration duration of the underlying timers from
|
||||
* start to timeout, in milli-seconds.
|
||||
* @param {function} params.onTimeout a function to call back for underlying
|
||||
* timers on timeout.
|
||||
*/
|
||||
init(params) {
|
||||
this._duration = params.duration;
|
||||
this._timeoutCallback = params.onTimeout;
|
||||
this._timers = {};
|
||||
},
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Public
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
/**
|
||||
* Register a timer with ID `timerID` to start.
|
||||
*
|
||||
* - an already registered timer with this ID is reset.
|
||||
* - (optional) can provide a list of arguments that is passed to the
|
||||
* function callback when timer times out.
|
||||
*
|
||||
* @param {Object} params
|
||||
* @param {Array} [params.timeoutCallbackArguments]
|
||||
* @param {integer} params.timerID
|
||||
*/
|
||||
registerTimer(params) {
|
||||
const timerID = params.timerID;
|
||||
if (this._timers[timerID]) {
|
||||
this._timers[timerID].clear();
|
||||
}
|
||||
const timerParams = {
|
||||
duration: this._duration,
|
||||
onTimeout: this._timeoutCallback,
|
||||
};
|
||||
if ('timeoutCallbackArguments' in params) {
|
||||
timerParams.onTimeout = this._timeoutCallback.bind.apply(
|
||||
this._timeoutCallback,
|
||||
[null, ...params.timeoutCallbackArguments]
|
||||
);
|
||||
} else {
|
||||
timerParams.onTimeout = this._timeoutCallback;
|
||||
}
|
||||
this._timers[timerID] = new Timer(timerParams);
|
||||
this._timers[timerID].start();
|
||||
},
|
||||
/**
|
||||
* Unregister a timer with ID `timerID`. The unregistered timer is aborted
|
||||
* and will not time out.
|
||||
*
|
||||
* @param {Object} params
|
||||
* @param {integer} params.timerID
|
||||
*/
|
||||
unregisterTimer(params) {
|
||||
const timerID = params.timerID;
|
||||
if (this._timers[timerID]) {
|
||||
this._timers[timerID].clear();
|
||||
delete this._timers[timerID];
|
||||
}
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
export default Timers;
|
||||
Loading…
Add table
Add a link
Reference in a new issue