import { __ } from '@wordpress/i18n';
const sseImport = {
complete: {
posts: 0,
media: 0,
users: 0,
comments: 0,
terms: 0,
},
updateDelta( type, delta ) {
this.complete[ type ] += delta;
const self = this;
requestAnimationFrame( function () {
self.render();
} );
},
updateProgress( type, complete, total, dispatch, percentage ) {
const text = complete + '/' + total;
if ( 'undefined' !== type && 'undefined' !== text ) {
total = parseInt( total );
if ( 0 === total || isNaN( total ) ) {
total = 1;
}
const percent = parseInt( complete ) / total;
const progressBar = percent * 100;
if ( progressBar <= 100 ) {
if ( 'function' === typeof dispatch ) {
dispatch( {
type: 'set',
importStatus: __( 'Importing Content…', 'astra-sites' ),
} );
percentage += 5;
dispatch( {
type: 'set',
importPercent: percentage,
} );
}
}
}
},
render( dispatch, percentage ) {
const types = Object.keys( this.complete );
let complete = 0;
let total = 0;
for ( let i = types.length - 1; i >= 0; i-- ) {
const type = types[ i ];
this.updateProgress(
type,
this.complete[ type ],
this.data.count[ type ],
dispatch,
percentage
);
complete += this.complete[ type ];
total += this.data.count[ type ];
}
this.updateProgress( 'total', complete, total, dispatch, percentage );
},
};
export default sseImport;