- {intl.formatMessage(messages.importWizardStepUploadBody, { br: linebreak })}
+ {
+ reimport
+ ? intl.formatMessage(messages.importWizardStepReuploadBody, { br: linebreak })
+ : intl.formatMessage(
+ messages.importWizardStepUploadBody,
+ { csvTemplateUrl, jsonTemplateUrl, br: linebreak },
+ )
+ }
+
{!file ? (
{
+ const intl = useIntl();
+
+ const handleNameChange = (e) => {
+ const updatedState = { ...taxonomyPopulateData };
+ updatedState.taxonomyName = e.target.value;
+ setTaxonomyPopulateData(updatedState);
+ };
+
+ const handleDescChange = (e) => {
+ const updatedState = { ...taxonomyPopulateData };
+ updatedState.taxonomyDesc = e.target.value;
+ setTaxonomyPopulateData(updatedState);
+ };
+
+ return (
+
+
+
+ { intl.formatMessage(messages.importWizardStepPopulateTaxonomyName) }
+
+
+
+ { intl.formatMessage(messages.importWizardStepPopulateTaxonomyDesc) }
+
+
+
+
+ );
+};
+
+PopulateStep.propTypes = {
+ taxonomyPopulateData: PropTypes.shape({
+ taxonomyName: PropTypes.string.isRequired,
+ taxonomyDesc: PropTypes.string.isRequired,
+ }).isRequired,
+ setTaxonomyPopulateData: PropTypes.func.isRequired,
};
const PlanStep = ({ importPlan }) => {
@@ -216,18 +283,56 @@ const ImportTagsWizard = ({
taxonomy,
isOpen,
onClose,
+ reimport,
}) => {
const intl = useIntl();
const { setToastMessage, setAlertProps } = useContext(TaxonomyContext);
- const steps = ['export', 'upload', 'plan', 'confirm'];
- const [currentStep, setCurrentStep] = useState(steps[0]);
+ const [currentStep, setCurrentStep] = useState(reimport ? 'export' : 'upload');
const [file, setFile] = useState(/** @type {null|File} */ (null));
const [isDialogDisabled, disableDialog, enableDialog] = useToggle(false);
- const importPlanResult = useImportPlan(taxonomy.id, file);
+ const [taxonomyPopulateData, setTaxonomyPopulateData] = useState({
+ taxonomyName: '',
+ taxonomyDesc: '',
+ });
+
+ const importNewTaxonomyMutation = useImportNewTaxonomy();
+
+ const importNewTaxonomy = async () => {
+ disableDialog();
+ try {
+ const { taxonomyName, taxonomyDesc } = taxonomyPopulateData;
+ if (file) {
+ await importNewTaxonomyMutation.mutateAsync({
+ name: taxonomyName,
+ description: taxonomyDesc,
+ file,
+ });
+ }
+ if (setToastMessage) {
+ setToastMessage(intl.formatMessage(messages.importNewTaxonomyToast, { name: taxonomyName }));
+ }
+ } catch (/** @type {any} */ error) {
+ const alertProps = {
+ variant: 'danger',
+ icon: ErrorIcon,
+ title: intl.formatMessage(messages.importTaxonomyErrorAlert),
+ description: error.message,
+ };
+
+ if (setAlertProps) {
+ setAlertProps(alertProps);
+ }
+ } finally {
+ enableDialog();
+ onClose();
+ }
+ };
+
+ const importPlanResult = useImportPlan(taxonomy?.id, file);
const importPlan = useMemo(() => {
if (!importPlanResult.data) {
@@ -248,6 +353,10 @@ const ImportTagsWizard = ({
setCurrentStep('plan');
}, []);
+ const populateData = React.useCallback(() => {
+ setCurrentStep('populate');
+ }, []);
+
const confirmImportTags = async () => {
disableDialog();
try {
@@ -258,7 +367,7 @@ const ImportTagsWizard = ({
});
}
if (setToastMessage) {
- setToastMessage(intl.formatMessage(messages.importTaxonomyToast, { name: taxonomy.name }));
+ setToastMessage(intl.formatMessage(messages.importTaxonomyToast, { name: taxonomy?.name }));
}
} catch (/** @type {any} */ error) {
const alertProps = {
@@ -280,7 +389,7 @@ const ImportTagsWizard = ({
const stepHeaders = {
export: (
- {intl.formatMessage(messages.importWizardStepExportTitle, { name: taxonomy.name })}
+ {intl.formatMessage(messages.importWizardStepExportTitle, { name: taxonomy?.name })}
),
upload: (
@@ -288,6 +397,11 @@ const ImportTagsWizard = ({
{intl.formatMessage(messages.importWizardStepUploadTitle)}
),
+ populate: (
+
+ {intl.formatMessage(messages.importWizardStepPopulateTitle)}
+
+ ),
plan: (
{intl.formatMessage(messages.importWizardStepPlanTitle)}
@@ -327,11 +441,16 @@ const ImportTagsWizard = ({
-
+ {reimport && }
+
@@ -351,9 +470,14 @@ const ImportTagsWizard = ({
-
+ {
+ reimport
+ && (
+
+ )
+ }
+
+
+
+
+
+
+
+
-
+ {
+ reimport
+ && (
+
+ )
+ }