diff --git a/tagstudio/src/qt/widgets/migration_modal.py b/tagstudio/src/qt/widgets/migration_modal.py index b8b3f4a1..11acd721 100644 --- a/tagstudio/src/qt/widgets/migration_modal.py +++ b/tagstudio/src/qt/widgets/migration_modal.py @@ -367,29 +367,35 @@ class JsonMigrationModal(QObject): pb.setCancelButton(None) self.body_wrapper_01.layout().addWidget(pb) - iterator = FunctionIterator(self.migration_iterator) - iterator.value.connect( - lambda x: ( - pb.setLabelText(f"

{x}

"), - self.update_sql_value_ui(show_msg_box=False) - if x == Translations["json_migration.checking_for_parity"] - else (), - self.update_parity_ui() - if x == Translations["json_migration.checking_for_parity"] - else (), + try: + iterator = FunctionIterator(self.migration_iterator) + iterator.value.connect( + lambda x: ( + pb.setLabelText(f"

{x}

"), + self.update_sql_value_ui(show_msg_box=False) + if x == Translations["json_migration.checking_for_parity"] + else (), + self.update_parity_ui() + if x == Translations["json_migration.checking_for_parity"] + else (), + ) ) - ) - r = CustomRunnable(iterator.run) - r.done.connect( - lambda: ( - self.update_sql_value_ui(show_msg_box=not skip_ui), - pb.setMinimum(1), - pb.setValue(1), - # Enable the finish button - self.stack[1].buttons[4].setDisabled(False), # type: ignore + r = CustomRunnable(iterator.run) + r.done.connect( + lambda: ( + self.update_sql_value_ui(show_msg_box=not skip_ui), + pb.setMinimum(1), + pb.setValue(1), + # Enable the finish button + self.stack[1].buttons[4].setDisabled(False), # type: ignore + ) ) - ) - QThreadPool.globalInstance().start(r) + QThreadPool.globalInstance().start(r) + except Exception as e: + logger.error("[MigrationModal][Iterator] Error:", error=e) + pb.setLabelText(f"

{type(e).__name__}

") + pb.setMinimum(1) + pb.setValue(1) def migration_iterator(self): """Iterate over the library migration process."""