remove redundant back button

This commit is contained in:
rambros 2026-03-08 03:42:39 +05:30
parent b4b64dffce
commit 542411cc0b
3 changed files with 19 additions and 18 deletions

View file

@ -201,7 +201,7 @@ class BackupPane(Container):
modal.write(f"[bold green]Server Profile backed up to: {self.exporter.export_path}[/bold green]") modal.write(f"[bold green]Server Profile backed up to: {self.exporter.export_path}[/bold green]")
modal.write(f"- {len(roles)} roles, {e_count} emojis, {s_count} stickers.") modal.write(f"- {len(roles)} roles, {e_count} emojis, {s_count} stickers.")
modal.phase_report("Profile Backup") modal.phase_report("Profile Backup", show_back=False)
except self.engine.discord_reader.Forbidden as e: except self.engine.discord_reader.Forbidden as e:
modal.write(f"[bold red]Backup failed: {e}[/bold red]") modal.write(f"[bold red]Backup failed: {e}[/bold red]")
@ -378,7 +378,7 @@ class BackupPane(Container):
if not self.exporter.is_running: if not self.exporter.is_running:
modal_prog.set_item_status("[bold red]Backup Cancelled.[/bold red]") modal_prog.set_item_status("[bold red]Backup Cancelled.[/bold red]")
modal_prog.phase_report("Message Backup", "stopped") modal_prog.phase_report("Message Backup", "stopped", show_back=False)
return return
modal_prog.set_progress(total_chans, total_chans) modal_prog.set_progress(total_chans, total_chans)
@ -387,12 +387,12 @@ class BackupPane(Container):
await self.exporter.export_metadata() await self.exporter.export_metadata()
modal_prog.write("[bold green]Message backup complete![/bold green]") modal_prog.write("[bold green]Message backup complete![/bold green]")
logger.info("Message backup operation completed successfully.") logger.info("Message backup operation completed successfully.")
modal_prog.phase_report("Message Backup") modal_prog.phase_report("Message Backup", show_back=False)
except Exception as e: except Exception as e:
logger.error(f"Message backup failed: {e}\n{traceback.format_exc()}") logger.error(f"Message backup failed: {e}\n{traceback.format_exc()}")
modal_prog.write(f"[bold red]Message backup failed: {e}[/bold red]") modal_prog.write(f"[bold red]Message backup failed: {e}[/bold red]")
modal_prog.phase_report("Message Backup", "error") modal_prog.phase_report("Message Backup", "error", show_back=False)
finally: finally:
await self.engine.close_connections() await self.engine.close_connections()
@ -501,7 +501,7 @@ class BackupPane(Container):
if not self.exporter.is_running: if not self.exporter.is_running:
modal_prog.set_item_status("[bold red]Sync Cancelled.[/bold red]") modal_prog.set_item_status("[bold red]Sync Cancelled.[/bold red]")
modal_prog.phase_report("Backup Sync", "stopped") modal_prog.phase_report("Backup Sync", "stopped", show_back=False)
return return
modal_prog.set_progress(total_chans, total_chans) modal_prog.set_progress(total_chans, total_chans)
@ -510,11 +510,11 @@ class BackupPane(Container):
await self.exporter.export_metadata() await self.exporter.export_metadata()
modal_prog.write("[bold green]Sync operation complete![/bold green]") modal_prog.write("[bold green]Sync operation complete![/bold green]")
logger.info("Sync operation completed successfully.") logger.info("Sync operation completed successfully.")
modal_prog.phase_report("Backup Sync") modal_prog.phase_report("Backup Sync", show_back=False)
except Exception as e: except Exception as e:
logger.error(f"Sync failed: {e}\n{traceback.format_exc()}") logger.error(f"Sync failed: {e}\n{traceback.format_exc()}")
modal_prog.write(f"[bold red]Sync failed: {e}[/bold red]") modal_prog.write(f"[bold red]Sync failed: {e}[/bold red]")
modal_prog.phase_report("Backup Sync", "error") modal_prog.phase_report("Backup Sync", "error", show_back=False)
finally: finally:
await self.engine.close_connections() await self.engine.close_connections()

View file

@ -329,7 +329,7 @@ class ProgressScreen(Screen[None]):
try: self.query_one("#info_new_items", Label).display = False try: self.query_one("#info_new_items", Label).display = False
except Exception: pass except Exception: pass
def phase_report(self, operation_name: str, status: str = "complete"): def phase_report(self, operation_name: str, status: str = "complete", show_back: bool = True):
"""Phase 4: Operation is done. Show Back + Main Menu. """Phase 4: Operation is done. Show Back + Main Menu.
status can be: 'complete', 'stopped', 'error' status can be: 'complete', 'stopped', 'error'
@ -365,7 +365,8 @@ class ProgressScreen(Screen[None]):
try: try:
back_btn = self.query_one("#btn_back", Button) back_btn = self.query_one("#btn_back", Button)
back_btn.disabled = False back_btn.disabled = not show_back
back_btn.display = show_back
except Exception: except Exception:
pass pass

