Source: sources/converters/TAbstractDataConverter.js

/**
 * @author [Ahmed DCHAR]{@link https://github.com/dragoneel}
 * @license [BSD-3-Clause]{@link https://opensource.org/licenses/BSD-3-Clause}
 *
 * @file Todo
 *
 * @example Todo
 *
 */

class TAbstractDataConverter {

    constructor () {

        this._isProcessing = false
        this._queue        = []

    }

    convert ( file, parameters, onSuccess, onProgress, onError ) {

        this._queue.push( {
            file,
            parameters,
            onSuccess,
            onProgress,
            onError
        } )

        if ( !this._isProcessing ) {
            this._processQueue()
        }

    }

    _processQueue () {

        if ( this._queue.length === 0 ) {

            this._isProcessing = false
            return

        }

        this._isProcessing = true

        const self       = this
        const dataBloc   = this._queue.shift()
        const data       = dataBloc.file
        const parameters = dataBloc.parameters
        const onSuccess  = dataBloc.onSuccess
        const onProgress = dataBloc.onProgress
        const onError    = dataBloc.onError

        self._convert(
            data,
            parameters,
            _onSaveSuccess,
            _onSaveProgress,
            _onSaveError
        )

        function _onSaveSuccess ( result ) {

            onSuccess( result )
            self._processQueue()

        }

        function _onSaveProgress ( progress ) {

            onProgress( progress )

        }

        function _onSaveError ( error ) {

            onError( error )
            self._processQueue()

        }

    }

    _convert ( /*data, parameters, onSuccess, onProgress, onError*/ ) {}

}

export { TAbstractDataConverter }