Show spinner only for backup and restore operations
Other OperationLog dialogs (crontab show, remote test, retention) no longer display the spinner since they complete quickly. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -83,7 +83,7 @@ class RemotesScreen(Screen):
|
|||||||
|
|
||||||
@work
|
@work
|
||||||
async def _test_remote(self, name: str) -> None:
|
async def _test_remote(self, name: str) -> None:
|
||||||
log_screen = OperationLog(f"Testing Remote: {name}")
|
log_screen = OperationLog(f"Testing Remote: {name}", show_spinner=False)
|
||||||
self.app.push_screen(log_screen)
|
self.app.push_screen(log_screen)
|
||||||
rc, stdout, stderr = await run_cli("remotes", "test", f"--name={name}")
|
rc, stdout, stderr = await run_cli("remotes", "test", f"--name={name}")
|
||||||
if stdout:
|
if stdout:
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ class RetentionScreen(Screen):
|
|||||||
|
|
||||||
@work
|
@work
|
||||||
async def _do_cleanup(self, target: str) -> None:
|
async def _do_cleanup(self, target: str) -> None:
|
||||||
log_screen = OperationLog(f"Retention: {target}")
|
log_screen = OperationLog(f"Retention: {target}", show_spinner=False)
|
||||||
self.app.push_screen(log_screen)
|
self.app.push_screen(log_screen)
|
||||||
rc = await stream_cli(log_screen.write, "retention", f"--target={target}")
|
rc = await stream_cli(log_screen.write, "retention", f"--target={target}")
|
||||||
if rc == 0:
|
if rc == 0:
|
||||||
@@ -79,7 +79,7 @@ class RetentionScreen(Screen):
|
|||||||
|
|
||||||
@work
|
@work
|
||||||
async def _do_cleanup_all(self) -> None:
|
async def _do_cleanup_all(self) -> None:
|
||||||
log_screen = OperationLog("Retention: All Targets")
|
log_screen = OperationLog("Retention: All Targets", show_spinner=False)
|
||||||
self.app.push_screen(log_screen)
|
self.app.push_screen(log_screen)
|
||||||
rc = await stream_cli(log_screen.write, "retention", "--all")
|
rc = await stream_cli(log_screen.write, "retention", "--all")
|
||||||
if rc == 0:
|
if rc == 0:
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ class ScheduleScreen(Screen):
|
|||||||
|
|
||||||
@work
|
@work
|
||||||
async def _show_crontab(self) -> None:
|
async def _show_crontab(self) -> None:
|
||||||
log_screen = OperationLog("Current Crontab")
|
log_screen = OperationLog("Current Crontab", show_spinner=False)
|
||||||
self.app.push_screen(log_screen)
|
self.app.push_screen(log_screen)
|
||||||
rc, stdout, stderr = await run_cli("schedule", "show")
|
rc, stdout, stderr = await run_cli("schedule", "show")
|
||||||
if stdout:
|
if stdout:
|
||||||
|
|||||||
@@ -33,9 +33,10 @@ class OperationLog(ModalScreen[None]):
|
|||||||
|
|
||||||
BINDINGS = [("escape", "close", "Close")]
|
BINDINGS = [("escape", "close", "Close")]
|
||||||
|
|
||||||
def __init__(self, title: str = "Operation Output"):
|
def __init__(self, title: str = "Operation Output", show_spinner: bool = True):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self._title = title
|
self._title = title
|
||||||
|
self._show_spinner = show_spinner
|
||||||
self._mounted_event = asyncio.Event()
|
self._mounted_event = asyncio.Event()
|
||||||
self._buffer: list[str] = []
|
self._buffer: list[str] = []
|
||||||
|
|
||||||
@@ -45,6 +46,7 @@ class OperationLog(ModalScreen[None]):
|
|||||||
yield RichLog(id="ol-log", wrap=True, highlight=True, markup=True)
|
yield RichLog(id="ol-log", wrap=True, highlight=True, markup=True)
|
||||||
with Horizontal(id="ol-footer"):
|
with Horizontal(id="ol-footer"):
|
||||||
yield Button("Close", variant="primary", id="ol-close")
|
yield Button("Close", variant="primary", id="ol-close")
|
||||||
|
if self._show_spinner:
|
||||||
yield SpinnerWidget("arrow3", id="ol-spinner")
|
yield SpinnerWidget("arrow3", id="ol-spinner")
|
||||||
|
|
||||||
def on_mount(self) -> None:
|
def on_mount(self) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user