View file

@ -494,13 +494,13 @@ class ShuttlePane(Container):
elif sel == "sub_sync_perms": elif sel == "sub_sync_perms":
results["perms"] = await self._logic_sync_permissions(modal) results["perms"] = await self._logic_sync_permissions(modal)
modal.phase_report("Clone Template Complete") modal.phase_report("Clone Template Complete", show_back=False)
report = self._format_clone_report(results) report = self._format_clone_report(results)
modal.write(report) modal.write(report)
except Exception as e: except Exception as e:
logger.error(f"Batch Cloning Error: {e}\n{traceback.format_exc()}") logger.error(f"Batch Cloning Error: {e}\n{traceback.format_exc()}")
modal.write(f"[bold red]Error: {e}[/bold red]") modal.write(f"[bold red]Error: {e}[/bold red]")
modal.phase_report("Batch Operation", "error") modal.phase_report("Batch Operation", "error", show_back=False)
finally: finally:
self.engine.is_running = False self.engine.is_running = False
await self.engine.close_connections() await self.engine.close_connections()
@ -578,13 +578,13 @@ class ShuttlePane(Container):
if meta_comps: if meta_comps:
results["metadata"] = await self._logic_sync_metadata(modal, meta_comps) results["metadata"] = await self._logic_sync_metadata(modal, meta_comps)
modal.phase_report("Sync Settings Complete") modal.phase_report("Sync Settings Complete", show_back=False)
report = self._format_sync_report(results) report = self._format_sync_report(results)
modal.write(report) modal.write(report)
except Exception as e: except Exception as e:
logger.error(f"Batch Sync Error: {e}\n{traceback.format_exc()}") logger.error(f"Batch Sync Error: {e}\n{traceback.format_exc()}")
modal.write(f"[bold red]Error: {e}[/bold red]") modal.write(f"[bold red]Error: {e}[/bold red]")
modal.phase_report("Batch Operation", "error") modal.phase_report("Batch Operation", "error", show_back=False)
finally: finally:
self.engine.is_running = False self.engine.is_running = False
await self.engine.close_connections() await self.engine.close_connections()
@ -1005,11 +1005,11 @@ class ShuttlePane(Container):
if self.engine.is_running: if self.engine.is_running:
modal.write(f"[bold green]Success! {result['messages']} messages migrated.[/bold green]") modal.write(f"[bold green]Success! {result['messages']} messages migrated.[/bold green]")
event_title = "Message Migration" event_title = "Message Migration"
modal.phase_report(event_title) modal.phase_report(event_title, show_back=False)
else: else:
modal.write(f"[bold yellow]Interrupted! {result['messages']} messages migrated.[/bold yellow]") modal.write(f"[bold yellow]Interrupted! {result['messages']} messages migrated.[/bold yellow]")
event_title = "Message Migration" event_title = "Message Migration"
modal.phase_report(event_title, "stopped") modal.phase_report(event_title, "stopped", show_back=False)
lines = [f"Migrated Discord #{source_channel.name}{platform_name} #{target_channel.get('name')}:"] lines = [f"Migrated Discord #{source_channel.name}{platform_name} #{target_channel.get('name')}:"]
lines.append(f"{result['messages']} messages, {result['attachments']} attachments, {result['threads']} threads") lines.append(f"{result['messages']} messages, {result['attachments']} attachments, {result['threads']} threads")
@ -1021,7 +1021,7 @@ class ShuttlePane(Container):
modal.write("[bold red]Bot is missing the 'Masquerade' permission.[/bold red]") modal.write("[bold red]Bot is missing the 'Masquerade' permission.[/bold red]")
else: else:
modal.write(f"[bold red]Error: {err}[/bold red]") modal.write(f"[bold red]Error: {err}[/bold red]")
modal.phase_report("Message Migration", "error") modal.phase_report("Message Migration", "error", show_back=False)
finally: finally:
self.engine.is_running = False self.engine.is_running = False
await self.engine.close_connections() await self.engine.close_connections()
@ -1126,11 +1126,11 @@ class ShuttlePane(Container):
elif sel == "dz_del_assets": elif sel == "dz_del_assets":
await self._logic_dz_delete_assets(modal) await self._logic_dz_delete_assets(modal)
modal.phase_report("Danger Zone Operations Complete") modal.phase_report("Danger Zone Operations Complete", show_back=False)
modal.write("[bold green]All selected destructive operations finished.[/bold green]") modal.write("[bold green]All selected destructive operations finished.[/bold green]")
except Exception as e: except Exception as e:
modal.write(f"[bold red]Error: {e}[/bold red]") modal.write(f"[bold red]Error: {e}[/bold red]")
modal.phase_report("Danger Zone Batch", "error") modal.phase_report("Danger Zone Batch", "error", show_back=False)
finally: finally:
self.engine.is_running = False self.engine.is_running = False
await self.engine.close_target_only() await self.engine.close_target_only()