import React from 'react';
import { useTranslation } from 'next-i18next';
import PropTypes from 'prop-types';
import { useAdminSocket } from '~/stores/socket-io';
import LabeledProgressBar from '../Common/LabeledProgressBar';
class RebuildIndexControls extends React.Component {
constructor(props) {
super(props);
this.state = {
total: 0,
current: 0,
skip: 0,
};
}
componentDidMount() {
this.initWebSockets();
}
initWebSockets() {
const { socket } = this.props;
if (socket != null) {
socket.on('addPageProgress', (data) => {
this.setState({
total: data.totalCount,
current: data.count,
skip: data.skipped,
});
});
socket.on('finishAddPage', (data) => {
this.setState({
total: data.totalCount,
current: data.count,
skip: data.skipped,
});
});
}
}
renderProgressBar() {
const {
isRebuildingProcessing, isRebuildingCompleted,
} = this.props;
const {
total, current, skip,
} = this.state;
const showProgressBar = isRebuildingProcessing || isRebuildingCompleted;
if (!showProgressBar) {
return null;
}
function getCompletedLabel() {
const completedLabel = skip === 0 ? 'Completed' : `Done (${skip} skips)`;
return completedLabel;
}
function getSkipLabel() {
return `Processing.. (${skip} skips)`;
}
const header = isRebuildingCompleted ? getCompletedLabel() : getSkipLabel();
return (
{ t('full_text_search_management.rebuild_description_1') }
{ t('full_text_search_management.rebuild_description_2') }